/** * @param ReservationSeries $reservationSeries * @return ReservationRuleResult */ public function Validate($reservationSeries) { $attachments = $reservationSeries->AddedAttachments(); $allowedExtensionsConfig = Configuration::Instance()->GetSectionKey(ConfigSection::UPLOADS, ConfigKeys::UPLOAD_RESERVATION_EXTENSIONS); if (empty($allowedExtensionsConfig) || empty($attachments)) { return new ReservationRuleResult(); } $allowedExtensions = str_replace('.', '', $allowedExtensionsConfig); $allowedExtensions = str_replace(' ', '', $allowedExtensions); $allowedExtensionList = explode(',', $allowedExtensions); foreach ($attachments as $attachment) { $isValid = in_array($attachment->FileExtension(), $allowedExtensionList); if (!$isValid) { return new ReservationRuleResult($isValid, Resources::GetInstance()->GetString('InvalidAttachmentExtension', $allowedExtensionsConfig)); } } 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; }