From 356d379ebf676df4248f21d603469d6cc8c68bbe Mon Sep 17 00:00:00 2001 From: Tina_Azure <-> Date: Mon, 28 Aug 2023 12:31:30 +0200 Subject: [PATCH] View Submission Alias --- src/database.cpp | 12 +++++++++ src/databaseStatementConstCollection.cpp | 21 ++++++++++++++-- src/main.cpp | 25 ++++++++++++++++--- src/templateConstCollection.cpp | 1 + ...freelancer_Submission_Management_View.html | 4 +-- ...ancer_Submission_Management_View_Link.html | 11 +++++--- 6 files changed, 63 insertions(+), 11 deletions(-) diff --git a/src/database.cpp b/src/database.cpp index 5ea2f1c..ae20d87 100644 --- a/src/database.cpp +++ b/src/database.cpp @@ -746,6 +746,18 @@ namespace Database { return result; } + /* + * Executes the prepared statement SELECT_FREELANCER_FILE_SUBMISSION_ALIAS + * Takes an open pqxx::connection the file name and the freelancer Email + * returns the alias of the file + */ + pqxx::result executePreparedStatement_SELECT_FREELANCER_FILE_SUBMISSION_ALIAS(pqxx::connection &connection, const std::string& freelancerEmail, const std::string& fileName) { + pqxx::work work(connection); + pqxx::result result = work.exec_prepared(PREPARED_STATEMENT_SELECT_FREELANCER_FILE_SUBMISSION_ALIAS, freelancerEmail, fileName); + work.commit(); + return result; + } + /* * Executes the prepared statement INSERT_FREELANCER_FILE_SUBMISSION diff --git a/src/databaseStatementConstCollection.cpp b/src/databaseStatementConstCollection.cpp index 4971518..6e919dd 100644 --- a/src/databaseStatementConstCollection.cpp +++ b/src/databaseStatementConstCollection.cpp @@ -268,6 +268,20 @@ namespace DatabaseStatementConstCollection { const static std::string PREPARED_STATEMENT_INSERT_FREELANCER_FILE_SUBMISSION_ALIAS = "insertFreelancerFileSubmissionAlias"; const static std::string SQL_STATEMENT_INSERT_FREELANCER_FILE_SUBMISSION_ALIAS = "insert into aliasroutes (aliasname, freelancerid, route, routeparameter) values($3, $1, $2, 'FILESUBMISSION');"; + /* + * Name and Statement for prepared statement to delete alias of a file submission + * 1=freelancer email, 2=filename, 3=aliasname as {ID}/{Alias} + */ + const static std::string PREPARED_STATEMENT_DELETE_FREELANCER_FILE_SUBMISSION_ALIAS = "deleteFreelancerFileSubmissionAlias"; + const static std::string SQL_STATEMENT_DELETE_FREELANCER_FILE_SUBMISSION_ALIAS = "delete from aliasroutes where freelancerid = (select freelancers.id from freelancers where emailaddress = $1) and route = $2 and aliasname = $3 and routeparameter = 'FILESUBMISSION';"; + + /* + * Name and Statement for prepared statement to select alias for a file submission + * 1=freelancer email, 2=filename + */ + const static std::string PREPARED_STATEMENT_SELECT_FREELANCER_FILE_SUBMISSION_ALIAS = "selectFreelancerFileSubmissionAlias"; + const static std::string SQL_STATEMENT_SELECT_FREELANCER_FILE_SUBMISSION_ALIAS = "select aliasname from aliasroutes where freelancerid = (select freelancers.id from freelancers where emailaddress = $1) and route = $2 and routeparameter = 'FILESUBMISSION';"; + /* * Name and Statement for prepared statement to delete a submission based on freelancer email and filename */ @@ -336,6 +350,7 @@ namespace DatabaseStatementConstCollection { const static int ID_INSERT_FREELANCER_FILE_SUBMISSION = 42; const static int ID_SELECT_FREELANCER_FILE_SUBMISSION_ALIAS_PATH = 43; const static int ID_INSERT_FREELANCER_FILE_SUBMISSION_ALIAS = 44; + const static int ID_SELECT_FREELANCER_FILE_SUBMISSION_ALIAS = 45; @@ -387,7 +402,8 @@ namespace DatabaseStatementConstCollection { {PREPARED_STATEMENT_PRUGE_FREELANCER_FILE_SUBMISSION, SQL_STATEMENT_PRUGE_FREELANCER_FILE_SUBMISSION}, {PREPARED_STATEMENT_INSERT_FREELANCER_FILE_SUBMISSION, SQL_STATEMENT_INSERT_FREELANCER_FILE_SUBMISSION}, {PREPARED_STATEMENT_SELECT_FREELANCER_FILE_SUBMISSION_ALIAS_PATH, SQL_STATEMENT_SELECT_FREELANCER_FILE_SUBMISSION_ALIAS_PATH}, - {PREPARED_STATEMENT_INSERT_FREELANCER_FILE_SUBMISSION_ALIAS, SQL_STATEMENT_INSERT_FREELANCER_FILE_SUBMISSION_ALIAS} + {PREPARED_STATEMENT_INSERT_FREELANCER_FILE_SUBMISSION_ALIAS, SQL_STATEMENT_INSERT_FREELANCER_FILE_SUBMISSION_ALIAS}, + {PREPARED_STATEMENT_SELECT_FREELANCER_FILE_SUBMISSION_ALIAS, SQL_STATEMENT_SELECT_FREELANCER_FILE_SUBMISSION_ALIAS} }; /* * Easy access to prepared statement name via int @@ -437,7 +453,8 @@ namespace DatabaseStatementConstCollection { {ID_PRUGE_FREELANCER_FILE_SUBMISSION, PREPARED_STATEMENT_PRUGE_FREELANCER_FILE_SUBMISSION}, {ID_INSERT_FREELANCER_FILE_SUBMISSION, PREPARED_STATEMENT_INSERT_FREELANCER_FILE_SUBMISSION}, {ID_SELECT_FREELANCER_FILE_SUBMISSION_ALIAS_PATH, PREPARED_STATEMENT_SELECT_FREELANCER_FILE_SUBMISSION_ALIAS_PATH}, - {ID_INSERT_FREELANCER_FILE_SUBMISSION_ALIAS, PREPARED_STATEMENT_INSERT_FREELANCER_FILE_SUBMISSION_ALIAS} + {ID_INSERT_FREELANCER_FILE_SUBMISSION_ALIAS, PREPARED_STATEMENT_INSERT_FREELANCER_FILE_SUBMISSION_ALIAS}, + {ID_SELECT_FREELANCER_FILE_SUBMISSION_ALIAS, PREPARED_STATEMENT_SELECT_FREELANCER_FILE_SUBMISSION_ALIAS} }; /* diff --git a/src/main.cpp b/src/main.cpp index 9315d71..a9fb9cd 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1212,13 +1212,14 @@ int main(int argc, char *argv[]) { /* * Page for freelancer to view existing Links to a submission */ - CROW_ROUTE(app, "/freelancer/submissionManagement/view/viewLink") - ([&, configuration](const crow::request& getRequest) { + CROW_ROUTE(app, "/freelancer/submissionManagement/view/viewLink/").methods(crow::HTTPMethod::GET) + ([&, configuration](const crow::request& getRequest, const string& fileName) { auto& cookieCtx = app.get_context(getRequest); crow::mustache::context ctx; if (Utilities::checkCookieLoginState(configuration, cookieCtx)) { - ctx = Utilities::getFreelancerSubmissionLinks(configuration, cookieCtx.get_cookie(COOKIE_FREELANCER_EMAIL)); - + ctx = Utilities::getFreelancerSubmissionLinks(configuration, cookieCtx.get_cookie(COOKIE_FREELANCER_EMAIL), fileName); + ctx["filename"] = fileName; + ctx["domain"] = configuration.domain; ctx[MUSTACHE_COOKIE_LOGGED_IN] = true; } @@ -1226,6 +1227,22 @@ int main(int argc, char *argv[]) { return page.render(ctx); }); + /* + * Page for freelancer to delete existing Link to a submission todo:implement + */ + CROW_ROUTE(app, "/freelancer/submissionManagement/view/viewLink//delete").methods(crow::HTTPMethod::GET) + ([&, configuration](const crow::request& getRequest, const string& aliasName) { + auto& cookieCtx = app.get_context(getRequest); + crow::mustache::context ctx; + if (Utilities::checkCookieLoginState(configuration, cookieCtx)) { + + + ctx[MUSTACHE_COOKIE_LOGGED_IN] = true; + } + auto page = crow::mustache::load(TEMPLATE_FREELANCER_SUBMISSION_MANAGEMENT_VIEW_LINK_DELETE_FULFILMENT); + return page.render(ctx); + }); + /* * Page for freelancer to generate link to a particular submission */ diff --git a/src/templateConstCollection.cpp b/src/templateConstCollection.cpp index a070ac4..19f4909 100644 --- a/src/templateConstCollection.cpp +++ b/src/templateConstCollection.cpp @@ -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_LINK = "freelancer_Submission_Management_View_Link.html"; + const static std::string TEMPLATE_FREELANCER_SUBMISSION_MANAGEMENT_VIEW_LINK_DELETE_FULFILMENT = "freelancer_Submission_Management_View_Link_Delete_Fulfilment.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"; diff --git a/templates/freelancer_Submission_Management_View.html b/templates/freelancer_Submission_Management_View.html index b99051c..45cde66 100644 --- a/templates/freelancer_Submission_Management_View.html +++ b/templates/freelancer_Submission_Management_View.html @@ -30,8 +30,8 @@ -
- + +
diff --git a/templates/freelancer_Submission_Management_View_Link.html b/templates/freelancer_Submission_Management_View_Link.html index 8212b1a..cd7965d 100644 --- a/templates/freelancer_Submission_Management_View_Link.html +++ b/templates/freelancer_Submission_Management_View_Link.html @@ -13,11 +13,16 @@ {{#submissionlinks}} - {{submissionLink}} +
+ +
-
- + https://{{domain}}/commissionSubmission/{{aliasname}} + + + +