/**
  * @param array $data
  * @param IMessageSenderService $new_purchase_order_message_sender
  * @throws EntityValidationException
  * @return mixed
  */
 public function registerPurchaseOrder(array $data, IMessageSenderService $new_purchase_order_message_sender)
 {
     $repository = $this->repository;
     $factory = $this->factory;
     $summit_packages_repository = $this->summit_packages_repository;
     $this->tx_manager->transaction(function () use($data, $repository, $summit_packages_repository, $factory, $new_purchase_order_message_sender) {
         $rules = array('package_id' => 'required|integer', 'summit_page_id' => 'required|integer', 'first_name' => 'required|text|max:250', 'last_name' => 'required|text|max:250', 'email' => 'required|text|max:250|email', 'organization' => 'required|text', 'organization_id' => 'sometimes|integer');
         $messages = array('first_name.required' => ':attribute is required', 'first_name.text' => ':attribute should be valid text.', 'first_name.max' => ':attribute should have less than 250 chars.', 'last_name.required' => ':attribute is required', 'last_name.text' => ':attribute should be valid text.', 'last_name.max' => ':attribute should have less than 250 chars.', 'email.required' => ':attribute is required', 'email.text' => ':attribute should be valid text.', 'email.max' => ':attribute should have less than 250 chars.', 'email.email' => ':attribute should be valid email.', 'organization.required' => ':attribute is required', 'organization.text' => ':attribute should be valid text.', 'package_id.required' => ':attribute is required', 'package_id.integer' => ':attribute should be valid integer.', 'summit_page_id.required' => ':attribute is required', 'summit_page_id.integer' => ':attribute should be valid integer.', 'organization_id.integer' => ':attribute should be valid integer.');
         $validator = ValidatorService::make($data, $rules, $messages);
         if ($validator->fails()) {
             throw new EntityValidationException($messages);
         }
         $package = $summit_packages_repository->getById($data['package_id']);
         if (is_null($package)) {
             throw new EntityValidationException(EntityValidationException::buildMessage(sprintf('package id %s does not exists!', $data['package_id'])));
         }
         if ($package->SoldOut()) {
             throw new EntityValidationException(EntityValidationException::buildMessage(sprintf('package id %s sold out!', $data['package_id'])));
         }
         if (!$package->isParentPage($data['summit_page_id'])) {
             throw new EntityValidationException(EntityValidationException::buildMessage(sprintf('package id %s does not belong to page id %s!', $data['package_id'], $data['summit_page_id'])));
         }
         $purchase_order = $factory->build($data);
         $repository->add($purchase_order);
         $new_purchase_order_message_sender->send($purchase_order);
     });
 }
 public function addRelease()
 {
     $json = $this->getJsonRequest();
     if (!$json) {
         return $this->serverError();
     }
     $rules = array('name' => 'required|text', 'release_number' => 'required|text', 'release_date' => 'required|date', 'release_notes_url' => 'required|url');
     $messages = array('name.required' => ':attribute is required', 'name.text' => ':attribute should be valid text.', 'release_number.required' => ':attribute is required', 'release_number.text' => ':attribute should be valid text.', 'release_date.required' => ':attribute is required', 'release_date.date' => ':attribute should be valid date (y-m-d).', 'release_notes_url.required' => ':attribute is required', 'release_notes_url.url' => ':attribute should be valid url.');
     $validator = ValidatorService::make($json, $rules, $messages);
     if ($validator->fails()) {
         return $this->validationError($validator->messages());
     }
     $date = new DateTime($json['release_date']);
     $id = $this->manager->registerRelease($this->factory->buildOpenStackRelease($json['name'], $json['release_number'], $date, $json['release_notes_url']));
     return $this->created($id);
 }
 /**
  * @param array $data
  * @return IValidator
  */
 public function buildValidatorForNewsRejection(array $data)
 {
     $rules = array('custom_reject_message' => 'sometimes|text');
     $messages = array('custom_reject_message.text' => ':attribute should be valid text.');
     return ValidatorService::make($data, $rules, $messages);
 }
 /**
  * @param array $data
  * @return IValidator
  */
 public function buildValidatorForJob(array $data)
 {
     $rules = array('title' => 'required|text|max:100', 'url' => 'required', 'description' => 'required|htmltext', 'instructions' => 'required|htmltext', 'company' => 'required|text', 'job_type' => 'required|text');
     $messages = array('title.required' => ':attribute is required', 'title.text' => ':attribute should be valid text.', 'title.max' => ':attribute should have less than 100 chars.', 'url.required' => ':attribute is required', 'description.required' => ':attribute is required', 'description.text' => ':attribute should be valid text.', 'instructions.required' => ':attribute is required', 'instructions.htmltext' => ':attribute should be valid text.', 'company.required' => ':attribute is required', 'company.text' => ':attribute should be valid text.', 'job_type.required' => ':attribute is required', 'job_type.text' => ':attribute should be valid text.');
     return ValidatorService::make($data, $rules, $messages);
 }
 /**
  * Handles the form submission that creates a new speaker.
  * Checks for existence, and uses existing if found
  * @param   $data array
  * @param   $form Form
  * @return  SSViewer
  */
 public function doAddSpeaker($data, $form)
 {
     try {
         $me = Convert::raw2sql($data['SpeakerType']) == 'Me';
         $email = $me ? Member::currentUser()->Email : Convert::raw2sql($data['EmailAddress']);
         $rules = array('SpeakerType' => 'required', 'EmailAddress' => 'sometimes|required_if:SpeakerType,Else');
         $messages = array('SpeakerType.required' => ':attribute is required.', 'EmailAddress.sometimes' => 'Please specify an email address.', 'EmailAddress.required_if' => 'Please specify an email address.');
         $member_id = intval($data['MemberId']);
         $speaker_id = intval($data['SpeakerId']);
         $provided_email = !filter_var($email, FILTER_VALIDATE_EMAIL) === false;
         $validator = ValidatorService::make($data, $rules, $messages);
         $member_repository = $this->getParent()->getMemberRepository();
         $speaker_repository = $this->getParent()->getSpeakerRepository();
         if ($validator->fails()) {
             throw new EntityValidationException($validator->messages());
         }
         if ($member_id === 0 && $speaker_id === 0 && !$provided_email) {
             throw new EntityValidationException('Please specify an email address.');
         }
         $member = $me ? Member::currentUser() : $member_repository->getById($member_id);
         if (is_null($member) && $provided_email) {
             $member = $member_repository->findByEmail($email);
         }
         $speaker = $speaker_repository->getById($speaker_id);
         $speaker = $this->getParent()->getPresentationManager()->addSpeakerByEmailTo($this->presentation, $email, $member, $speaker);
         return $this->parent->redirect(Controller::join_links($this->Link(), 'speaker', $speaker->getIdentifier()));
     } catch (EntityValidationException $ex1) {
         SS_Log::log($ex1->getMessage(), SS_Log::WARN);
         $form->sessionMessage($ex1->getMessage(), 'bad');
         return $this->redirectBack();
     } catch (Exception $ex) {
         SS_Log::log($ex->getMessage(), SS_Log::ERR);
         $form->sessionMessage('There was an error with your request.', 'bad');
         return $this->redirectBack();
     }
 }
 public function addVersion()
 {
     try {
         $json = $this->getJsonRequest();
         if (!$json) {
             return $this->serverError();
         }
         $component_id = (int) $this->request->param('COMPONENT_ID');
         $rules = array('version' => 'required|text', 'status' => 'required|versionstatus');
         $messages = array('version.required' => ':attribute is required', 'version.text' => ':attribute should be valid text.', 'status.required' => ':attribute is required', 'status.versionstatus' => ':attribute should be valid api version status.');
         $validator = ValidatorService::make($json, $rules, $messages);
         if ($validator->fails()) {
             return $this->validationError($validator->messages());
         }
         $component = $this->factory->buildOpenStackComponentById($component_id);
         $version = $this->factory->buildOpenStackApiVersion($json['version'], $json['status'], $component);
         return $this->created($this->manager->registerVersion($version));
     } catch (EntityAlreadyExistsException $ex1) {
         return $this->addingDuplicate($ex1->getMessage());
     } catch (NotFoundEntityException $ex2) {
         return $this->notFound($ex2->getMessage());
     } catch (Exception $ex) {
         return $this->serverError();
     }
 }
 public function buildValidatorForCompanyService(array $data)
 {
     $rules = array('name' => 'required|text', 'overview' => 'required|text|max:250', 'active' => 'required|boolean', 'company_id' => 'required|integer', 'call_2_action_uri' => 'required|url', 'compatible_compute' => 'required|boolean', 'compatible_storage' => 'required|boolean', 'compatible_federated_identity' => 'required|boolean');
     $messages = array('name.required' => ':attribute is required', 'name.text' => ':attribute should be valid text.', 'overview.required' => ':attribute is required', 'overview.text' => ':attribute should be valid text.', 'overview.max' => ':attribute should have less than 250 chars.', 'call_2_action_uri.required' => ':attribute is required', 'call_2_action_uri.url' => ':attribute should be valid url.', 'active.required' => ':attribute is required', 'active.boolean' => ':attribute should be valid boolean value', 'company_id.required' => ':attribute is required', 'company_id.boolean' => ':attribute should be valid integer value');
     return ValidatorService::make($data, $rules, $messages);
 }
 /**
  * @param array $data
  * @return ValidatorService
  */
 public function buildValidatorForTeam(array $data)
 {
     $rules = array('name' => 'required|text', 'company_id' => 'required|integer');
     $messages = array('name.required' => ':attribute is required', 'name.text' => ':attribute should be valid text.', 'company_id.required' => ':attribute is required', 'company_id.integer' => ':attribute should be valid integer.');
     return ValidatorService::make($data, $rules, $messages);
 }
 /**
  * @param array $data
  * @return IValidator
  */
 public function buildValidatorForEventRejection(array $data)
 {
     $rules = array('send_rejection_email' => 'required|boolean', 'custom_reject_message' => 'sometimes|text');
     $messages = array('send_rejection_email.required' => ':attribute is required', 'send_rejection_email.boolean' => ':attribute should be valid boolean.', 'custom_reject_message.text' => ':attribute should be valid text.');
     return ValidatorService::make($data, $rules, $messages);
 }
 /**
  * @param array $data
  * @return IValidator
  */
 public function buildValidatorForOffice(array $data)
 {
     $rules = array('address_1' => 'sometimes|text', 'address_2' => 'sometimes|text', 'zip_code ' => 'sometimes|text', 'state' => 'sometimes|text', 'city' => 'required|text', 'country' => 'required|text', 'lat' => 'required|float', 'lng' => 'required|float');
     $messages = array('name.required' => '(office) - :attribute is required', 'name.text' => '(office) - :attribute should be valid text.', 'country.required' => '(office) - :attribute is required', 'country.text' => '(office) - :attribute should be valid text.', 'lat.required' => '(office) - :attribute is required.', 'lat.float' => '(office) - :attribute should be valid float number.', 'lng.required' => '(office) - :attribute is required.', 'lng.float' => '(office) - :attribute should be valid float number.', 'address_1.text' => '(office) - :attribute should be valid text.', 'address_2.text' => '(office) - :attribute should be valid text.', 'zip_code.text' => '(office) - :attribute should be valid text.', 'state.text' => '(office) - :attribute should be valid text.');
     return ValidatorService::make($data, $rules, $messages);
 }