openstackweb/events/code/infrastructure/factories/EventRegistrationRequestFac...

119 lines
3.7 KiB
PHP

<?php
/**
* Copyright 2014 Openstack Foundation
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
**/
/**
* Class EventRegistrationRequestFactory
*/
final class EventRegistrationRequestFactory
implements IEventRegistrationRequestFactory {
/**
* @param EventMainInfo $info
* @param EventPointOfContact $point_of_contact
* @param EventLocation $location
* @param EventDuration $duration
* @param SponsorInfo $sponsor
* @return IEventRegistrationRequest
*/
public function buildEventRegistrationRequest(EventMainInfo $info,
EventPointOfContact $point_of_contact,
EventLocation $location,
EventDuration $duration, SponsorInfo $sponsor = null)
{
$registration_request = new EventRegistrationRequest;
$registration_request->registerMainInfo($info);
$registration_request->registerPointOfContact($point_of_contact);
$registration_request->registerLocation($location);
$registration_request->registerDuration($duration);
if(!is_null($sponsor)){
$registration_request->registerSponsor($sponsor);
}
return $registration_request;
}
/**
* @param array $data
* @return EventMainInfo
*/
public function buildEventMainInfo(array $data)
{
$main_info = new EventMainInfo(trim($data['title']) ,trim($data['url']), 'Details');
return $main_info;
}
/**
* @param array $data
* @return EventLocation
*/
public function buildEventLocation(array $data)
{
$location = new EventLocation(trim($data['city']),trim(@$data['state']),trim($data['country']));
return $location;
}
/**
* @param array $data
* @return EventDuration
*/
public function buildEventDuration(array $data)
{
$duration = new EventDuration(
DateTime::createFromFormat('Y-m-d', $data['start_date']),
DateTime::createFromFormat('Y-m-d', $data['end_date']));
return $duration;
}
/**
* @param array $data
* @return SponsorInfo
*/
public function buildSponsorInfo(array $data)
{
if(isset($data['sponsor'])){
return new SponsorInfo(trim($data['sponsor']),trim(@$data['sponsor_url']));
}
return null;
}
public function buildEvent(IEventRegistrationRequest $request) {
$event = new EventPage;
$event->Title = $request->Title;
$event->ClassName = 'EventPage';
$event->EventLink = $request->Url;
$event->EventLinkLabel = $request->Label;
$event->EventStartDate = $request->StartDate;
$event->EventEndDate = $request->EndDate;
$event->EventLocation = (!empty($request->State))?sprintf("%s, %s, %s",$request->City,$request->State,$request->Country):sprintf("%s, %s",$request->City,$request->Country);
$event->IsSummit = false;
return $event;
}
public function buildEventAlertEmail(IEventRegistrationRequest $last)
{
$email = new EventAlertEmail;
$email->setLastEventRegistrationRequest($last);
return $email;
}
/**
* @param array $data
* @return EventPointOfContact
*/
public function buildPointOfContact(array $data)
{
$contact = new EventPointOfContact(trim($data['point_of_contact_name']),trim($data['point_of_contact_email']));
return $contact;
}
}