96 lines
3.4 KiB
PHP
96 lines
3.4 KiB
PHP
<?php
|
|
# Date: 29.08.2021 (21:34)
|
|
namespace Battles;
|
|
|
|
use Battles\Database\Db;
|
|
|
|
class Shop
|
|
{
|
|
public const GENERAL_SHOP = 1;
|
|
public const BARTER_SHOP = 2;
|
|
public const CATEGORY_SALE_ITEMS = -1;
|
|
public int $categoryType = 0;
|
|
private int $shopId;
|
|
|
|
private function __construct($shopId)
|
|
{
|
|
$this->shopId = $shopId;
|
|
}
|
|
|
|
public static function id($shopid): self
|
|
{
|
|
return new self($shopid);
|
|
}
|
|
|
|
private function showGoods(): string
|
|
{
|
|
if ($this->categoryType) {
|
|
$stmt = Db::getInstance()->ofetchAll('select * from items inner join trade_offers on id = shop_item_id where shop_id = ? and shop_item_quantity !=0 and item_type = ?', [$this->shopId, $this->categoryType]);
|
|
$stmt2 = Db::getInstance()->ofetchAll('select * from inventory where on_sale != 0 and present is null and item_type = ?', $this->categoryType);
|
|
} else {
|
|
$stmt = Db::getInstance()->ofetchAll('select * from items inner join trade_offers on id = shop_item_id where shop_id = ? and shop_item_quantity !=0', $this->shopId);
|
|
$stmt2 = Db::getInstance()->ofetchAll('select * from inventory where on_sale != 0 and present is null');
|
|
}
|
|
|
|
$iteminfo = [];
|
|
foreach ($stmt as $item) {
|
|
$iteminfo[] = new ShopItem($item, 'buyshop');
|
|
}
|
|
foreach ($stmt2 as $item) {
|
|
$iteminfo[] = new ShopItem($item, 'buymarket');
|
|
}
|
|
return $this->strFromArr($iteminfo);
|
|
}
|
|
|
|
private function showUserSellItems(): string
|
|
{
|
|
$stmt = Db::getInstance()->ofetchall('select * from inventory where on_sale = 0 and dressed_slot = 0 and durability > 0 and owner_id = ?', User::getInstance()->getId());
|
|
|
|
$iteminfo = [];
|
|
$operationType = 'sellshop';
|
|
if ($this->categoryType === self::BARTER_SHOP) {
|
|
$operationType = 'setmarket';
|
|
}
|
|
foreach ($stmt as $item) {
|
|
$iteminfo[] = new ShopItem($item, $operationType);
|
|
}
|
|
return $this->strFromArr($iteminfo);
|
|
}
|
|
|
|
private function strFromArr(array $array): string
|
|
{
|
|
$str = '';
|
|
$format = '<div class="row item"><div class="left column">%s%s</div><div class="right column">%s</div></div>';
|
|
foreach ($array as $a) {
|
|
$str .= sprintf($format, $a->printImage(), $a->printControls(), $a->printInfo());
|
|
}
|
|
return $str;
|
|
}
|
|
|
|
public function getCategoryName(): string
|
|
{
|
|
$names = [
|
|
Item::TYPE_HELMET => 'Шлемы',
|
|
Item::TYPE_ARMOR => 'Броня',
|
|
Item::TYPE_LEGS => 'Поножи',
|
|
Item::TYPE_BOOTS => 'Сапоги',
|
|
Item::TYPE_GLOVES => 'Перчатки',
|
|
Item::TYPE_WEAPON => 'Оружие',
|
|
Item::TYPE_SHIELD => 'Щиты',
|
|
Item::TYPE_BELT => 'Пояса',
|
|
Item::TYPE_RING => 'Кольца',
|
|
Item::TYPE_AMULET => 'Амулеты',
|
|
Item::TYPE_CONSUMABLE => 'Расходники',
|
|
Item::TYPE_OTHER => 'Разное',
|
|
self::CATEGORY_SALE_ITEMS => 'Предметы в инвентаре',
|
|
0 => 'Все товары',
|
|
];
|
|
return $names[$this->categoryType];
|
|
}
|
|
|
|
public function getItemsList(): string
|
|
{
|
|
return $this->categoryType !== self::CATEGORY_SALE_ITEMS || $this->categoryType !== self::BARTER_SHOP ? $this->showGoods() : $this->showUserSellItems();
|
|
}
|
|
}
|