/** * @Authorize * @Route("Lecture/{int id}/Invite/Speaker") */ public function inviteSpeaker() : View { $lectureId = intval(func_get_args()[0]); $lecture = $this->dbContext->getLecturesRepository()->filterById(" = '{$lectureId}'")->findOne(); $conferenceId = intval($lecture->getConferenceId()); $loggedUserId = $this->identity->getUserId(); $conferenceService = new ConferenceService($this->dbContext); $conference = $conferenceService->getOne($conferenceId); $conferenceAdmins = $this->dbContext->getConferenceadminsRepository()->filterByConferenceId(" = '{$conferenceId}'")->findAll()->getConferenceadmins(); if (!$this->identity->isInRole("Admin")) { if ($loggedUserId !== intval($conference->getOwnerId())) { $unauthorized = true; foreach ($conferenceAdmins as $admin) { if (intval($admin->getUserId()) === $loggedUserId) { $unauthorized = false; $viewBag['isAdmin'] = true; break; } } if ($unauthorized) { $this->addErrorMessage("You are not the owner of this conference!"); $this->redirect('Me', 'Conferences'); } } } $model = new AddSpeakerBindingModel($lectureId); if ($this->context->isPost()) { $this->validateToken(); $username = $model->getUsername(); $user = $this->dbContext->getUsersRepository()->filterByUsername(" = '{$username}'")->findOne(); if (!$user->getId()) { $this->addErrorMessage('No such user!'); $this->redirectToUrl("/Lecture/{$lectureId}/Invite/Speaker"); } $userId = intval($user->getId()); $speakerCheck = $this->dbContext->getLecturesspeakersRepository()->filterBySpeakerId(" = '{$userId}'")->filterByLectureId(" = '{$lectureId}'")->findOne(); if ($speakerCheck->getId()) { $this->addErrorMessage('This user is already a speaker in this lecture!'); $this->redirectToUrl("/Lecture/{$lectureId}/Invite/Speaker"); } $speakerInvite = new Speakerinvite($userId, $lectureId); $this->dbContext->getSpeakerinvitesRepository()->add($speakerInvite); $this->dbContext->saveChanges(); $this->addInfoMessage('User invited to lecture speakers!'); $this->redirectToUrl('/Lecture/' . $lectureId . '/Manage'); } return new View('lectures', 'inviteSpeaker', $model); }
/** * @Authorize * @Route("Conference/{int id}/Edit") */ public function edit() : View { $viewBag = []; $viewBag['venues'] = $this->dbContext->getVenuesRepository()->findAll()->getVenues(); $id = intval(func_get_args()[0]); $service = new ConferenceService($this->dbContext); $conference = $service->getOne($id); $loggedUserId = $this->identity->getUserId(); $conferenceAdmins = $this->dbContext->getConferenceadminsRepository()->filterByConferenceId(" = '{$id}'")->findAll()->getConferenceadmins(); if (!$this->identity->isInRole('Admin')) { if ($loggedUserId !== intval($conference->getOwnerId())) { $unauthorized = true; foreach ($conferenceAdmins as $admin) { if (intval($admin->getUserId()) === $loggedUserId) { $unauthorized = false; $viewBag['isAdmin'] = true; break; } } if ($unauthorized) { $this->addErrorMessage("You are not the owner of this conference!"); $this->redirect('Me', 'Conferences'); } } } if ($this->context->isPost()) { $this->validateToken(); $model = new ConferenceBindingModel(); if ($model->getErrors()) { foreach ($model->getErrors() as $error) { $this->addErrorMessage($error); } $this->context->setMethod('get'); $model = new ConferenceBindingModel($conference); return new View('Conference', 'Edit', $model, $viewBag); } $venueId = intval($model->getVenueId()); $conferences = $this->dbContext->getConferencesRepository()->filterByVenueId(" = '{$venueId}'")->findAll()->getConferences(); foreach ($conferences as $conf) { if (intval($conf->getId()) !== intval($id)) { if (strtotime($model->getStartDate()) < strtotime($conf->getStart()) && strtotime($model->getEndDate()) > strtotime($conf->getStart())) { $this->addErrorMessage('The venue is busy during this time span!'); $this->context->setMethod('get'); return new View('Conference', 'Edit', $model, $viewBag); } if (strtotime($model->getStartDate()) < strtotime($conf->getEnd()) && strtotime($model->getEndDate()) > strtotime($conf->getEnd())) { $this->addErrorMessage('The venue is busy during this time span!'); $this->context->setMethod('get'); return new View('Conference', 'Edit', $model, $viewBag); } if (strtotime($model->getStartDate()) > strtotime($conf->getStart()) && strtotime($model->getEndDate()) < strtotime($conf->getEnd())) { $this->addErrorMessage('The venue is during other once check the times!'); $this->context->setMethod('get'); return new View('Conference', 'Edit', $model, $viewBag); } } } $conference = $service->getOne($id); $conference->setName($model->getTitle()); if ($model->getVenueId()) { $conference->setVenueId($model->getVenueId()); } $conference->setEnd($model->getEndDate()); $conference->setStart($model->getStartDate()); $this->dbContext->saveChanges(); $this->redirect("Me", "Conferences"); } $model = new ConferenceBindingModel($conference); return new View('Conference', 'Edit', $model, $viewBag); }