getAll(); } catch (ServiceAction\Read $exception) { return $this->withError($response, $exception); } return $this->withJson($response, compact('reservations')); } public function get(ServerRequestInterface $request, ResponseInterface $response, Service\Venta\Reservation $reservationService, int $reservation_id): ResponseInterface { $output = [ 'reservation_id' => $reservation_id, 'reservation' => null, ]; try { $output['reservation'] = $reservationService->get($reservation_id); } catch (ServiceAction\Read $exception) { return $this->withError($response, $exception); } return $this->withJson($response, $output); } public function add(ServerRequestInterface $request, ResponseInterface $response, Service\Venta\Reservation $reservationService): ResponseInterface { $input = $request->getParsedBody(); $output = [ 'input' => $input, 'reservations' => [], 'success' => false, 'partial' => false, 'errors' => [], ]; try { $output['reservations'] []= [ 'reservation' => $reservationService->add($input), 'success' => true ]; $output['partial'] = true; } catch (ServiceAction\Create $exception) { $output['errors'] []= $this->parseError($exception); } if (count($input['reservations']) === count($output['reservations'])) { $output['success'] = true; } return $this->withJson($response, $output); } public function edit(ServerRequestInterface $request, ResponseInterface $response, Service\Venta\Reservation $reservationService, int $reservation_id): ResponseInterface { $input = $request->getParsedBody(); $output = [ 'input' => $input, 'reservation_id' => $reservation_id, 'reservations' => null, 'success' => false, ]; try { $reservation = $reservationService->get($reservation_id); $output['reservations'] = $reservationService->edit($reservation, $input); $output['success'] = true; } catch (ServiceAction\Read | ServiceAction\Update $exception) { return $this->withError($response, $exception); } return $this->withJson($response, $output); } public function delete(ServerRequestInterface $request, ResponseInterface $response, Service\Venta\Reservation $reservationService, int $reservation_id): ResponseInterface { $output = [ 'reservation_id' => $reservation_id, 'success' => false, ]; try { $reservationService->delete($reservation_id); $output['success'] = true; } catch (ServiceAction\Delete $exception) { return $this->withError($response, $exception); } return $this->withJson($response, $output); } }