You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
194 lines
5.8 KiB
PHP
194 lines
5.8 KiB
PHP
<?php
|
|
|
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
class Job implements JsonSerializable {
|
|
|
|
private $jobid = -1;
|
|
private $exists = false;
|
|
private $machineid = "";
|
|
private $jobname = "";
|
|
private $clientid = "";
|
|
private $startdate = 0;
|
|
private $deadline = 0;
|
|
private $finishdate = 0;
|
|
private $info = "";
|
|
private $notes = "";
|
|
|
|
public function __construct($jobid = false) {
|
|
global $database;
|
|
if ($jobid !== false) {
|
|
$this->jobid = $jobid;
|
|
if (Job::exists($jobid)) {
|
|
$this->exists = true;
|
|
$info = $database->get("jobs", ["[>]machines" => ["machineid"]], ["jobid", "jobs.machineid", "jobname", "clientid", "startdate", "deadline", "finishdate", "jobinfo", "jobnotes"], ["jobid" => $jobid]);
|
|
$this->machineid = $info["machineid"];
|
|
$this->jobname = $info["jobname"];
|
|
$this->clientid = $info["clientid"];
|
|
$this->startdate = strtotime($info["startdate"]);
|
|
$this->deadline = strtotime($info["deadline"]);
|
|
$this->finishdate = strtotime($info["finishdate"]);
|
|
$this->info = $info["jobinfo"];
|
|
$this->notes = $info["jobnotes"];
|
|
}
|
|
}
|
|
}
|
|
|
|
public static function create(): Job {
|
|
return new Job();
|
|
}
|
|
|
|
public static function exists($id): bool {
|
|
global $database;
|
|
return $database->has('jobs', ['jobid' => $id]);
|
|
}
|
|
|
|
public function toArray() {
|
|
global $Strings;
|
|
if ($this->exists) {
|
|
return [
|
|
"info" => [
|
|
"jobid" => $this->getID(),
|
|
"jobname" => $this->getName(),
|
|
"machineid" => $this->getMachineID(),
|
|
"startdate" => $this->getStartDate(),
|
|
"deadline" => $this->getDeadline(),
|
|
"finishdate" => $this->getFinishDate(),
|
|
"jobinfo" => $this->getInfo(),
|
|
"jobnotes" => $this->getNotes()
|
|
],
|
|
"formdata" => [
|
|
"inputtypes" => [
|
|
"jobname" => "text",
|
|
"machineid" => "text",
|
|
"startdate" => "datetime",
|
|
"deadline" => "datetime",
|
|
"finishdate" => "datetime",
|
|
"jobinfo" => "textarea",
|
|
"jobnotes" => "textarea"
|
|
],
|
|
"labels" => [
|
|
"machineid" => $Strings->get("Machine ID", false),
|
|
"jobname" => $Strings->get("Job Title", false),
|
|
"startdate" => $Strings->get("Started", false),
|
|
"deadline" => $Strings->get("Deadline", false),
|
|
"finishdate" => $Strings->get("Finished", false),
|
|
"jobinfo" => $Strings->get("Info", false),
|
|
"jobnotes" => $Strings->get("Notes", false)
|
|
],
|
|
"icons" => []
|
|
]
|
|
];
|
|
}
|
|
return [];
|
|
}
|
|
|
|
public function jsonSerialize() {
|
|
return $this->toArray();
|
|
}
|
|
|
|
public function save() {
|
|
global $database;
|
|
$data = [
|
|
"machineid" => $this->getMachineID(),
|
|
"jobname" => $this->getName(),
|
|
"startdate" => date("Y-m-d H:i:s", $this->getStartDate()),
|
|
"deadline" => date("Y-m-d H:i:s", $this->getDeadline()),
|
|
"finishdate" => date("Y-m-d H:i:s", $this->getFinishDate()),
|
|
"jobinfo" => $this->getInfo(),
|
|
"jobnotes" => $this->getNotes()
|
|
];
|
|
if ($this->exists) {
|
|
$database->update("jobs", $data, ["jobid" => $this->jobid]);
|
|
} else {
|
|
$database->insert("jobs", $data);
|
|
$this->jobid = $database->id();
|
|
$this->exists = true;
|
|
}
|
|
}
|
|
|
|
public function getID(): int {
|
|
return $this->jobid;
|
|
}
|
|
|
|
public function getMachineID(): string {
|
|
if (!empty($this->machineid)) {
|
|
return $this->machineid;
|
|
}
|
|
return "";
|
|
}
|
|
|
|
public function getName(): string {
|
|
if (!empty($this->jobname)) {
|
|
return $this->jobname;
|
|
}
|
|
return "";
|
|
}
|
|
|
|
public function getStartDate(): int {
|
|
if (!empty($this->startdate)) {
|
|
return $this->startdate;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
public function getDeadline(): int {
|
|
if (!empty($this->deadline)) {
|
|
return $this->deadline;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
public function getFinishDate(): int {
|
|
if (!empty($this->finishdate)) {
|
|
return $this->finishdate;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
public function getInfo(): string {
|
|
if (!empty($this->info)) {
|
|
return $this->info;
|
|
}
|
|
return "";
|
|
}
|
|
|
|
public function getNotes(): string {
|
|
if (!empty($this->notes)) {
|
|
return $this->notes;
|
|
}
|
|
return "";
|
|
}
|
|
|
|
public function setMachineID($id) {
|
|
$this->machineid = $id;
|
|
}
|
|
|
|
public function setName(string $name) {
|
|
$this->jobname = $name;
|
|
}
|
|
|
|
public function setStartDate($date) {
|
|
$this->startdate = strtotime($date);
|
|
}
|
|
|
|
public function setDeadline($date) {
|
|
$this->deadline = strtotime($date);
|
|
}
|
|
|
|
public function setFinishDate($date) {
|
|
$this->finishdate = strtotime($date);
|
|
}
|
|
|
|
public function setInfo(string $info) {
|
|
$this->info = $info;
|
|
}
|
|
|
|
public function setNotes(string $notes) {
|
|
$this->notes = $notes;
|
|
}
|
|
|
|
}
|