implementation of the edit function for the template managment
+minor typo fixes
This commit is contained in:
@ -308,7 +308,7 @@ namespace Database {
|
|||||||
/*
|
/*
|
||||||
* Executes the prepared statement SELECT_CHECK_EMAIL_EXISTS
|
* Executes the prepared statement SELECT_CHECK_EMAIL_EXISTS
|
||||||
* Takes an open pqxx::connection and the emailAddress to check
|
* Takes an open pqxx::connection and the emailAddress to check
|
||||||
* Delivers count of emailaddress occurence 0 for none 1+ for more
|
* Delivers count of emailaddress occurrence 0 for none 1+ for more
|
||||||
*/
|
*/
|
||||||
pqxx::result executePreparedStatement_SELECT_CHECK_EMAIL_EXISTS(pqxx::connection &connection, const std::string& freelancerEmail) {
|
pqxx::result executePreparedStatement_SELECT_CHECK_EMAIL_EXISTS(pqxx::connection &connection, const std::string& freelancerEmail) {
|
||||||
pqxx::work work(connection);
|
pqxx::work work(connection);
|
||||||
@ -320,7 +320,7 @@ namespace Database {
|
|||||||
/*
|
/*
|
||||||
* Executes the prepared statement SELECT_CHECK_FREELANCER_LOGIN_STATE
|
* Executes the prepared statement SELECT_CHECK_FREELANCER_LOGIN_STATE
|
||||||
* Takes an open pqxx::connection the loginKey and the id to check
|
* Takes an open pqxx::connection the loginKey and the id to check
|
||||||
* Delivers count of loginValidationKey occurence 0 for none 1+ for more
|
* Delivers count of loginValidationKey occurrence 0 for none 1+ for more
|
||||||
*/
|
*/
|
||||||
pqxx::result executePreparedStatement_SELECT_CHECK_FREELANCER_LOGIN_STATE(pqxx::connection &connection, const std::string& freelancerEmail, const std::string& loginKey) {
|
pqxx::result executePreparedStatement_SELECT_CHECK_FREELANCER_LOGIN_STATE(pqxx::connection &connection, const std::string& freelancerEmail, const std::string& loginKey) {
|
||||||
pqxx::work work(connection);
|
pqxx::work work(connection);
|
||||||
@ -575,6 +575,18 @@ namespace Database {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Executes the prepared statement UPDATE_EDIT_FREELANCER_TEMPLATE
|
||||||
|
* Takes an open pqxx::connection name, content, contactdata, contactinformation, currencypreference, priceupfront, priceondeliver, templateid and the freelancers email
|
||||||
|
* returns true if update occured
|
||||||
|
*/
|
||||||
|
bool executePreparedStatement_UPDATE_EDIT_FREELANCER_TEMPLATE(pqxx::connection &connection, const std::string& name, const std::string& content, const std::string& contactdata, const std::string& contactinformation, const std::string& currencypreference, const std::string& priceupfront, const std::string& priceondeliver, int templateid, const std::string& emailAddress) {
|
||||||
|
pqxx::work work(connection);
|
||||||
|
pqxx::result result = work.exec_prepared(PREPARED_STATEMENT_UPDATE_EDIT_FREELANCER_TEMPLATE, name, content, contactdata, contactinformation, currencypreference, priceupfront, priceondeliver, templateid, emailAddress);
|
||||||
|
work.commit();
|
||||||
|
return result.affected_rows() != 0;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Executes the prepared statement DELETE_FREELANCER_TEMPLATE
|
* Executes the prepared statement DELETE_FREELANCER_TEMPLATE
|
||||||
* Deletes a templated based on the id and validated with the freelancer email
|
* Deletes a templated based on the id and validated with the freelancer email
|
||||||
|
@ -193,6 +193,12 @@ namespace DatabaseStatementConstCollection {
|
|||||||
const static std::string PREPARED_STATEMENT_INSERT_FREELANCER_TEMPLATE = "insertFreelancerTemplate";
|
const static std::string PREPARED_STATEMENT_INSERT_FREELANCER_TEMPLATE = "insertFreelancerTemplate";
|
||||||
const static std::string SQL_STATEMENT_INSERT_FREELANCER_TEMPLATE = "INSERT INTO templates(freelancerid, name, content, contactdata, contactinformation, currencypreference, priceupfront, priceondeliver) VALUES((select freelancers.id from freelancers where emailaddress = $8), $1, $2, $3, $4, $5, $6, $7);";
|
const static std::string SQL_STATEMENT_INSERT_FREELANCER_TEMPLATE = "INSERT INTO templates(freelancerid, name, content, contactdata, contactinformation, currencypreference, priceupfront, priceondeliver) VALUES((select freelancers.id from freelancers where emailaddress = $8), $1, $2, $3, $4, $5, $6, $7);";
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Name and Statement for prepared statement to update the template of a freelancer
|
||||||
|
*/
|
||||||
|
const static std::string PREPARED_STATEMENT_UPDATE_EDIT_FREELANCER_TEMPLATE = "updateEeditFreelancerTemplate";
|
||||||
|
const static std::string SQL_STATEMENT_UPDATE_EDIT_FREELANCER_TEMPLATE = "UPDATE templates SET (name, content, contactdata, contactinformation, currencypreference, priceupfront, priceondeliver) = ($1, $2, $3, $4, $5, $6, $7) WHERE id = $8 and freelancerid = (select freelancers.id from freelancers where emailaddress = $9);";
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Name and Statement for prepared statement to delete a template with ownership validation
|
* Name and Statement for prepared statement to delete a template with ownership validation
|
||||||
*/
|
*/
|
||||||
@ -233,7 +239,7 @@ namespace DatabaseStatementConstCollection {
|
|||||||
const static int ID_UPDATE_EXPIRATION_LOGIN_LOCK_OUT = 28;
|
const static int ID_UPDATE_EXPIRATION_LOGIN_LOCK_OUT = 28;
|
||||||
const static int ID_INSERT_FREELANCER_TEMPLATE = 29;
|
const static int ID_INSERT_FREELANCER_TEMPLATE = 29;
|
||||||
const static int ID_DELETE_FREELANCER_TEMPLATE = 30;
|
const static int ID_DELETE_FREELANCER_TEMPLATE = 30;
|
||||||
const static int ID_EDIT_FREELANCER_TEMPLATE = 31;
|
const static int ID_UPDATE_EDIT_FREELANCER_TEMPLATE = 31;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Easy access to prepared statements via prepared statement name
|
* Easy access to prepared statements via prepared statement name
|
||||||
@ -269,7 +275,8 @@ namespace DatabaseStatementConstCollection {
|
|||||||
{PREPARED_STATEMENT_SELECT_CHECK_LOGIN_LOCK_OUT_ATTEMPTS, SQL_STATEMENT_SELECT_CHECK_LOGIN_LOCK_OUT_ATTEMPTS},
|
{PREPARED_STATEMENT_SELECT_CHECK_LOGIN_LOCK_OUT_ATTEMPTS, SQL_STATEMENT_SELECT_CHECK_LOGIN_LOCK_OUT_ATTEMPTS},
|
||||||
{PREPARED_STATEMENT_UPDATE_EXPIRATION_LOGIN_LOCK_OUT, SQL_STATEMENT_UPDATE_EXPIRATION_LOGIN_LOCK_OUT},
|
{PREPARED_STATEMENT_UPDATE_EXPIRATION_LOGIN_LOCK_OUT, SQL_STATEMENT_UPDATE_EXPIRATION_LOGIN_LOCK_OUT},
|
||||||
{PREPARED_STATEMENT_INSERT_FREELANCER_TEMPLATE, SQL_STATEMENT_INSERT_FREELANCER_TEMPLATE},
|
{PREPARED_STATEMENT_INSERT_FREELANCER_TEMPLATE, SQL_STATEMENT_INSERT_FREELANCER_TEMPLATE},
|
||||||
{PREPARED_STATEMENT_DELETE_FREELANCER_TEMPLATE, SQL_STATEMENT_DELETE_FREELANCER_TEMPLATE}
|
{PREPARED_STATEMENT_DELETE_FREELANCER_TEMPLATE, SQL_STATEMENT_DELETE_FREELANCER_TEMPLATE},
|
||||||
|
{PREPARED_STATEMENT_UPDATE_EDIT_FREELANCER_TEMPLATE, SQL_STATEMENT_UPDATE_EDIT_FREELANCER_TEMPLATE}
|
||||||
};
|
};
|
||||||
/*
|
/*
|
||||||
* Easy access to prepared statement name via int
|
* Easy access to prepared statement name via int
|
||||||
@ -305,7 +312,8 @@ namespace DatabaseStatementConstCollection {
|
|||||||
{ID_SELECT_CHECK_LOGIN_LOCK_OUT_ATTEMPTS, PREPARED_STATEMENT_SELECT_CHECK_LOGIN_LOCK_OUT_ATTEMPTS},
|
{ID_SELECT_CHECK_LOGIN_LOCK_OUT_ATTEMPTS, PREPARED_STATEMENT_SELECT_CHECK_LOGIN_LOCK_OUT_ATTEMPTS},
|
||||||
{ID_UPDATE_EXPIRATION_LOGIN_LOCK_OUT, PREPARED_STATEMENT_UPDATE_EXPIRATION_LOGIN_LOCK_OUT},
|
{ID_UPDATE_EXPIRATION_LOGIN_LOCK_OUT, PREPARED_STATEMENT_UPDATE_EXPIRATION_LOGIN_LOCK_OUT},
|
||||||
{ID_INSERT_FREELANCER_TEMPLATE, PREPARED_STATEMENT_INSERT_FREELANCER_TEMPLATE},
|
{ID_INSERT_FREELANCER_TEMPLATE, PREPARED_STATEMENT_INSERT_FREELANCER_TEMPLATE},
|
||||||
{ID_DELETE_FREELANCER_TEMPLATE, PREPARED_STATEMENT_DELETE_FREELANCER_TEMPLATE}
|
{ID_DELETE_FREELANCER_TEMPLATE, PREPARED_STATEMENT_DELETE_FREELANCER_TEMPLATE},
|
||||||
|
{ID_UPDATE_EDIT_FREELANCER_TEMPLATE, PREPARED_STATEMENT_UPDATE_EDIT_FREELANCER_TEMPLATE}
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
16
src/main.cpp
16
src/main.cpp
@ -808,9 +808,8 @@ int main(int argc, char *argv[]) {
|
|||||||
}
|
}
|
||||||
pqxx::connection databaseConnection(configuration.databaseConnectionString);
|
pqxx::connection databaseConnection(configuration.databaseConnectionString);
|
||||||
if (operationEdit) {
|
if (operationEdit) {
|
||||||
//todo:implement Edit
|
|
||||||
string name, content, contactdata, contactinformation, currencypreference, priceupfront, priceondeliver;
|
string name, content, contactdata, contactinformation, currencypreference, priceupfront, priceondeliver;
|
||||||
Database::prepareStatement(databaseConnection, ID_EDIT_FREELANCER_TEMPLATE);
|
Database::prepareStatement(databaseConnection, ID_UPDATE_EDIT_FREELANCER_TEMPLATE);
|
||||||
for (const string& item : splitPostRequestBody) {
|
for (const string& item : splitPostRequestBody) {
|
||||||
vector<string> splitItem = Utilities::splitStringIntoVector(item, '=');
|
vector<string> splitItem = Utilities::splitStringIntoVector(item, '=');
|
||||||
if (splitItem.at(0) == "templatename")
|
if (splitItem.at(0) == "templatename")
|
||||||
@ -828,13 +827,22 @@ int main(int argc, char *argv[]) {
|
|||||||
if (splitItem.at(0) == "templatepriceondeliver")
|
if (splitItem.at(0) == "templatepriceondeliver")
|
||||||
priceondeliver = splitItem.at(1);
|
priceondeliver = splitItem.at(1);
|
||||||
}
|
}
|
||||||
|
if (name.empty())
|
||||||
|
name = "unnamed";
|
||||||
if (!Utilities::checkIfStrIsNumber(priceupfront))
|
if (!Utilities::checkIfStrIsNumber(priceupfront))
|
||||||
priceupfront = "0";
|
priceupfront = "0";
|
||||||
if (!Utilities::checkIfStrIsNumber(priceondeliver))
|
if (!Utilities::checkIfStrIsNumber(priceondeliver))
|
||||||
priceondeliver = "0";
|
priceondeliver = "0";
|
||||||
|
|
||||||
ctx[MUSTACHE_FREELANCER_TEMPLATE_OPERATION_COMPLETE] = true;
|
bool updateSuccess = Database::executePreparedStatement_UPDATE_EDIT_FREELANCER_TEMPLATE(databaseConnection, name, content, contactdata, contactinformation, currencypreference, priceupfront, priceondeliver, templateid, freelancerEmail);
|
||||||
ctx[MUSTACHE_FREELANCER_TEMPLATE_OPERATION_FULFILMENT_EDIT] = true;
|
|
||||||
|
if (updateSuccess) {
|
||||||
|
ctx[MUSTACHE_FREELANCER_TEMPLATE_OPERATION_COMPLETE] = true;
|
||||||
|
ctx[MUSTACHE_FREELANCER_TEMPLATE_OPERATION_FULFILMENT_EDIT] = true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
ctx[MUSTACHE_FREELANCER_TEMPLATE_OPERATION_FULFILMENT_ERROR] = true;
|
||||||
|
}
|
||||||
} else if (operationDelete) {
|
} else if (operationDelete) {
|
||||||
Database::prepareStatement(databaseConnection, ID_DELETE_FREELANCER_TEMPLATE);
|
Database::prepareStatement(databaseConnection, ID_DELETE_FREELANCER_TEMPLATE);
|
||||||
Database::executePreparedStatement_DELETE_FREELANCER_TEMPLATE(databaseConnection, templateid, freelancerEmail);
|
Database::executePreparedStatement_DELETE_FREELANCER_TEMPLATE(databaseConnection, templateid, freelancerEmail);
|
||||||
|
Reference in New Issue
Block a user