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.

123 lines
3.5 KiB
PHP

<?php
/*
* Copyright 2020 Netsyms Technologies.
* 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 Container {
public $containerid = "";
public $barcode = "";
public $exists = false;
private $machines = [];
private $components = [];
private $others = [];
public function __construct($containerid) {
global $database;
if ($database->has("containers", ["containerid" => $containerid])) {
$this->exists = true;
$info = $database->get("containers", ["barcode"], ["containerid" => $containerid]);
$this->barcode = $info["barcode"];
} else {
$this->exists = false;
}
}
public function save() {
global $database;
if ($database->has("containers", ["containerid" => $this->containerid])) {
$database->update("containers", [
"barcode" => $this->barcode
], ["containerid" => $this->containerid]);
} else {
$database->insert("containers", ["barcode" => $this->barcode]);
$this->containerid = $database->id();
$this->exists = true;
}
$database->action(function ($database) {
$database->delete("container_contents", ["containerid" => $this->containerid]);
foreach ($this->machines as $id) {
$database->insert("container_contents", [
"machineid" => $id,
"containerid" => $this->containerid
]);
}
foreach ($this->components as $id) {
$database->insert("container_contents", [
"componentid" => $id,
"containerid" => $this->containerid
]);
}
foreach ($this->others as $id) {
$database->insert("container_contents", [
"otherid" => $id,
"containerid" => $this->containerid
]);
}
});
}
public function getMachineIDs(): array {
return $this->machines;
}
public function getComponentIDs(): array {
return $this->components;
}
public function getOtherIDs(): array {
return $this->others;
}
public function addMachine($machineid) {
global $database;
if ($database->has("machines", ["machineid" => $machineid])) {
$this->machines[] = $machineid;
} else {
throw new Exception("No machine with ID $machineid exists.");
}
}
public function addComponent($componentid) {
global $database;
if ($database->has("components", ["compid" => $componentid])) {
$this->components[] = $componentid;
} else {
throw new Exception("No component with ID $componentid exists.");
}
}
public function addOtherID($id) {
$this->others[] = $id;
}
public function rmMachine($machineid) {
foreach (array_keys($this->machines, $machineid) as $id) {
unset($this->machines[$id]);
}
}
public function rmComponent($componentid) {
foreach (array_keys($this->components, $componentid) as $id) {
unset($this->components[$id]);
}
}
public function rmOtherID($oid) {
foreach (array_keys($this->others, $oid) as $id) {
unset($this->others[$id]);
}
}
}