Files
api/objects/products_o.php
T
2024-12-16 08:54:03 +01:00

114 lines
4.5 KiB
PHP

<?php
namespace objects;
use classes\db;
use classes\object_property;
use traits\db_object_t;
class products_o extends db
{
use db_object_t;
public object_property $name;
public object_property $description;
public object_property $price;
public object_property $category;
public object_property $piktogram;
public object_property $economic_product_id;
public function structure(): void
{
$this->setTable('products');
}
public function getObjectProperties(): void
{
$this->name = new object_property($this->table, $this->id, 'name', 'string', true);
$this->description = new object_property($this->table, $this->id, 'description', 'string', false);
$this->price = new object_property($this->table, $this->id, 'price', 'int', true);
$this->category = new object_property($this->table, $this->id, 'category', 'string', true);
$this->piktogram = new object_property($this->table, $this->id, 'piktogram', 'string', false);
$this->economic_product_id = new object_property($this->table, $this->id, 'economic_product_id', 'int', false);
}
public function getProductById(int $id): products_o
{
global $db;
// Get the record from the database
$sql = "SELECT * FROM $this->table WHERE id = $id";
$result = $db->query($sql);
if ($result->num_rows > 0) {
$this->id = $id;
$this->getObjectProperties();
}
return $this;
}
public function add(string $name, string $description, int $price, string|bool $category = false, string|bool $piktogram = false, string|bool $economicProductId = false): void
{
global $db, $response;
try {
// Avoid SQL injection
$name = $db->escape_string($name);
$description = $db->escape_string($description);
$category = $category ? $db->escape_string($category) : null;
$piktogram = $piktogram ? $db->escape_string($piktogram) : '';
$economicProductId = $economicProductId ? $db->escape_string($economicProductId) : null;
// Create a new record in the database
$sql = "INSERT INTO $this->table (name, description, price, category, piktogram, economic_product_id) VALUES ('$name', '$description', $price, '$category', '$piktogram', '$economicProductId')";
$db->query($sql);
// Get the id of the new record
$this->id = $db->insert_id();
// Set the values of the object properties
$this->getObjectProperties();
} catch (\Exception $e) {
$response->error($e->getMessage());
}
}
public function edit(mixed $id, mixed $name, mixed $description, mixed $price, mixed $category = false, mixed $piktogram = false, mixed $economicProductId = false): void
{
global $db, $response;
$this->id = $id;
try {
// Avoid SQL injection
$name = $db->escape_string($name);
$description = $db->escape_string($description);
$category = $category ? $db->escape_string($category) : null;
$piktogram = $piktogram ? $db->escape_string($piktogram) : '';
$economicProductId = $economicProductId ? $db->escape_string($economicProductId) : null;
// Update the record in the database
$sql = "UPDATE $this->table SET name = '$name', description = '$description', price = $price, category = '$category', piktogram = '$piktogram', economic_product_id = '$economicProductId' WHERE id = $id";
$db->query($sql);
// Set the values of the object properties
$this->getObjectProperties();
} catch (\Exception $e) {
$response->error($e->getMessage());
}
}
public function listObjectsByCategory(string $category): array
{
global $db;
$category = $db->escape_string($category);
$sql = "SELECT * FROM $this->table WHERE category = '$category'";
$result = $db->query($sql);
return $db->fetch_all($result);
}
public function asArray(): array
{
return [
'id' => (int)$this->id,
'name' => (string)$this->name->value(),
'description' => (string)$this->description->value(),
'price' => (int)$this->price->value(),
'category' => $this->category->value(),
'piktogram' => $this->piktogram->value(),
'economic_product_id' => $this->economic_product_id->value(),
];
}
}