diff --git a/src/database.cpp b/src/database.cpp index ae20d87..b747516 100644 --- a/src/database.cpp +++ b/src/database.cpp @@ -530,7 +530,7 @@ namespace Database { /* * Executes the prepared statement DELETE_FREELANCER_ALIAS - * Deletes the entry for a reset key based on a freelancer email and the alias name + * Deletes the entry for an alias based on a freelancer email and the alias name * Takes an open pqxx::connection and the freelancers email */ void executePreparedStatement_DELETE_FREELANCER_ALIAS(pqxx::connection &connection, const std::string& aliasName, const std::string& freelancerEmail) { @@ -758,6 +758,17 @@ namespace Database { return result; } + /* + * Executes the prepared statement DELETE_FREELANCER_FILE_SUBMISSION_ALIAS + * Deletes the entry for a submission alias + * Takes an open pqxx::connection and the freelancers email and the alias name + */ + void executePreparedStatement_DELETE_FREELANCER_FILE_SUBMISSION_ALIAS(pqxx::connection &connection, const std::string& freelancerEmail, const std::string& fileName, const std::string& aliasName) { + pqxx::work work(connection); + work.exec_prepared(PREPARED_STATEMENT_DELETE_FREELANCER_FILE_SUBMISSION_ALIAS, freelancerEmail, fileName, aliasName); + work.commit(); + } + /* * Executes the prepared statement INSERT_FREELANCER_FILE_SUBMISSION diff --git a/src/databaseStatementConstCollection.cpp b/src/databaseStatementConstCollection.cpp index 6e919dd..71bfddd 100644 --- a/src/databaseStatementConstCollection.cpp +++ b/src/databaseStatementConstCollection.cpp @@ -351,6 +351,7 @@ namespace DatabaseStatementConstCollection { 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; + const static int ID_DELETE_FREELANCER_FILE_SUBMISSION_ALIAS = 46; @@ -403,7 +404,8 @@ namespace DatabaseStatementConstCollection { {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_SELECT_FREELANCER_FILE_SUBMISSION_ALIAS, SQL_STATEMENT_SELECT_FREELANCER_FILE_SUBMISSION_ALIAS} + {PREPARED_STATEMENT_SELECT_FREELANCER_FILE_SUBMISSION_ALIAS, SQL_STATEMENT_SELECT_FREELANCER_FILE_SUBMISSION_ALIAS}, + {PREPARED_STATEMENT_DELETE_FREELANCER_FILE_SUBMISSION_ALIAS, SQL_STATEMENT_DELETE_FREELANCER_FILE_SUBMISSION_ALIAS} }; /* * Easy access to prepared statement name via int @@ -454,7 +456,8 @@ namespace DatabaseStatementConstCollection { {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_SELECT_FREELANCER_FILE_SUBMISSION_ALIAS, PREPARED_STATEMENT_SELECT_FREELANCER_FILE_SUBMISSION_ALIAS} + {ID_SELECT_FREELANCER_FILE_SUBMISSION_ALIAS, PREPARED_STATEMENT_SELECT_FREELANCER_FILE_SUBMISSION_ALIAS}, + {ID_DELETE_FREELANCER_FILE_SUBMISSION_ALIAS, PREPARED_STATEMENT_DELETE_FREELANCER_FILE_SUBMISSION_ALIAS} }; /* diff --git a/src/main.cpp b/src/main.cpp index a9fb9cd..65b7143 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1201,8 +1201,6 @@ int main(int argc, char *argv[]) { crow::mustache::context ctx; if (Utilities::checkCookieLoginState(configuration, cookieCtx)) { ctx = Utilities::getFreelancerSubmissions(configuration, cookieCtx.get_cookie(COOKIE_FREELANCER_EMAIL)); - - ctx[MUSTACHE_COOKIE_LOGGED_IN] = true; } auto page = crow::mustache::load(TEMPLATE_FREELANCER_SUBMISSION_MANAGEMENT_VIEW); @@ -1228,15 +1226,18 @@ int main(int argc, char *argv[]) { }); /* - * Page for freelancer to delete existing Link to a submission todo:implement + * Page for freelancer to delete existing Link to a submission todo:implement proper encoding decoding to avoid routing errors # causes routing to cut off */ - CROW_ROUTE(app, "/freelancer/submissionManagement/view/viewLink//delete").methods(crow::HTTPMethod::GET) - ([&, configuration](const crow::request& getRequest, const string& aliasName) { + CROW_ROUTE(app, "/freelancer/submissionManagement/view/viewLink////delete").methods(crow::HTTPMethod::GET) + ([&, configuration](const crow::request& getRequest, const int freelancerID, const string& aliasName, const string& fileName) { auto& cookieCtx = app.get_context(getRequest); crow::mustache::context ctx; if (Utilities::checkCookieLoginState(configuration, cookieCtx)) { - - + string formatedAlias = to_string(freelancerID); + formatedAlias.append("/"); + formatedAlias.append(aliasName); + Utilities::deleteFreelancerSubmissionAlias(configuration, formatedAlias, fileName, cookieCtx.get_cookie(COOKIE_FREELANCER_EMAIL)); + ctx["filename"] = fileName; ctx[MUSTACHE_COOKIE_LOGGED_IN] = true; } auto page = crow::mustache::load(TEMPLATE_FREELANCER_SUBMISSION_MANAGEMENT_VIEW_LINK_DELETE_FULFILMENT); diff --git a/src/templateConstCollection.cpp b/src/templateConstCollection.cpp index 19f4909..348ba1c 100644 --- a/src/templateConstCollection.cpp +++ b/src/templateConstCollection.cpp @@ -38,8 +38,8 @@ namespace TemplateConstCollection { 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"; + 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"; diff --git a/src/utilities.cpp b/src/utilities.cpp index 49ab466..fcadd99 100644 --- a/src/utilities.cpp +++ b/src/utilities.cpp @@ -754,6 +754,16 @@ namespace Utilities { Database::executePreparedStatement_DELETE_FREELANCER_ALIAS(databaseConnection, aliasName, emailAddress); } + /* + * Deletes a submissions alias + * takes config the alias name the file name and the freelancers email + */ + void deleteFreelancerSubmissionAlias(const Utilities::config& configuration, const std::string& aliasName, const std::string& fileName, const std::string& emailAddress) { + pqxx::connection databaseConnection(configuration.databaseConnectionString); + Database::prepareStatement(databaseConnection, ID_DELETE_FREELANCER_FILE_SUBMISSION_ALIAS); + Database::executePreparedStatement_DELETE_FREELANCER_FILE_SUBMISSION_ALIAS(databaseConnection, emailAddress, fileName, aliasName); + } + /* * Generates an alias route to the freelancers profile * takes a freelancers name diff --git a/templates/freelancer_Submission_Management_View_Generate_Link.html b/templates/freelancer_Submission_Management_View_Generate_Link.html new file mode 100644 index 0000000..efd48c4 --- /dev/null +++ b/templates/freelancer_Submission_Management_View_Generate_Link.html @@ -0,0 +1,32 @@ + + + + {{> templateIncludes/style.css.html}} + + +

Submission Management: New Link for {{filename}}

+ {{^COOKIE_LOGGED_IN}} + Please Log in. + {{/COOKIE_LOGGED_IN}} + {{#COOKIE_LOGGED_IN}} + {{^POST_ERROR}} +
+

Link Preview: {{domain}}/{{freelancerid}}/
+ +

+ {{/POST_ERROR}} + {{#POST_ERROR}} + {{#REQUEST_NOT_FILLED}} +

Error: Invalid Request

+ {{/REQUEST_NOT_FILLED}} + {{/POST_ERROR}} + {{/COOKIE_LOGGED_IN}} + {{> templateIncludes/freelancerLoginSignupProfileLogoutInterface.html.html}} +
+ {{> templateIncludes/returnToIndexButton.html.html}} + + + + + + \ No newline at end of file diff --git a/templates/freelancer_Submission_Management_View_Generate_Link_Fulfilment.html b/templates/freelancer_Submission_Management_View_Generate_Link_Fulfilment.html new file mode 100644 index 0000000..091ca26 --- /dev/null +++ b/templates/freelancer_Submission_Management_View_Generate_Link_Fulfilment.html @@ -0,0 +1,32 @@ + + + + {{> templateIncludes/style.css.html}} + + + {{^COOKIE_LOGGED_IN}} + Please Log in. + {{/COOKIE_LOGGED_IN}} + {{#COOKIE_LOGGED_IN}} + {{^SUBMISSION_ALIAS_ERROR}} +
+ Link successfully created: {{submissionLink}} +
+ {{/SUBMISSION_ALIAS_ERROR}} + {{#SUBMISSION_ALIAS_ERROR}} + {{#SUBMISSION_ALIAS_ERROR_INVALID}} +
+ Alias is invalid/already in use +
+ {{/SUBMISSION_ALIAS_ERROR_INVALID}} + {{#REQUEST_NOT_FILLED}} +
+ Request is invalid +
+ {{/REQUEST_NOT_FILLED}} + {{/SUBMISSION_ALIAS_ERROR}} + {{/COOKIE_LOGGED_IN}} + + {{> templateIncludes/freelancerLoginSignupProfileLogoutInterface.html.html}} + + \ No newline at end of file diff --git a/templates/freelancer_Submission_Management_View_Link.html b/templates/freelancer_Submission_Management_View_Link.html index cd7965d..a5a2dd6 100644 --- a/templates/freelancer_Submission_Management_View_Link.html +++ b/templates/freelancer_Submission_Management_View_Link.html @@ -21,7 +21,7 @@ https://{{domain}}/commissionSubmission/{{aliasname}} -
+
diff --git a/templates/freelancer_Submission_Management_View_Link_Delete_Fulfilment.html b/templates/freelancer_Submission_Management_View_Link_Delete_Fulfilment.html new file mode 100644 index 0000000..91341c2 --- /dev/null +++ b/templates/freelancer_Submission_Management_View_Link_Delete_Fulfilment.html @@ -0,0 +1,24 @@ + + + + {{> templateIncludes/style.css.html}} + + +

Alias Deleted

+ {{^COOKIE_LOGGED_IN}} + Please Log in. + {{/COOKIE_LOGGED_IN}} + {{#COOKIE_LOGGED_IN}} +
+ +
+ {{/COOKIE_LOGGED_IN}} + {{> templateIncludes/freelancerLoginSignupProfileLogoutInterface.html.html}} +
+ {{> templateIncludes/returnToIndexButton.html.html}} + + + + + + \ No newline at end of file