コード例 #1
0
 /**
  * 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());
 }
コード例 #2
0
 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.");
 }