コード例 #1
0
 /**
  * @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'));
 }
コード例 #2
0
 /**
  * @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);
     }
 }
コード例 #3
0
 /**
  * @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;
 }