/** * @param ReservationSeries $reservationSeries * @return void */ public function Notify($reservationSeries) { $resourceAdmins = array(); $applicationAdmins = array(); $groupAdmins = array(); if ($this->SendForResourceAdmins()) { $resourceAdmins = $this->userViewRepo->GetResourceAdmins($reservationSeries->ResourceId()); } if ($this->SendForApplicationAdmins()) { $applicationAdmins = $this->userViewRepo->GetApplicationAdmins(); } if ($this->SendForGroupAdmins()) { $groupAdmins = $this->userViewRepo->GetGroupAdmins($reservationSeries->UserId()); } $admins = array_merge($resourceAdmins, $applicationAdmins, $groupAdmins); if (count($admins) == 0) { // skip if there is nobody to send to return; } $owner = $this->userRepo->LoadById($reservationSeries->UserId()); $resource = $reservationSeries->Resource(); $adminIds = array(); /** @var $admin UserDto */ foreach ($admins as $admin) { $id = $admin->Id(); if (array_key_exists($id, $adminIds) || $id == $owner->Id()) { // only send to each person once continue; } $adminIds[$id] = true; $message = $this->GetMessage($admin, $owner, $reservationSeries, $resource); ServiceLocator::GetEmailService()->Send($message); } }
/** * @param ReservationSeries $reservationSeries * @return ReservationRuleResult */ public function Validate($reservationSeries) { $userId = $reservationSeries->UserId(); $resourceId = $reservationSeries->ResourceId(); $isOk = !empty($userId) && !empty($resourceId); return new ReservationRuleResult($isOk, Resources::GetInstance()->GetString('InvalidReservationData')); }
/** * @param ReservationSeries $reservationSeries */ function Notify($reservationSeries) { $instance = $reservationSeries->CurrentInstance(); $owner = $this->userRepository->LoadById($reservationSeries->UserId()); foreach ($instance->UnchangedParticipants() as $userId) { $participant = $this->userRepository->LoadById($userId); $message = new ParticipantUpdatedEmail($owner, $participant, $reservationSeries, $this->attributeRepository); ServiceLocator::GetEmailService()->Send($message); } }
/** * @param ReservationSeries $reservation * @return void */ public function Notify($reservation) { $owner = $this->_userRepo->LoadById($reservation->UserId()); if ($this->ShouldSend($owner)) { $message = $this->GetMessage($owner, $reservation, $this->_attributeRepo); ServiceLocator::GetEmailService()->Send($message); } else { Log::Debug('Owner does not want these types of email notifications. Email=%s, ReferenceNumber=%s', $owner->EmailAddress(), $reservation->CurrentInstance()->ReferenceNumber()); } }
/** * @param ReservationSeries $reservation * @return ReservationRuleResult */ public function Validate($reservation) { $reservation->UserId(); $permissionService = $this->permissionServiceFactory->GetPermissionService(); $resourceIds = $reservation->AllResourceIds(); foreach ($resourceIds as $resourceId) { if (!$permissionService->CanAccessResource(new ReservationResource($resourceId), $reservation->BookedBy())) { return new ReservationRuleResult(false, Resources::GetInstance()->GetString('NoResourcePermission')); } } return new ReservationRuleResult(true); }
/** * @param ReservationSeries $reservationSeries */ function Notify($reservationSeries) { $owner = null; $instance = $reservationSeries->CurrentInstance(); foreach ($instance->UnchangedInvitees() as $userId) { if ($owner == null) { $owner = $this->userRepository->LoadById($reservationSeries->UserId()); } $invitee = $this->userRepository->LoadById($userId); $message = new InviteeAddedEmail($owner, $invitee, $reservationSeries, $this->attributeRepository); ServiceLocator::GetEmailService()->Send($message); } }
/** * @param ReservationSeries $reservationSeries * @return ReservationRuleResult */ public function Validate($reservationSeries) { $quotas = $this->quotaRepository->LoadAll(); $user = $this->userRepository->LoadById($reservationSeries->UserId()); $schedule = $this->scheduleRepository->LoadById($reservationSeries->ScheduleId()); foreach ($quotas as $quota) { if ($quota->ExceedsQuota($reservationSeries, $user, $schedule, $this->reservationViewRepository)) { Log::Debug('Quota exceeded. %s', $quota->ToString()); return new ReservationRuleResult(false, Resources::GetInstance()->GetString('QuotaExceeded')); } } return new ReservationRuleResult(); }
/** * @param ReservationSeries $reservationSeries * @return int newly created series_id */ private function InsertSeries(ReservationSeries $reservationSeries) { $database = ServiceLocator::GetDatabase(); $insertReservationSeries = new AddReservationSeriesCommand(Date::Now(), $reservationSeries->Title(), $reservationSeries->Description(), $reservationSeries->RepeatOptions()->RepeatType(), $reservationSeries->RepeatOptions()->ConfigurationString(), ReservationTypes::Reservation, $reservationSeries->StatusId(), $reservationSeries->UserId(), $reservationSeries->GetAllowParticipation()); $reservationSeriesId = $database->ExecuteInsert($insertReservationSeries); $reservationSeries->WithSeriesId($reservationSeriesId); $insertReservationResource = new AddReservationResourceCommand($reservationSeriesId, $reservationSeries->ResourceId(), ResourceLevel::Primary); $database->Execute($insertReservationResource); foreach ($reservationSeries->AdditionalResources() as $resource) { $insertReservationResource = new AddReservationResourceCommand($reservationSeriesId, $resource->GetResourceId(), ResourceLevel::Additional); $database->Execute($insertReservationResource); } foreach ($reservationSeries->Accessories() as $accessory) { $insertAccessory = new AddReservationAccessoryCommand($accessory->AccessoryId, $accessory->QuantityReserved, $reservationSeriesId); $database->Execute($insertAccessory); } foreach ($reservationSeries->AttributeValues() as $attribute) { $insertAttributeValue = new AddAttributeValueCommand($attribute->AttributeId, $attribute->Value, $reservationSeriesId, CustomAttributeCategory::RESERVATION); $database->Execute($insertAttributeValue); } foreach ($reservationSeries->AddedAttachments() as $attachment) { $this->AddReservationAttachment($attachment); } if ($reservationSeries->GetStartReminder()->Enabled()) { $reminder = $reservationSeries->GetStartReminder(); $insertAccessory = new AddReservationReminderCommand($reservationSeriesId, $reminder->MinutesPrior(), ReservationReminderType::Start); $database->Execute($insertAccessory); } if ($reservationSeries->GetEndReminder()->Enabled()) { $reminder = $reservationSeries->GetEndReminder(); $insertAccessory = new AddReservationReminderCommand($reservationSeriesId, $reminder->MinutesPrior(), ReservationReminderType::End); $database->Execute($insertAccessory); } return $reservationSeriesId; }
/** * @param ReservationSeries $reservationSeries * @return ReservationRuleResult */ public function Validate($reservationSeries) { return new ReservationRuleResult($this->userSession->UserId == $reservationSeries->UserId(), Resources::GetInstance()->GetString('NoReservationAccess')); }