Add getjobs and setjob APIs

master
Skylar Ittner 6 years ago
parent 4763719ff5
commit b6c6c28d6c

@ -252,7 +252,7 @@ switch ($VARS['action']) {
foreach ($groups as $g) {
$gids[] = $g['id'];
}
$job = $database->has('jobs', ['[>]job_groups' => ['jobid']], ["AND" => ["OR" => ['groupid' => $gids, 'groupid #-1' => -1], 'deleted' => 0]]);
$job = $database->has('jobs', ['[>]job_groups' => ['jobid']], ["AND" => ["OR" => ['groupid' => $gids, 'groupid #-1' => -1], 'deleted' => 0, 'jobs.jobid' => $VARS['job']]]);
} else {
$job = $database->has('jobs', 'jobid', ['jobid' => $VARS['job']]);
}

@ -7,7 +7,7 @@
/**
* Simple JSON API to allow other apps to access data from this app.
*
*
* Requests can be sent via either GET or POST requests. POST is recommended
* as it has a lower chance of being logged on the server, exposing unencrypted
* user passwords.
@ -117,6 +117,56 @@ switch ($VARS['action']) {
$shifts[$i]['day_list'] = $days;
}
exit(json_encode(["status" => "OK", "shifts" => $shifts]));
case "getjobs":
$jobs = [];
if ($database->count("job_groups") > 0) {
require_once __DIR__ . "/lib/userinfo.php";
$groups = getGroupsByUID($userinfo['uid']);
$gids = [];
foreach ($groups as $g) {
$gids[] = $g['id'];
}
$jobs = $database->select('jobs', ['[>]job_groups' => ['jobid']], ['jobs.jobid (id)', 'jobname (name)', 'jobcode (code)', 'color'], ["AND" => ["OR" => ['groupid' => $gids, 'groupid #-1' => -1], 'deleted' => 0]]);
} else {
$jobs = $database->select('jobs', ['jobid (id)', 'jobname (name)', 'jobcode (code)', 'color'], ['deleted' => 0]);
}
$jobids = [];
$out = [];
foreach ($jobs as $job) {
if (in_array($job['id'], $jobids)) {
continue;
}
$jobids[] = $job['id'];
$out[] = $job;
}
exit(json_encode(["status" => "OK", "jobs" => $out]));
case "setjob":
if (is_empty($VARS['job'])) {
exit(json_encode(["status" => "ERROR", "msg" => lang("invalid job", false)]));
}
if ($database->count("job_groups") > 0) {
require_once __DIR__ . "/lib/userinfo.php";
$groups = getGroupsByUID($userinfo['uid']);
$gids = [];
foreach ($groups as $g) {
$gids[] = $g['id'];
}
$job = $database->has('jobs', ['[>]job_groups' => ['jobid']], ["AND" => ["OR" => ['groupid' => $gids, 'groupid #-1' => -1], 'deleted' => 0, 'jobs.jobid' => $VARS['job']]]);
} else {
$job = $database->has('jobs', 'jobid', ['jobid' => $VARS['job']]);
}
if ($job === true) {
// Stop other jobs
$database->update('job_tracking', ['end' => date("Y-m-d H:i:s")], ['AND' => ['uid' => $userinfo['uid'], 'end' => null]]);
$database->insert('job_tracking', ['uid' => $userinfo['uid'], 'jobid' => $VARS['job'], 'start' => date("Y-m-d H:i:s")]);
exit(json_encode(["status" => "OK", "msg" => lang("job changed", false)]));
} else if ($VARS['job'] == "-1") {
$database->update('job_tracking', ['end' => date("Y-m-d H:i:s")], ['AND' => ['uid' => $userinfo['uid'], 'end' => null]]);
exit(json_encode(["status" => "OK", "msg" => lang("job changed", false)]));
} else {
exit(json_encode(["status" => "ERROR", "msg" => lang("invalid job", false)]));
}
break;
default:
http_response_code(404);
die("\"404 Action not found\"");

@ -28,12 +28,17 @@ redirectifnotloggedin();
foreach ($groups as $g) {
$gids[] = $g['id'];
}
$jobs = $database->select('jobs', ['[>]job_groups' => ['jobid']], ['jobs.jobid', 'jobname', 'jobcode', 'color'], ["AND" => ["OR" => ['groupid' => $gids, 'groupid #-1' => -1], 'deleted' => 0]]);
$jobs = $database->select('job_groups', ['[>]jobs' => ['jobid']], ['jobs.jobid', 'jobname', 'jobcode', 'color'], ["AND" => ["OR" => ['groupid' => $gids, 'groupid #-1' => -1], 'deleted' => 0]]);
} else {
$jobs = $database->select('jobs', ['jobid', 'jobname', 'jobcode', 'color'], ['deleted' => 0]);
}
$jobids = [];
foreach ($jobs as $job) {
if (in_array($job['jobid'], $jobids)) {
continue;
}
$jobids[] = $job['jobid'];
$color = "default";
if (!is_null($job['color']) && $job['color'] != "") {
$color = $job['color'];

Loading…
Cancel
Save