|
|
|
<?php
|
|
|
|
|
|
|
|
class Machine {
|
|
|
|
|
|
|
|
private $machineid = "";
|
|
|
|
private $machine = [];
|
|
|
|
private $history = [];
|
|
|
|
private $components = [];
|
|
|
|
|
|
|
|
public function __construct($machineid) {
|
|
|
|
global $database;
|
|
|
|
if ($database->has('machines', ['machineid' => $machineid])) {
|
|
|
|
$this->machineid = $machineid;
|
|
|
|
$this->machine = $database->get('machines', ['machineid', 'notes', 'model', 'condition', 'price', 'os', 'serial', 'manufacturer'], ['machineid' => $machineid]);
|
|
|
|
$this->history = $database->select('history', ['[>]event_types' => 'eventid'], ['historyid', 'date', 'eventname', 'notes'], ['machineid' => $machineid]);
|
|
|
|
$this->components = $database->select('components', ['[>]component_types' => 'typeid'], ['compid', 'serial', 'typename', 'tested', 'notes', 'capacity', 'model'], ['machineid' => $machineid]);
|
|
|
|
} else {
|
|
|
|
throw new Exception("No machine with that ID number could be found.");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public function getHistory() {
|
|
|
|
return $this->history;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function getMachineInfo() {
|
|
|
|
$info = [];
|
|
|
|
$info['machineid'] = $this->machineid;
|
|
|
|
if (!empty($this->machine['model'])) {
|
|
|
|
$info['model'] = $this->machine['model'];
|
|
|
|
}
|
|
|
|
if (!empty($this->machine['condition'])) {
|
|
|
|
$info['condition'] = $this->machine['condition'];
|
|
|
|
}
|
|
|
|
if (!empty($this->machine['price'])) {
|
|
|
|
$info['price'] = $this->machine['price'];
|
|
|
|
}
|
|
|
|
if (!empty($this->machine['os'])) {
|
|
|
|
$info['os'] = $this->machine['os'];
|
|
|
|
}
|
|
|
|
if (!empty($this->machine['serial'])) {
|
|
|
|
$info['serial'] = $this->machine['serial'];
|
|
|
|
}
|
|
|
|
if (!empty($this->machine['manufacturer'])) {
|
|
|
|
$info['manufacturer'] = $this->machine['manufacturer'];
|
|
|
|
}
|
|
|
|
$info['notes'] = $this->machine['notes'];
|
|
|
|
return $info;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function getComponents() {
|
|
|
|
$info = [];
|
|
|
|
foreach ($this->components as $c) {
|
|
|
|
$info[$c['compid']] = [
|
|
|
|
'serial' => $c['serial'],
|
|
|
|
'type' => $c['typename'],
|
|
|
|
'notes' => $c['notes']
|
|
|
|
];
|
|
|
|
if (!empty($c['tested'])) {
|
|
|
|
$info[$c['compid']]['tested'] = $c['tested'];
|
|
|
|
}
|
|
|
|
if (!empty($c['capacity'])) {
|
|
|
|
$info[$c['compid']]['capacity'] = $c['capacity'];
|
|
|
|
}
|
|
|
|
if (!empty($c['model'])) {
|
|
|
|
$info[$c['compid']]['model'] = $c['model'];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return $info;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function addHistory($date, $event, $notes = "") {
|
|
|
|
global $database;
|
|
|
|
if (strtotime($date) === false) {
|
|
|
|
throw new Exception("Invalid date.");
|
|
|
|
}
|
|
|
|
$date = date("Y-m-d H:i:s", strtotime($date));
|
|
|
|
if (!$database->has('event_types', ['eventid' => $event])) {
|
|
|
|
throw new Exception("Invalid event type.");
|
|
|
|
}
|
|
|
|
$event = (int) $event;
|
|
|
|
if (empty($notes)) {
|
|
|
|
$notes = "";
|
|
|
|
}
|
|
|
|
$database->insert('history', ['date' => $date, 'eventid' => $event, 'notes' => $notes, 'machineid' => $this->machineid]);
|
|
|
|
}
|
|
|
|
|
|
|
|
public function addComponent($serial, $type, $tested = null, $notes = "", $capacity = null, $model = null) {
|
|
|
|
global $database;
|
|
|
|
if (empty($serial)) {
|
|
|
|
throw new Exception("Invalid serial number.");
|
|
|
|
}
|
|
|
|
if (!$database->has('component_types', ['typeid' => $type])) {
|
|
|
|
throw new Exception("Invalid component type.");
|
|
|
|
}
|
|
|
|
$type = (int) $type;
|
|
|
|
|
|
|
|
if (!is_null($tested)) {
|
|
|
|
if (strtotime($tested) === false) {
|
|
|
|
throw new Exception("Invalid tested date.");
|
|
|
|
}
|
|
|
|
$tested = date("Y-m-d H:i:s", strtotime($tested));
|
|
|
|
}
|
|
|
|
|
|
|
|
if (empty($notes)) {
|
|
|
|
$notes = "";
|
|
|
|
}
|
|
|
|
if (empty($capacity)) {
|
|
|
|
$capacity = null;
|
|
|
|
}
|
|
|
|
if (empty($model)) {
|
|
|
|
$model = null;
|
|
|
|
}
|
|
|
|
|
|
|
|
$database->insert('components', ['serial' => $serial, 'typeid' => $type, 'tested' => $tested, 'notes' => $notes, 'capacity' => $capacity, 'model' => $model, 'machineid' => $this->machineid]);
|
|
|
|
}
|
|
|
|
}
|