Files
api/services/nginx/app/objects/economic_module_orders.php
T
Jepp9350 c240bbd94f Refactor database object trait and improve data handling
Added `delete`, `restore`, and other utility methods to enhance CRUD operations, including support for soft deletes. Introduced `objectChanged` hooks across objects for better cache or event handling, ensuring scalability and maintainability. Refactored and standardized object property handling while restructuring related methods.
2025-02-12 09:23:35 +01:00

94 lines
2.7 KiB
PHP

<?php
namespace objects;
use classes\db;
use classes\object_property;
use traits\db_object_t;
class economic_module_orders extends db
{
use db_object_t;
public object_property $economic_invoice_draft_id;
public object_property $economic_invoice_id;
public function structure(): void
{
$this->setTable('economic_module_orders');
}
public function objectChanged(): void
{
// Since the economic_module_orders object is not cached, there is no need to invalidate the cache
}
public function getByOrderId(int $orderId): economic_module_orders
{
global $db;
// Create a new record in the database, if it does not exist
$sql = "SELECT * FROM $this->table WHERE id = $orderId";
$result = $db->query($sql);
if ($result->num_rows > 0) {
$this->id = $orderId;
$this->getObjectProperties();
} else {
$this->add($orderId);
}
return $this;
}
public function getObjectProperties(): void
{
$this->economic_invoice_draft_id = new object_property($this->table, $this->id, 'invoice_draft_id', 'int', true);
$this->economic_invoice_id = new object_property($this->table, $this->id, 'invoice_id', 'int', true);
}
public function add(int $orderId): void
{
global $db, $response;
try {
// Create a new record in the database
$sql = "INSERT INTO $this->table (id) VALUES ($orderId)";
$db->query($sql);
// Get the id of the new record
$this->id = $orderId;
// Set the values of the object properties
$this->getObjectProperties();
} catch (\Exception $e) {
$response->error($e->getMessage());
}
}
public function unlinkAllOrdersFromDraft(int $draftId): void
{
global $db;
$sql = "UPDATE $this->table SET invoice_draft_id = NULL WHERE invoice_draft_id = $draftId";
$db->query($sql);
}
public function asArray(): array
{
return [
'id' => $this->id,
'invoice_draft_id' => $this->economic_invoice_draft_id->value(),
'invoice_id' => $this->economic_invoice_id->value(),
];
}
public function getUserFromDraftId(int $id): users_o|null
{
global $db;
$sql = "SELECT id FROM $this->table WHERE invoice_draft_id = $id";
$result = $db->query($sql);
if ($result->num_rows > 0) {
$row = $result->fetch_assoc();
$orderId = $row['id'];
$order = new orders_o();
return $order->getOrderCustomer($orderId);
}
return null;
}
}