diff options
Diffstat (limited to 'src/Controller/Village.php')
-rw-r--r-- | src/Controller/Village.php | 146 |
1 files changed, 0 insertions, 146 deletions
diff --git a/src/Controller/Village.php b/src/Controller/Village.php deleted file mode 100644 index c678779..0000000 --- a/src/Controller/Village.php +++ /dev/null @@ -1,146 +0,0 @@ -<?php - -namespace App\Controller; - -use App\DB; -use App\Guard; -use App\Model\Event\SendUnits; -use App\Model\Event\TrainUnits; -use App\Model\Event\UpgradeBuilding; -use App\Model\Village as Model; -use App\Router; -use App\View; -use Symfony\Component\HttpFoundation\RedirectResponse; -use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\HttpFoundation\Response; -use Symfony\Component\Routing\Annotation\Route; - -class Village -{ - #[Route(path: '/villages', methods: ['GET'])] - public function list(): Response - { - $villages = DB::fetch( - Model::class, - <<<SQL - select * from villages - join user_villages on villages.id = user_villages.village_id - where user_villages.user_id=:id - SQL, - ['id' => $_SESSION['user']['id']] - ); - - return new Response(View::render('villages.twig', [ - 'villages' => $villages, - ])); - } - - #[Route(path: '/village/{x}/{y}', methods: ['GET'])] - public function show(Request $request): Response - { - $village = Model::getByCoordinates($request->get('x'), $request->get('y')); - - if (! Guard::ownsVillage($village->id)) { - return new Response(View::render('error.twig', ['message' => 'Insufficient permission']), 403); - } - - $events = []; - - $eventsBuilding = DB::query( - <<<SQL - select * from events_upgrade_building as event - left join events on event.event_id = events.id - where events.village_id=:id - SQL, ['id' => $village->id] - )->fetchAll(); - - foreach ($eventsBuilding as $row) { - $events['UpgradeBuilding'][$row['type']][] = DB::convertToModel(UpgradeBuilding::class, $row); - } - - $eventsUnits = DB::query( - <<<SQL - select * from events_train_units as event - left join events on event.event_id = events.id - where village_id=:id - SQL, ['id' => $village->id] - )->fetchAll(); - - foreach ($eventsUnits as $row) { - $events['TrainUnits'][] = DB::convertToModel(TrainUnits::class, $row); - } - - $eventsUnitsSendOwn = DB::query( - <<<SQL - select * from events_send_units as event - left join events on event.event_id = events.id - where village_id=:id - SQL, ['id' => $village->id] - )->fetchAll(); - - $eventsUnitsSendOther = DB::query( - <<<SQL - select * from events_send_units as event - left join events on event.event_id = events.id - where (destination=:id or source=:id) and village_id!=:id and is_canceled=false - SQL, ['id' => $village->id] - )->fetchAll(); - - foreach ([...$eventsUnitsSendOwn, ...$eventsUnitsSendOther] as $row) { - $events['SendUnits'][] = DB::convertToModel(SendUnits::class, $row);; - } - - $buildings = []; - foreach (Model::getBuildings($village->id, true) as $building) { - $buildings[$building->type] = $building; - } - - - return new Response(View::render('village.twig', [ - 'village' => $village, - 'events' => $events, - 'buildings' => $buildings, - 'villages' => DB::fetch(Model::class, "select * from villages where id!=:id", ['id' => $village->id]), - ])); - } - - #[Route(path: '/village/{x}/{y}/storage/config', methods: ['POST'])] - public function storageConfig(Request $request): Response - { - $village = Model::getByCoordinates($request->get('x'), $request->get('y')); - - // calculate to max 100% - $wood = intval($request->get('wood')); - $clay = intval($request->get('clay')); - $iron = intval($request->get('iron')); - $food = intval($request->get('food')); - $total = $wood + $clay + $iron + $food; - $woodPercent = $wood / $total; - $clayPercent = $clay / $total; - $ironPercent = $iron / $total; - $foodPercent = $food / $total; - - $wood = round($woodPercent * 100); - $clay = round($clayPercent * 100); - $iron = round($ironPercent * 100); - $food = round($foodPercent * 100); - $newTotal = $wood+$clay+$iron+$food; - $food += (100 - $newTotal); - - DB::query( - <<<SQL - update village_storage_config - set wood=:wood, clay=:clay, iron=:iron, food=:food - where village_id=:id - SQL, - ['wood' => $wood, 'clay' => $clay, 'iron' => $iron, 'food' => $food, 'id' => $village->id] - ); - - return new RedirectResponse( - Router::generate( - 'village.show', - ['x' => $request->get('x'), 'y' => $request->get('y')] - ) - ); - } -} |