From 3afcaef927391db23fe23c6c8c26b8960e8dae32 Mon Sep 17 00:00:00 2001 From: Daniel Weipert Date: Wed, 29 Nov 2023 09:35:27 +0100 Subject: intermediate commit --- src/Controller/Event.php | 65 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 src/Controller/Event.php (limited to 'src/Controller/Event.php') diff --git a/src/Controller/Event.php b/src/Controller/Event.php new file mode 100644 index 0000000..a6538fe --- /dev/null +++ b/src/Controller/Event.php @@ -0,0 +1,65 @@ + $request->get('x'), 'y' => $request->get('y')] + ) + ); + } + + #[Route(path: '/event/{id}/cancel', methods: ['POST'])] + public function cancel(Request $request): Response + { + $event = DB::fetch(Model::class, 'select * from events where id=:id', ['id' => $request->get('id')])[0] ?? null; + $village = Village::get($event->villageId); + + if ($event->type === 'SendUnits') { + $payload = json_decode($event->payload, true); + + if ($payload['type'] === 'SendBack') { + $cancelTimeDiff = $event->createdAt->diff(new \DateTime()); + $cancelTime = (new \DateTime())->add($cancelTimeDiff); + + $cancelPayload = array_replace_recursive($payload, [ + 'cancel' => [ + 'home' => $payload['destination'], + 'residence' => $payload['source'], + ], + ]); + + DB::query( + 'update events set time=:time, payload=:payload where id=:id', + ['time' => $cancelTime->format('c'), 'payload' => json_encode($cancelPayload), 'id' => $request->get('id')] + ); + } + } + + else { + DB::query('delete from event where id=:id', ['id' => $request->get('id')]); + } + + return new RedirectResponse( + Router::generate( + 'village.show', + ['x' => $village->x, 'y' => $village->y] + ) + ); + } +} -- cgit v1.2.3