/** * Method('POST') * @Validatetoken('token') * @param VenueRequestInputModel $model * @Route('conferences/addvenuerequest') */ public function addVenueRequest(VenueRequestInputModel $model) { if (!$model->isValid()) { $this->redirect('Conferences', 'all'); } $service = new ConferencesService($this->dbContext); $result = $service->sendVenueRequest($model); $this->processResponse($result); $this->redirectToUrl('/conferences/details/' . $model->getConferenceId()); }
public function sendVenueRequest(VenueRequestInputModel $model) : ServiceResponse { $conferenceId = $model->getConferenceId(); $venueId = $model->getVenueId(); $conference = $this->dbContext->getConferencesRepository()->filterById(" = {$conferenceId}")->findOne(); if ($conference->getId() == null) { return new ServiceResponse(404, "Conference not found."); } $venue = $this->dbContext->getVenuesRepository()->filterById(" = {$venueId}")->findOne(); if ($venue->getId() == null) { return new ServiceResponse(404, "Venue not found."); } if (HttpContext::getInstance()->getIdentity()->getUserId() != $conference->getOwnerId()) { return new ServiceResponse(401, 'Only conference owners are allowed to send venue requests.'); } $testRequest = $this->dbContext->getVenueReservationRequestsRepository()->filterByConferenceId(" = {$conferenceId}")->filterByVenueId(" = {$venueId}")->findOne(); if ($testRequest->getId() != null) { return new ServiceResponse(1, "Request for this venue already exists."); } $this->dbContext->getVenueReservationRequestsRepository()->filterByConferenceId(" = {$conferenceId}")->delete(); $conference->setVenue_Id($model->getVenueId()); $this->dbContext->saveChanges(); $venueRequest = new VenueReservationRequest($venueId, $conferenceId, 0); $this->dbContext->getVenueReservationRequestsRepository()->add($venueRequest); $conferenceTitle = $conference->getTitle(); $venueTitle = $venue->getTitle(); $message = "You received venue reservation request for venue '{$venueTitle}' by conference '{$conferenceTitle}'."; $notyService = new NotificationsService($this->dbContext); $notyService->sendNotification($venue->getOwnerId(), $message); $this->dbContext->saveChanges(); return new ServiceResponse(null, "Venue request sent successfully."); }