|
|
|
@@ -619,5 +619,131 @@ long WrenchUsersActiveTasksList(CVars in, CVars &out) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
long WrenchUsersTasksReportList(CVars in, CVars &out) {
|
|
|
|
|
logfmt(logINFO, "WrenchUsersTasksReportList()");
|
|
|
|
|
char extraq[60];
|
|
|
|
|
char vname[30];
|
|
|
|
|
long ret = PHP_API_BAD_PARAM;
|
|
|
|
|
|
|
|
|
|
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);
|
|
|
|
|
long allstatus = REQ_LONG(in, "allstatus", 1, -1);
|
|
|
|
|
|
|
|
|
|
if ( allstatus == 100 ){
|
|
|
|
|
snprintf(extraq, sizeof (extraq), "");
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
// snprintf(extraq, sizeof (extraq), " AND mc.delivery_date > now() ");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
out["total_record"] = "0";
|
|
|
|
|
const PGresult *res;
|
|
|
|
|
res = pgsql_query("SELECT mc.id AS contract_id, mc.job_id AS job_id, mc.price, mc.timeline_days,mc.contract, "
|
|
|
|
|
" mj.title, mj.description AS description,mc.job_detail AS job_description,mc.uid AS contract_uid, "
|
|
|
|
|
" mj.banner AS banner, c.code AS currency_code, c.description AS currency_description, mj.uid AS job_uid, "
|
|
|
|
|
" (CASE WHEN mc.status=4 THEN 'REVIEW' "
|
|
|
|
|
" WHEN mc.status = 5 AND mc.delivery_date > now() THEN 'COMPLETED' "
|
|
|
|
|
" WHEN mc.status = 1 AND mc.delivery_date <now() THEN 'PASTDUE' "
|
|
|
|
|
" ELSE 'Others' END) AS status_description,mc.delivery_date, "
|
|
|
|
|
" (CASE WHEN mc.member_id = %lu THEN 'OWNER' ELSE 'WORKER' END) AS owner_status, mc.ext_request AS ext_request "
|
|
|
|
|
" FROM members_jobs_contract mc "
|
|
|
|
|
" LEFT JOIN members_jobs mj ON mj.id = mc.job_id "
|
|
|
|
|
" LEFT JOIN members m ON m.id=mc.client_id "
|
|
|
|
|
" LEFT JOIN currency c ON c.country=mj.country "
|
|
|
|
|
" WHERE mc.client_id =%lu AND mc.status IN (5) %s "
|
|
|
|
|
" ORDER BY mc.id DESC LIMIT %lu OFFSET %lu",member_id, member_id,extraq, limit, offset);
|
|
|
|
|
//ORDER BY id DESC LIMIT %lu OFFSET %lu", in["member_id"].Long(), 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++) {
|
|
|
|
|
map<const char*, const char*>f = pgsql_fetch_assoc(res, i);
|
|
|
|
|
if (f.empty()) continue;
|
|
|
|
|
CVars rec;
|
|
|
|
|
map_to_cvars(f, rec);
|
|
|
|
|
|
|
|
|
|
snprintf(vname, sizeof (vname), "id_%05d", i);
|
|
|
|
|
out[vname] = rec["contract_id"];
|
|
|
|
|
|
|
|
|
|
snprintf(vname, sizeof (vname), "job_detail_%05d", i);
|
|
|
|
|
out[vname] = "";
|
|
|
|
|
|
|
|
|
|
snprintf(vname, sizeof (vname), "expire_%05d", i);
|
|
|
|
|
out[vname] = rec["expire"];
|
|
|
|
|
|
|
|
|
|
snprintf(vname, sizeof (vname), "title_%05d", i);
|
|
|
|
|
out[vname] = rec["title"];
|
|
|
|
|
|
|
|
|
|
snprintf(vname, sizeof (vname), "project_%05d", i);
|
|
|
|
|
out[vname] = rec["project"];
|
|
|
|
|
|
|
|
|
|
snprintf(vname, sizeof (vname), "description_%05d", i);
|
|
|
|
|
out[vname] = rec["description"];
|
|
|
|
|
|
|
|
|
|
snprintf(vname, sizeof (vname), "status_description_%05d", i);
|
|
|
|
|
out[vname] = rec["status_description"];
|
|
|
|
|
|
|
|
|
|
snprintf(vname, sizeof (vname), "delivery_date_%05d", i);
|
|
|
|
|
out[vname] = rec["delivery_date"];
|
|
|
|
|
|
|
|
|
|
snprintf(vname, sizeof (vname), "status_description_%05d", i);
|
|
|
|
|
out[vname] = rec["status_description"];
|
|
|
|
|
|
|
|
|
|
snprintf(vname, sizeof (vname), "ext_request_%05d", i);
|
|
|
|
|
out[vname] = rec["ext_request"];
|
|
|
|
|
|
|
|
|
|
snprintf(vname, sizeof (vname), "timeline_days_%05d", i);
|
|
|
|
|
out[vname] = rec["timeline_days"];
|
|
|
|
|
|
|
|
|
|
snprintf(vname, sizeof (vname), "contract_%05d", i);
|
|
|
|
|
out[vname] = rec["contract"];
|
|
|
|
|
|
|
|
|
|
snprintf(vname, sizeof (vname), "job_description_%05d", i);
|
|
|
|
|
out[vname] = rec["job_description"];
|
|
|
|
|
|
|
|
|
|
snprintf(vname, sizeof (vname), "price_%05d", i);
|
|
|
|
|
out[vname] = rec["price"];
|
|
|
|
|
|
|
|
|
|
snprintf(vname, sizeof (vname), "job_id_%05d", i);
|
|
|
|
|
out[vname] = rec["job_id"];
|
|
|
|
|
|
|
|
|
|
snprintf(vname, sizeof (vname), "origin_job_uid_%05d", i); // added to support original job UID
|
|
|
|
|
out[vname] = rec["job_uid"];
|
|
|
|
|
|
|
|
|
|
snprintf(vname, sizeof (vname), "contract_id_%05d", i);
|
|
|
|
|
out[vname] = rec["contract_id"];
|
|
|
|
|
|
|
|
|
|
snprintf(vname, sizeof (vname), "owner_status_%05d", i);
|
|
|
|
|
out[vname] = rec["owner_status"];
|
|
|
|
|
|
|
|
|
|
snprintf(vname, sizeof (vname), "contract_uid_%05d", i);
|
|
|
|
|
out[vname] = rec["contract_uid"];
|
|
|
|
|
|
|
|
|
|
snprintf(vname, sizeof (vname), "banner_%05d", i);
|
|
|
|
|
out[vname] = rec["banner"];
|
|
|
|
|
|
|
|
|
|
snprintf(vname, sizeof (vname), "currency_%05d", i);
|
|
|
|
|
out[vname] = rec["currency_description"];
|
|
|
|
|
|
|
|
|
|
snprintf(vname, sizeof (vname), "currency_code_%05d", i);
|
|
|
|
|
out[vname] = rec["currency_code"];
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
ret = PHP_API_OK;
|
|
|
|
|
out["status"] = "OK";
|
|
|
|
|
} catch (bad_parameter) {
|
|
|
|
|
logfmt(logINFO, "ERROR CALL long WrenchUsersTasksReportList(CVars in, CVars &out)");
|
|
|
|
|
}
|
|
|
|
|
logfmt(logINFO, "/WrenchUsersTasksReportList()");
|
|
|
|
|
return ret;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|