<?php

use Core\Config;
use Core\Db;
use Core\View;
use Enum\ShopId;
use Helper\Conversion;
use Location\Shop;
use User\Clan;
use User\ItemsModel;

/* @var User $u */

if ($u->room['file'] != 'shop_') {
    return;
}

$shopId = null;
$status = '';
$itmAllSee = '';
$actionSale = false;
$actionGifts = false;
$buyItemId = 0;
$buyEkrItemId = 0;
$buyVoinItemId = 0;
$sellItemId = 0;
$uc = null;
$giftsvars = [];
$otdel = 1;

if ((int)$u->info['room'] === 10) {
    $shopId = ShopId::MAIN;
}
if ((int)$u->info['room'] === 368) {
    $shopId = ShopId::SHOP_2;
}
if ((int)$u->info['room'] === 13) {
    $shopId = ShopId::BEREZKA;
}

if ($_SERVER["REQUEST_METHOD"] === "GET") { //неясно почему, $_GET вызывается буквалльно всегда, даже на пустом месте.
    $actionSale = (bool)$_GET['sale'];
    $actionGifts = (bool)$_GET['gifts'];
    $buyItemId = intval($_GET['buy']);
    $buyEkrItemId = intval($_GET['buyEkr']);
    $buyVoinItemId = intval($_GET['buyVn']);
    $sellItemId = intval($_GET['item']);
    $otdel = $_GET['otdel'] ??= 1;
}

if (isset($_POST['itemgift'])) {
    $present = new \DTO\Present();
    $present->sender = $u->info['login'];
    $present->receiver = $_POST['to_login'];
    $present->textTitle = $_POST['podarok2'];
    $present->text = $_POST['txt'];
    if (intval($_POST['from']) === 1) {
        $present->anonymousSender = true;
    } elseif (intval($_POST['from'] === 2) && $u->info['clan'] > 0) {
        $present->clanSender = true;
    }
    $sendPresent = new Present($present);
    $status = $sendPresent->getStatus();
}

$shop = new Shop($shopId, $otdel);
$shopName = Db::getValue('select name from room where id = ?', [$u->info['room']]);


if ($buyItemId) {
    $status = $shop->buy($buyItemId);
} elseif ($buyEkrItemId) {
    $status = $shop->buyEkr($buyEkrItemId);
} elseif ($buyVoinItemId) {
    $status = $shop->buyVn($buyVoinItemId);
}

if ($actionSale) {
    $itmAll = $u->genInv(2, '`iu`.`uid`="' . $u->info['id'] . '" AND `iu`.`delete`=0 AND `iu`.`inOdet`=0 AND `iu`.`inShop`=0 AND `iu`.`data` NOT LIKE "%fromshop=2%" ORDER BY `lastUPD` DESC');
    if ($itmAll[0] == 0) {
        $itmAllSee = '<tr><td style="text-align: center; background-color: lightgrey;">ПУСТО</td></tr>';
    } else {
        $itmAllSee = $itmAll[2];
    }
    if ($sellItemId) {
        $item = ItemsModel::getOwnedItemById($sellItemId, User::start()->info['id']);
        $itemData = Conversion::dataStringToArray($item['data']);
        $status = $item['gift'] ? 'Подарки не продаются!' : '';
        $status = $itemData['nosale'] ? 'Предмет не для продажи!' : '';
        if (!$status && $sellItemId) {
            $sellprice = $item['1price'] - $item['1price'] * 0.1;
            ItemsModel::delete($item['id']);
            $u->addKr($sellprice);
            $status = "Вы успешно продали предмет «{$item['name']}» за $sellprice кр.";
            Delo::add(2, 'shopid:' . $shopId->value, $u->info['id'], "Предмет «{$item['name']}» [id:{$item['id']}] продан за $sellprice кр.", -$sellprice);
        }
    }
}

if ($actionGifts) {
    $uc = new Clan($u->info);
    $imgsrc = Config::img();
    $sp = Db::getRow('select * from users_gifts where uid = ?', [$u->info['id']]);
    foreach ($sp as $pl) {
        $giftsvars[] = [
            'img' => $imgsrc . '/i/items/' . $pl['img'],
            'jsvalue' => 1000000000000 + $pl['id'],
            'money' => $pl['money'],
            'linkname' => $pl['name'],
        ];
    }

    $itmAll = $u->genInv(3, '`iu`.`uid`="' . $u->info['id'] . '" AND `iu`.`delete`=0 AND `iu`.`inOdet`=0 AND `iu`.`inShop`=0 AND `im`.`type` in (28,38,63,64,37) AND (`iu`.`gift` = "" OR `iu`.`gift` = 1) ORDER BY `lastUPD` DESC');
    if ($itmAll[0] == 0) {
        $itmAllSee = '<tr><td style="text-align: center; background-color: lightgrey;">У вас нет подходящих предметов</td></tr>';
    } else {
        $itmAllSee = $itmAll[2];
    }
}

/** @var string $goLis инициализируется в файле из которого вызван этот. Отрисовка датчика задержки смены локации. */
/** @var string $code инициализируется в файле из которого вызван этот. Хеш-строка против кеширования. */
$renderArgs = [
    'shopName' => $shopName,
    'status' => $status,
    'actionSale' => $actionSale,
    'actionGifts' => $actionGifts,
    'otdel' => $otdel,
    'u' => $u,
    'uc' => $uc,
    'giftsvars' => $giftsvars,
    'itmAllSee' => $itmAllSee,
    'shop' => $shop,
    'goLis' => $goLis,
    'code' => $code,
    'shopId' => $shopId->value,
    'otdels' => $shop->getUsedOtdels(),
    'i' => 1,
];
View::render('Locations/Shop.php', $renderArgs);