$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); /**@var SendUnits $sendUnitsEvent*/ $sendUnitsEvent = DB::fetch(SendUnits::class, 'select * from events_send_units where event_id=:id', ['id' => $event->id])[0] ?? null; if (! empty($sendUnitsEvent)) { if ($sendUnitsEvent->type === 'SendBack') { $cancelTimeDiff = $event->createdAt->diff(new \DateTime()); $cancelTime = (new \DateTime())->add($cancelTimeDiff); $sendUnitsEvent->isCanceled = true; $sendUnitsEvent->home = $sendUnitsEvent->destination; $sendUnitsEvent->residence = $sendUnitsEvent->source; DB::query( 'update events set time=:time where id=:id', ['time' => $cancelTime->format('c'), 'id' => $request->get('id')] ); DB::query( 'update events_send_units set is_canceled=:is_canceled, home=:home, residence=:residence where id=:id', ['is_canceled' => $sendUnitsEvent->isCanceled, 'home' => $sendUnitsEvent->home, 'residence' => $sendUnitsEvent->residence, 'id' => $sendUnitsEvent->id] ); } else if ($sendUnitsEvent->type === 'Recall') { $cancelTimeDiff = $event->createdAt->diff(new \DateTime()); $cancelTime = (new \DateTime())->add($cancelTimeDiff); $sendUnitsEvent->isCanceled = true; $sendUnitsEvent->home = $sendUnitsEvent->destination; $sendUnitsEvent->residence = $sendUnitsEvent->source; DB::query( 'update events set time=:time where id=:id', ['time' => $cancelTime->format('c'), 'id' => $request->get('id')] ); DB::query( 'update events_send_units set is_canceled=:is_canceled, home=:home, residence=:residence where id=:id', ['is_canceled' => $sendUnitsEvent->isCanceled, 'home' => $sendUnitsEvent->home, 'residence' => $sendUnitsEvent->residence, 'id' => $sendUnitsEvent->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] ) ); } }