<?php
namespace SHServ\Factory;
use \SHServ\Entities\User;
use \SHServ\Entities\Profile;
use \SHServ\Entities\Image;
use \SHServ\Entities\UAdPost;
use \SHServ\Entities\Session;
use \SHServ\Entities\Meta;
use \SHServ\Entities\Order;
use \SHServ\Containers\Registration\UAdPostsContainer;
class Getter {
public function get_user_by(String $field_name, $field_value): ?User {
$result = app() -> thin_builder -> select(
User::$table_name, User::get_fields(), [ [$field_name, "=", $field_value] ]
);
if(!$result) {
return null;
}
return new User($result[0]["id"], $result[0]);
}
public function get_profile_by(String $field_name, $field_value) {
$result = app() -> thin_builder -> select(
Profile::$table_name,
["id"],
[ [$field_name, "=", $field_value] ],
[], "",
[0, 1]
);
if(!$result) {
return null;
}
return new Profile($result[0]["id"]);
}
public function get_images_by_entity(Int $ent_id, String $assignment, Int $amount = 10) {
$result = app() -> thin_builder -> select(
Image::$table_name,
[],
[ ["ent_id", "=", $ent_id], "AND", ["assignment", "=", $assignment] ],
[ "sequence" ],
"ASC",
[0, $amount]
);
if(!$result) {
return [];
}
$images = [];
foreach($result as $item) {
$images[] = new Image($item["id"], $item);
}
return $images;
}
public function get_uadposts_by(String $field_name, $field_value, Int $amount = 10): Array {
$result = app() -> thin_builder -> select(
UAdPost::$table_name,
["id"],
[[ $field_name, is_array($field_value) ? "IN" : "=", $field_value ]],
[ "id" ],
"DESC",
[0, $amount]
);
if(!$result) {
return [];
}
$uadposts = [];
foreach($result as $item) {
$uadposts[] = new UAdPost($item["id"]);
}
UAdPostsContainer::fill();
return $uadposts;
}
public function get_session_by(String $field_name, $field_value): ?Session {
$result = app() -> thin_builder -> select(
Session::$table_name,
Session::get_fields(),
[[$field_name, "=", $field_value]],
["last_using_at"],
"DESC",
[0, 1]
);
if(!$result) {
return null;
}
return new Session(intval($result[0]["id"]), $result[0]);
}
public function get_meta(Int $ent_id, String $assignment, Int $amount = 10): Array {
$result = app() -> thin_builder -> select(
Meta::$table_name,
Meta::get_fields(),
[ ["ent_id", "=", $ent_id], "AND", ["assignment", "=", $assignment] ],
[],
"",
[0, $amount]
);
if(!$result) {
return [];
}
$meta = [];
foreach($result as $item) {
$meta[] = new Meta($item["id"], $item);
}
return $meta;
}
public function get_orders_by(String $field_name, $field_value, Int $amount = 10) : Array {
$result = app() -> thin_builder -> select(
Order::$table_name,
Order::get_fields(),
[
[ $field_name, is_array($field_value) ? "IN" : "=", $field_value ]
],
[ "id" ],
"DESC",
[0, $amount]
);
if(!$result) {
return [];
}
$orders = [];
foreach($result as $item) {
$orders[] = new Order($item["id"], $item);
}
return $orders;
}
}