diff --git a/wrenchboard/src/include/wrenchboard_api.h b/wrenchboard/src/include/wrenchboard_api.h index ff9766d7..7a9bc5a8 100644 --- a/wrenchboard/src/include/wrenchboard_api.h +++ b/wrenchboard/src/include/wrenchboard_api.h @@ -254,6 +254,8 @@ enum { PARTNER_STRIPE }; #define WRENCHBOARD_JOB_CREATE_GROUP 13020 #define WRENCHBOARD_JOB_DELETE_GROUP 13023 +#define WRENCHBOARD_JOB_OFFER_INTLIST 13024 // offers interest list + #define WRENCHBOARD_JOB_OFFER_SYSTEM 13025 #define WRENCHBOARD_JOB_OFFER_FAMILY 13029 #define WRENCHBOARD_JOB_OFFER_INDVI 13030 diff --git a/wrenchboard/src/shared_tool/account.cc b/wrenchboard/src/shared_tool/account.cc index 55a19887..6831076d 100644 --- a/wrenchboard/src/shared_tool/account.cc +++ b/wrenchboard/src/shared_tool/account.cc @@ -909,7 +909,9 @@ long WrenchReturnPendingJobList(CVars in, CVars &out) { */ - res = pgsql_query("SELECT mo.member_id, to_char(mo.added, 'Day Mon dd, yyyy HH:MI AM') AS sent,j.title,j.description,m.job_id,to_char( m.expire, 'Day Mon dd, yyyy HH:MI AM') AS expire FROM members_offer_interest mo " + res = pgsql_query("SELECT mo.member_id, to_char(mo.added, 'Dy Mon dd, yyyy HH:MI AM') AS sent," + " j.title,j.description,m.job_id,to_char( m.expire, 'Dy Mon dd, yyyy HH:MI AM') AS expire " + " FROM members_offer_interest mo " " LEFT JOIN members_jobs_offer m ON m.id = mo.offer_id " " LEFT JOIN members_jobs j ON j.id=m.job_id " " WHERE m.status = 1 AND m.client_id=0 " diff --git a/wrenchboard/src/shared_tool/contract.cc b/wrenchboard/src/shared_tool/contract.cc index ba6c4f26..a042eb76 100644 --- a/wrenchboard/src/shared_tool/contract.cc +++ b/wrenchboard/src/shared_tool/contract.cc @@ -55,32 +55,41 @@ long WrenchContractStatus( CVars in, CVars &out ) switch( job_action ) { case CONTRACT_NOTIFY_COMPLETE: - ret = load_db_record( out, "SELECT * FROM members_jobs_contract WHERE status IN (1,2) AND contract='%s' AND id=%lu AND client_id =%lu",in["job_contract"].c_str(),in["job_id"].Long(),in["member_id"].Long() ); + ret = load_db_record( out, "SELECT id AS jobs_contract_id, * FROM members_jobs_contract WHERE status IN (1,2) " + " AND contract='%s' AND id=%lu AND client_id =%lu",in["job_contract"].c_str(),in["job_id"].Long(),in["member_id"].Long() ); logfmt( logINFO, "~~~~ ~~~~~ WrenchContractStatus() ret 1 = %lu",ret ); if (ret) { - pgsql_exec("UPDATE members_jobs_contract SET status = %lu,updated=now() WHERE id = %lu",CONTRACT_NOTIFY_COMPLETE, in["job_id"].Long() ); + if ( out["jobs_contract_id"].Long() > 0 ){ + pgsql_exec("UPDATE members_jobs_contract SET status = %lu,updated=now() WHERE id = %lu",CONTRACT_NOTIFY_COMPLETE, in["job_id"].Long() ); - if ( load_db_record( out, "SELECT * FROM members_jobs_contract WHERE status = %lu AND id=%lu AND client_id =%lu",CONTRACT_NOTIFY_COMPLETE,in["job_id"].Long(),in["member_id"].Long() ) ) - { - project_email(CONTRACT_NOTIFY_COMPLETE, in, out); - out["result"] = "We have notify the task owner of your completion. Expect a response soon"; - } + if ( load_db_record( out, "SELECT * FROM members_jobs_contract " + " WHERE status = %lu AND id=%lu AND client_id =%lu",CONTRACT_NOTIFY_COMPLETE,in["job_id"].Long(),in["member_id"].Long() ) ) + { + project_email(CONTRACT_NOTIFY_COMPLETE, in, out); + out["result"] = "We have notify the task owner of your completion. Expect a response soon"; + } + } } break; case CONTRACT_REQUEST_CANCEL: - ret = load_db_record( out, "SELECT * FROM members_jobs_contract WHERE status IN (1,2) AND contract='%s' AND id=%lu AND client_id =%lu",in["job_contract"].c_str(),in["job_id"].Long(),in["member_id"].Long() ); + ret = load_db_record( out, "SELECT id AS jobs_contract_id,* FROM members_jobs_contract WHERE status IN (1,2) " + " AND contract='%s' AND id=%lu AND client_id =%lu",in["job_contract"].c_str(),in["job_id"].Long(),in["member_id"].Long() ); logfmt( logINFO, "~~~~ ~~~~~ WrenchContractStatus() ret 1 = %lu",ret ); if (ret) { - pgsql_exec("UPDATE members_jobs_contract SET status = %lu,updated=now() WHERE id = %lu",CONTRACT_REQUEST_CANCEL, in["job_id"].Long() ); + if ( out["jobs_contract_id"].Long() > 0 ){ + pgsql_exec("UPDATE members_jobs_contract SET status = %lu,updated=now() " + " WHERE id = %lu",CONTRACT_REQUEST_CANCEL, in["job_id"].Long() ); + if ( load_db_record( out, "SELECT * FROM members_jobs_contract WHERE status = %lu " + " AND id=%lu AND client_id =%lu",CONTRACT_REQUEST_CANCEL,in["job_id"].Long(),in["member_id"].Long() ) ) + { + project_email(CONTRACT_REQUEST_CANCEL, in, out); + out["result"] = "We have notify the task owner of your request for cancellation."; + } + } - if ( load_db_record( out, "SELECT * FROM members_jobs_contract WHERE status = %lu AND id=%lu AND client_id =%lu",CONTRACT_REQUEST_CANCEL,in["job_id"].Long(),in["member_id"].Long() ) ) - { - project_email(CONTRACT_REQUEST_CANCEL, in, out); - out["result"] = "We have notify the task owner of your request for cancellation."; - } } break; diff --git a/wrenchboard/src/shared_tool/jobs.cc b/wrenchboard/src/shared_tool/jobs.cc index ab0e9486..8fc0bcd3 100644 --- a/wrenchboard/src/shared_tool/jobs.cc +++ b/wrenchboard/src/shared_tool/jobs.cc @@ -27,6 +27,7 @@ long WrenchJobPostNotifyOffer(CVars in, CVars &out); long WrenchJobPostCancelOffer(CVars in, CVars &out); long WrenchJobOfferSystems(CVars in, CVars &out); long WrenchSendJobsOfferFamily(CVars in, CVars &out); +long WrenchJobsOfferInterestList(CVars in, CVars &out); long jobs_calls(CVars in, CVars &out) { logfmt(logINFO, "jobs_calls()"); @@ -105,6 +106,10 @@ long jobs_calls(CVars in, CVars &out) { return WrenchConcludeJobsOffer(in, out); break; + case WRENCHBOARD_JOB_OFFER_INTLIST: + return WrenchJobsOfferInterestList(in, out); + break; + case WRENCHBOARD_JOB_SEND_INTEREST: return WrenchJobsOfferInterest(in, out); break; @@ -252,6 +257,81 @@ long WrenchJobPostAgree(CVars in, CVars &out) { return ret; } + +long WrenchJobsOfferInterestList(CVars in, CVars &out) { + long ret = PHP_API_BAD_PARAM; + char vname[30]; + out = in; + try { + long member_id = REQ_LONG(in, "member_id", 1, -1); + long offset = REQ_LONG(in, "offset", 1, -1); + long limit = REQ_LONG(in, "limit", 1, -1); + + const PGresult *res = pgsql_query("SELECT mm.id AS client_id, mm.uid AS client_uid, " + " mm.firstname AS client_name, m.offer_code, m.uid AS offer_uid, " + " mo.member_id, to_char(mo.added, 'Dy Mon dd, yyyy HH:MI AM') AS sent, " + " j.title,j.description,m.job_id,to_char( m.expire, 'Dy Mon dd, yyyy HH:MI AM') AS expire " + " FROM members_offer_interest mo " + " LEFT JOIN members_jobs_offer m ON m.id = mo.offer_id " + " LEFT JOIN members_jobs j ON j.id=m.job_id " + " LEFT JOIN members mm ON mm.id = mo.member_id " + " WHERE m.status = 1 AND m.client_id=0 " + " AND m.expire IS NOT NULL AND m.expire> now() " + " AND m.member_id = %lu ORDER BY mo.added DESC LIMIT %lu OFFSET %lu",member_id, limit, offset); + if (res != NULL && pgsql_num_rows(res) > 0) { + + out["total_record"] = pgsql_num_rows(res); + + for (int i = 0, n = pgsql_num_rows(res); i < n; i++) { + mapf = pgsql_fetch_assoc(res, i); + if (f.empty()) continue; + CVars rec; + map_to_cvars(f, rec); + + snprintf(vname, sizeof (vname), "client_id_%05d", i); + out[vname] = rec["client_id"]; + + snprintf(vname, sizeof (vname), "client_uid_%05d", i); + out[vname] = rec["client_uid"]; + + snprintf(vname, sizeof (vname), "client_name_%05d", i); + out[vname] = rec["client_name"]; + + snprintf(vname, sizeof (vname), "offer_code_%05d", i); + out[vname] = rec["offer_code"]; + + snprintf(vname, sizeof (vname), "offer_uid_%05d", i); + out[vname] = rec["offer_uid"]; + + snprintf(vname, sizeof (vname), "sent_%05d", i); + out[vname] = rec["sent"]; + + snprintf(vname, sizeof (vname), "title_%05d", i); + out[vname] = rec["title"]; + + snprintf(vname, sizeof (vname), "description_%05d", i); + out[vname] = rec["description"]; + + snprintf(vname, sizeof (vname), "job_id_%05d", i); + out[vname] = rec["job_id"]; + + snprintf(vname, sizeof (vname), "expire_%05d", i); + out[vname] = rec["expire"]; + + } + + } + ret = PHP_CREATED_OK; + + } catch (bad_parameter) { + out["log_status"] = "Error WrenchJobsOfferInterestList"; + } + return ret; + + } + + + long WrenchReplyMessage(CVars in, CVars &out) { long member_id = REQ_LONG(in, "member_id", 1, -1); long message_id = REQ_LONG(in, "message_id", 1, -1); diff --git a/www-api/app/Config/Constants.php b/www-api/app/Config/Constants.php index 84864321..763614dd 100644 --- a/www-api/app/Config/Constants.php +++ b/www-api/app/Config/Constants.php @@ -237,6 +237,7 @@ define('WRENCHBOARD_JOB_DELETE_GROUPMEMBER',13017); define('WRENCHBOARD_JOB_CREATE_GROUP', 13020); define('WRENCHBOARD_JOB_DELETE_GROUP',13023); +define('WRENCHBOARD_JOB_OFFER_INTLIST', 13024); // offers interest list define('WRENCHBOARD_JOB_OFFER_SYSTEM', 13025); define('WRENCHBOARD_JOB_OFFER_FAMILY', 13029); define('WRENCHBOARD_JOB_OFFER_INDVI',13030); diff --git a/www-api/app/Config/Routes.php b/www-api/app/Config/Routes.php index 4a085f18..4bce09e5 100644 --- a/www-api/app/Config/Routes.php +++ b/www-api/app/Config/Routes.php @@ -144,6 +144,7 @@ $routes->post('/en/wrench/api/v1/activetaskstatus', 'WrenchApi::apigate'); //$routes->post('/en/wrench/api/v1/blogdata', 'WrenchBlog::apigate'); //$routes->post('/en/wrench/api/v1/blogitem', 'WrenchBlog::apigate'); +$routes->post('/en/wrench/api/v1/offersinterestlist', 'WrenchApi::apigate'); $routes->post('/en/wrench/api/v1/resources', 'WrenchResources::website'); $routes->get('/en/wrench/api/v1/blogdata/', 'WrenchBlog::website'); diff --git a/www-api/app/Controllers/WrenchApi.php b/www-api/app/Controllers/WrenchApi.php index a8479c95..06c02bc3 100644 --- a/www-api/app/Controllers/WrenchApi.php +++ b/www-api/app/Controllers/WrenchApi.php @@ -106,12 +106,16 @@ class WrenchApi extends BaseController 'marketinterest'=> ['POST'], 'activejobstatus'=> ['POST'], 'activetaskstatus'=> ['POST'], + 'offersinterestlist' => ['POST'], ]; return $endpoints; } private function prepareEndPointData($endpoint, $in, &$call_backend=true,&$local_out=[]){ switch ($endpoint) { + case 'offersinterestlist': + $in["action"] = WRENCHBOARD_JOB_OFFER_INTLIST; + break; case 'activejobstatus': case 'activetaskstatus': $in = $this->processJobStatus($in); diff --git a/www-api/public/svs/user/constants.php b/www-api/public/svs/user/constants.php index 33ea70da..3e109f2b 100755 --- a/www-api/public/svs/user/constants.php +++ b/www-api/public/svs/user/constants.php @@ -146,6 +146,7 @@ define('WRENCHBOARD_JOB_DELETE_GROUPMEMBER',13017); define('WRENCHBOARD_JOB_CREATE_GROUP', 13020); define('WRENCHBOARD_JOB_DELETE_GROUP',13023); +define('WRENCHBOARD_JOB_OFFER_INTLIST', 13024); // offers interest list define('WRENCHBOARD_JOB_OFFER_SYSTEM', 13025); define('WRENCHBOARD_JOB_OFFER_FAMILY', 13029); define('WRENCHBOARD_JOB_OFFER_INDVI',13030); diff --git a/www-api/public/svs/user/userve.php b/www-api/public/svs/user/userve.php index 062bf053..ca71888b 100755 --- a/www-api/public/svs/user/userve.php +++ b/www-api/public/svs/user/userve.php @@ -86,6 +86,7 @@ $endpoints = array( 'marketinterest'=> array('POST'), 'activejobstatus'=> array('POST'), 'activetaskstatus'=> array('POST'), + 'offersinterestlist' => array('POST'), ); $call_backend = true; // sometimes we need to overwite the call to the extenstion API @@ -177,6 +178,9 @@ if ($_SERVER["REQUEST_METHOD"] == "GET") { } $in["loc"] = $_SERVER["REMOTE_ADDR"]; switch ($endpoint) { + case 'offersinterestlist': + $in["action"] = WRENCHBOARD_JOB_OFFER_INTLIST; + break; case 'activejobstatus': case 'activetaskstatus': $in = processJobStatus($in);