create new submission alias

This commit is contained in:
Tina_Azure
2023-08-16 15:45:45 +02:00
parent 4937f99b28
commit d10d143197
6 changed files with 151 additions and 6 deletions

View File

@@ -490,7 +490,7 @@ namespace Database {
return 0;
}
/* //todo:implement
/*
* Executes the prepared statement INSERT_FREELANCER_FILE_SUBMISSION_ALIAS
* Takes an open pqxx::connection and aliasname as {ID}/{Alias}, freelancerid, filename
* returns errorLevel
@@ -498,10 +498,10 @@ namespace Database {
* 1 = query error
* 2 = critical error
*/
int executePreparedStatement_INSERT_FREELANCER_FILE_SUBMISSION_ALIAS(pqxx::connection &connection, const int freelancerID, const std::string& fileName, const std::string& aliasname) {
int executePreparedStatement_INSERT_FREELANCER_FILE_SUBMISSION_ALIAS(pqxx::connection &connection, const int freelancerID, const std::string& fileName, const std::string& aliasName) {
try {
pqxx::work work(connection);
work.exec_prepared(PREPARED_STATEMENT_INSERT_FREELANCER_FILE_SUBMISSION_ALIAS, freelancerID, fileName, aliasname);
work.exec_prepared(PREPARED_STATEMENT_INSERT_FREELANCER_FILE_SUBMISSION_ALIAS, freelancerID, fileName, aliasName);
work.commit();
}
catch (pqxx::sql_error const &e) {

View File

@@ -1212,19 +1212,90 @@ int main(int argc, char *argv[]) {
/*
* Page for freelancer to generate link to a particular submission
*/
CROW_ROUTE(app, "/freelancer/submissionManagement/view/generateLink")
([&, configuration](const crow::request& getRequest) {
auto& cookieCtx = app.get_context<crow::CookieParser>(getRequest);
CROW_ROUTE(app, "/freelancer/submissionManagement/view/generateLink").methods(crow::HTTPMethod::POST)
([&, configuration](const crow::request& postRequest) {
auto& cookieCtx = app.get_context<crow::CookieParser>(postRequest);
crow::mustache::context ctx;
if (Utilities::checkCookieLoginState(configuration, cookieCtx)) {
string postRequestBody = postRequest.body;
Utilities::decodeString(postRequestBody);
vector<string> splitPostRequestBody = Utilities::splitStringIntoVector(postRequestBody, '&');
string fileName;
for (const string& item : splitPostRequestBody) {
vector<string> splitItem = Utilities::splitStringIntoVector(item, '=');
if (splitItem.at(0) == "filename")
fileName = splitItem.at(1);
}
if (!fileName.empty()) {
pqxx::connection databaseConnection(configuration.databaseConnectionString);
Database::prepareStatements(databaseConnection, {
ID_SELECT_FREELANCER_ID
});
string freelancerID;
pqxx::result freelancerIDResult = Database::executePreparedStatement_SELECT_FREELANCER_ID(databaseConnection, cookieCtx.get_cookie(COOKIE_FREELANCER_EMAIL));
freelancerID = freelancerIDResult.at(0).at(0).c_str();
ctx["filename"] = fileName;
ctx["domain"] = configuration.domain + "/commissionSubmission";
ctx["freelancerid"] = freelancerID;
}
else {
ctx[MUSTACHE_POST_ERROR] = true;
ctx[MUSTACHE_REQUEST_NOT_FILLED] = true;
}
ctx[MUSTACHE_COOKIE_LOGGED_IN] = true;
}
auto page = crow::mustache::load(TEMPLATE_FREELANCER_SUBMISSION_MANAGEMENT_VIEW_GENERATE_LINK);
return page.render(ctx);
});
/*
* Page for freelancer to generate link to a particular submission todo:look into inability to display " " and link to "#"
*/
CROW_ROUTE(app, "/freelancer/submissionManagement/view/generateLink/fulfilment/<string>").methods(crow::HTTPMethod::POST)
([&, configuration](const crow::request& postRequest, const string& fileName) {
auto& cookieCtx = app.get_context<crow::CookieParser>(postRequest);
crow::mustache::context ctx;
if (Utilities::checkCookieLoginState(configuration, cookieCtx)) {
string postRequestBody = postRequest.body;
Utilities::decodeString(postRequestBody);
vector<string> splitPostRequestBody = Utilities::splitStringIntoVector(postRequestBody, '&');
string alias;
for (const string& item : splitPostRequestBody) {
vector<string> splitItem = Utilities::splitStringIntoVector(item, '=');
if (splitItem.at(0) == "alias")
alias = splitItem.at(1);
}
if (!alias.empty() && !fileName.empty()) {
cout << "filename: " << fileName << endl;
cout << "alias: " << alias << endl;
pqxx::connection databaseConnection(configuration.databaseConnectionString);
Database::prepareStatements(databaseConnection, {
ID_SELECT_FREELANCER_ID,
ID_INSERT_FREELANCER_FILE_SUBMISSION_ALIAS
});
pqxx::result freelancerIDResult = Database::executePreparedStatement_SELECT_FREELANCER_ID(databaseConnection, cookieCtx.get_cookie(COOKIE_FREELANCER_EMAIL));
string freelancerID = freelancerIDResult.at(0).at(0).c_str();
string aliasName = freelancerID;
aliasName.append("/");
aliasName.append(alias);
ctx["submissionLink"] = configuration.domain + "/commissionSubmission/" + aliasName;
if(Database::executePreparedStatement_INSERT_FREELANCER_FILE_SUBMISSION_ALIAS(databaseConnection, stoi(freelancerID), fileName, aliasName) > 0)
ctx[MUSTACHE_FREELANCER_SUBMISSION_ALIAS_ERROR_INVALID] = true;
}
else {
ctx[MUSTACHE_FREELANCER_SUBMISSION_ALIAS_ERROR] = true;
ctx[MUSTACHE_REQUEST_NOT_FILLED] = true;
}
ctx[MUSTACHE_COOKIE_LOGGED_IN] = true;
}
auto page = crow::mustache::load(TEMPLATE_FREELANCER_SUBMISSION_MANAGEMENT_VIEW_GENERATE_LINK_FULFILMENT);
return page.render(ctx);
});

View File

@@ -37,6 +37,7 @@ namespace TemplateConstCollection {
const static std::string TEMPLATE_FREELANCER_SUBMISSION_MANAGEMENT_ADD = "freelancer_Submission_Management_Add.html";
const static std::string TEMPLATE_FREELANCER_SUBMISSION_MANAGEMENT_VIEW = "freelancer_Submission_Management_View.html";
const static std::string TEMPLATE_FREELANCER_SUBMISSION_MANAGEMENT_VIEW_GENERATE_LINK = "freelancer_Submission_Management_View_Generate_link.html";
const static std::string TEMPLATE_FREELANCER_SUBMISSION_MANAGEMENT_VIEW_GENERATE_LINK_FULFILMENT = "freelancer_Submission_Management_View_Generate_link_fulfilment.html";
//Mustache Error/Success variable names
const static std::string MUSTACHE_ERROR_COMMISSIONS_CLOSED = "ERROR_COMMISSIONS_CLOSED";
@@ -71,6 +72,9 @@ namespace TemplateConstCollection {
const static std::string MUSTACHE_FREELANCER_ALIAS_CREATION_ERROR = "ALIAS_CREATION_ERROR";
const static std::string MUSTACHE_FREELANCER_ALIAS_CREATION_ERROR_DUPLICATE = "ALIAS_CREATION_ERROR_DUPLICATE";
const static std::string MUSTACHE_FREELANCER_ALIAS_CREATION_ERROR_UNNAMED = "ALIAS_CREATION_ERROR_UNNAMED";
const static std::string MUSTACHE_FREELANCER_SUBMISSION_ALIAS_ERROR = "SUBMISSION_ALIAS_ERROR";
const static std::string MUSTACHE_FREELANCER_SUBMISSION_ALIAS_ERROR_INVALID = "SUBMISSION_ALIAS_ERROR_INVALID";
const static std::string MUSTACHE_POST_ERROR = "POST_ERROR";
//Mustache Cookie variable names
const static std::string MUSTACHE_COOKIE_LOGGED_IN = "COOKIE_LOGGED_IN";