Fixed summit validation dates rules

Change-Id: I34148704d50a6d58b94f5e63a78023ef8ed37c60
This commit is contained in:
Sebastian Marcet 2018-04-18 12:32:46 -03:00
parent 6f70e897f0
commit 5c5e432dfa
4 changed files with 176 additions and 91 deletions

View File

@ -23,17 +23,17 @@ final class SummitValidationRulesFactory
return [
'name' => 'sometimes|string|max:50',
'start_date' => 'sometimes|date_format:U',
'end_date' => 'required_with:start_date|date_format:U|after:start_date',
'submission_begin_date' => 'sometimes|date_format:U',
'submission_end_date' => 'required_with:submission_begin_date|date_format:U|after:submission_begin_date',
'voting_begin_date' => 'sometimes|date_format:U',
'voting_end_date' => 'required_with:voting_begin_date|date_format:U|after:voting_begin_date',
'selection_begin_date' => 'sometimes|date_format:U',
'selection_end_date' => 'required_with:selection_begin_date|date_format:U|after:selection_begin_date',
'registration_begin_date' => 'sometimes|date_format:U',
'registration_end_date' => 'required_with:registration_begin_date|date_format:U|after:registration_begin_date',
'start_showing_venues_date' => 'sometimes|date_format:U|before:start_date',
'schedule_start_date' => 'sometimes|date_format:U',
'end_date' => 'required_with:start_date|date_format:U|after_or_equal:start_date',
'submission_begin_date' => 'nullable|date_format:U',
'submission_end_date' => 'nullable|required_with:submission_begin_date|date_format:U|after_or_equal:submission_begin_date',
'voting_begin_date' => 'nullable|date_format:U',
'voting_end_date' => 'nullable|required_with:voting_begin_date|date_format:U|after_or_equal:voting_begin_date',
'selection_begin_date' => 'nullable|date_format:U',
'selection_end_date' => 'nullable|required_with:selection_begin_date|date_format:U|after_or_equal:selection_begin_date',
'registration_begin_date' => 'nullable|date_format:U',
'registration_end_date' => 'nullable|required_with:registration_begin_date|date_format:U|after_or_equal:registration_begin_date',
'start_showing_venues_date' => 'nullable|date_format:U|before_or_equal:start_date',
'schedule_start_date' => 'nullable|date_format:U|after_or_equal:start_date|before_or_equal:end_date',
'active' => 'sometimes|boolean',
'dates_label' => 'sometimes|string',
'time_zone_id' => 'sometimes|timezone',
@ -42,31 +42,31 @@ final class SummitValidationRulesFactory
'calendar_sync_name' => 'sometimes|string|max:255',
'calendar_sync_desc' => 'sometimes|string',
'link' => 'sometimes|url',
'registration_link' => 'sometimes|url',
'max_submission_allowed_per_user' => 'sometimes|integer|min:1',
'secondary_registration_link' => 'sometimes|url',
'secondary_registration_label' => 'sometimes|string',
'registration_link' => 'sometimes|url',
'max_submission_allowed_per_user' => 'sometimes|integer|min:1',
'secondary_registration_link' => 'sometimes|url',
'secondary_registration_label' => 'sometimes|string',
];
}
return [
'name' => 'required|string|max:50',
'start_date' => 'required|date_format:U',
'end_date' => 'required_with:start_date|date_format:U|after:start_date',
'submission_begin_date' => 'sometimes|date_format:U',
'submission_end_date' => 'required_with:submission_begin_date|date_format:U|after:submission_begin_date',
'voting_begin_date' => 'sometimes|date_format:U',
'voting_end_date' => 'required_with:voting_begin_date|date_format:U|after:voting_begin_date',
'selection_begin_date' => 'sometimes|date_format:U',
'selection_end_date' => 'required_with:selection_begin_date|date_format:U|after:selection_begin_date',
'registration_begin_date' => 'sometimes|date_format:U',
'registration_end_date' => 'required_with:registration_begin_date|date_format:U|after:registration_begin_date',
'start_showing_venues_date' => 'sometimes|date_format:U|before:start_date',
'schedule_start_date' => 'sometimes|date_format:U',
'end_date' => 'required_with:start_date|date_format:U|after_or_equal:start_date',
'submission_begin_date' => 'nullable|date_format:U',
'submission_end_date' => 'nullable|required_with:submission_begin_date|date_format:U|after_or_equal:submission_begin_date',
'voting_begin_date' => 'nullable|date_format:U',
'voting_end_date' => 'nullable|required_with:voting_begin_date|date_format:U|after_or_equal:voting_begin_date',
'selection_begin_date' => 'nullable|date_format:U',
'selection_end_date' => 'nullable|required_with:selection_begin_date|date_format:U|after_or_equal:selection_begin_date',
'registration_begin_date' => 'nullable|date_format:U',
'registration_end_date' => 'nullable|required_with:registration_begin_date|date_format:U|after_or_equal:registration_begin_date',
'start_showing_venues_date' => 'nullable|date_format:U|before_or_equal:start_date',
'schedule_start_date' => 'nullable|date_format:U|after_or_equal:start_date|before_or_equal:end_date',
'active' => 'sometimes|boolean',
'dates_label' => 'sometimes|string',
'time_zone_id' => 'required|timezone',
'external_summit_id' => 'sometimes|string',
'external_summit_id' => 'nullable|string',
'available_on_api' => 'sometimes|boolean',
'calendar_sync_name' => 'sometimes|string|max:255',
'calendar_sync_desc' => 'sometimes|string',

View File

@ -65,87 +65,122 @@ final class SummitFactory
$summit->setCalendarSyncDesc(trim($data['calendar_sync_desc']));
}
if(isset($data['start_date']) && isset($data['end_date'])) {
$start_datetime = intval($data['start_date']);
$start_datetime = new \DateTime("@$start_datetime");
$start_datetime->setTimezone($summit->getTimeZone());
$end_datetime = intval($data['end_date']);
$end_datetime = new \DateTime("@$end_datetime");
$end_datetime->setTimezone($summit->getTimeZone());
if(array_key_exists('start_date', $data) && array_key_exists('end_date', $data)) {
if (isset($data['start_date']) && isset($data['end_date'])) {
$start_datetime = intval($data['start_date']);
$start_datetime = new \DateTime("@$start_datetime");
$start_datetime->setTimezone($summit->getTimeZone());
$end_datetime = intval($data['end_date']);
$end_datetime = new \DateTime("@$end_datetime");
$end_datetime->setTimezone($summit->getTimeZone());
// set local time from UTC
$summit->setBeginDate($start_datetime);
$summit->setEndDate($end_datetime);
// set local time from UTC
$summit->setBeginDate($start_datetime);
$summit->setEndDate($end_datetime);
}
else{
$summit->clearBeginEndDates();
}
}
if(isset($data['submission_begin_date']) && isset($data['submission_end_date'])) {
$start_datetime = intval($data['submission_begin_date']);
$start_datetime = new \DateTime("@$start_datetime");
$start_datetime->setTimezone($summit->getTimeZone());
$end_datetime = intval($data['submission_end_date']);
$end_datetime = new \DateTime("@$end_datetime");
$end_datetime->setTimezone($summit->getTimeZone());
if(array_key_exists('submission_begin_date', $data) && array_key_exists('submission_end_date', $data)) {
if (isset($data['submission_begin_date']) && isset($data['submission_end_date'])) {
$start_datetime = intval($data['submission_begin_date']);
$start_datetime = new \DateTime("@$start_datetime");
$start_datetime->setTimezone($summit->getTimeZone());
$end_datetime = intval($data['submission_end_date']);
$end_datetime = new \DateTime("@$end_datetime");
$end_datetime->setTimezone($summit->getTimeZone());
// set local time from UTC
$summit->setSubmissionBeginDate($start_datetime);
$summit->setSubmissionEndDate($end_datetime);
// set local time from UTC
$summit->setSubmissionBeginDate($start_datetime);
$summit->setSubmissionEndDate($end_datetime);
}
else{
$summit->clearSubmissionDates();
}
}
if(isset($data['voting_begin_date']) && isset($data['voting_end_date'])) {
$start_datetime = intval($data['voting_begin_date']);
$start_datetime = new \DateTime("@$start_datetime");
$start_datetime->setTimezone($summit->getTimeZone());
$end_datetime = intval($data['voting_end_date']);
$end_datetime = new \DateTime("@$end_datetime");
$end_datetime->setTimezone($summit->getTimeZone());
if(array_key_exists('voting_begin_date', $data) && array_key_exists('voting_end_date', $data)) {
if (isset($data['voting_begin_date']) && isset($data['voting_end_date'])) {
$start_datetime = intval($data['voting_begin_date']);
$start_datetime = new \DateTime("@$start_datetime");
$start_datetime->setTimezone($summit->getTimeZone());
$end_datetime = intval($data['voting_end_date']);
$end_datetime = new \DateTime("@$end_datetime");
$end_datetime->setTimezone($summit->getTimeZone());
// set local time from UTC
$summit->setVotingBeginDate($start_datetime);
$summit->setVotingEndDate($end_datetime);
// set local time from UTC
$summit->setVotingBeginDate($start_datetime);
$summit->setVotingEndDate($end_datetime);
}
else{
$summit->clearVotingDates();
}
}
if(isset($data['selection_begin_date']) && isset($data['selection_end_date'])) {
$start_datetime = intval($data['selection_begin_date']);
$start_datetime = new \DateTime("@$start_datetime");
$start_datetime->setTimezone($summit->getTimeZone());
$end_datetime = intval($data['selection_end_date']);
$end_datetime = new \DateTime("@$end_datetime");
$end_datetime->setTimezone($summit->getTimeZone());
if(array_key_exists('selection_begin_date', $data) && array_key_exists('selection_end_date', $data)) {
if (isset($data['selection_begin_date']) && isset($data['selection_end_date'])) {
$start_datetime = intval($data['selection_begin_date']);
$start_datetime = new \DateTime("@$start_datetime");
$start_datetime->setTimezone($summit->getTimeZone());
$end_datetime = intval($data['selection_end_date']);
$end_datetime = new \DateTime("@$end_datetime");
$end_datetime->setTimezone($summit->getTimeZone());
// set local time from UTC
$summit->setSelectionBeginDate($start_datetime);
$summit->setSelectionEndDate($end_datetime);
// set local time from UTC
$summit->setSelectionBeginDate($start_datetime);
$summit->setSelectionEndDate($end_datetime);
}
else{
$summit->clearSelectionDates();
}
}
if(isset($data['registration_begin_date']) && isset($data['registration_end_date'])) {
$start_datetime = intval($data['registration_begin_date']);
$start_datetime = new \DateTime("@$start_datetime");
$start_datetime->setTimezone($summit->getTimeZone());
$end_datetime = intval($data['registration_end_date']);
$end_datetime = new \DateTime("@$end_datetime");
$end_datetime->setTimezone($summit->getTimeZone());
if(array_key_exists('registration_begin_date', $data) && array_key_exists('registration_end_date', $data)) {
if (isset($data['registration_begin_date']) && isset($data['registration_end_date'])) {
$start_datetime = intval($data['registration_begin_date']);
$start_datetime = new \DateTime("@$start_datetime");
$start_datetime->setTimezone($summit->getTimeZone());
$end_datetime = intval($data['registration_end_date']);
$end_datetime = new \DateTime("@$end_datetime");
$end_datetime->setTimezone($summit->getTimeZone());
// set local time from UTC
$summit->setRegistrationBeginDate($start_datetime);
$summit->setRegistrationEndDate($end_datetime);
// set local time from UTC
$summit->setRegistrationBeginDate($start_datetime);
$summit->setRegistrationEndDate($end_datetime);
}
else{
$summit->clearRegistrationDates();
}
}
if(isset($data['start_showing_venues_date'])) {
$start_datetime = intval($data['start_showing_venues_date']);
$start_datetime = new \DateTime("@$start_datetime");
$start_datetime->setTimezone($summit->getTimeZone());
if(array_key_exists('start_showing_venues_date', $data)){
if (isset($data['start_showing_venues_date'])) {
$start_datetime = intval($data['start_showing_venues_date']);
$start_datetime = new \DateTime("@$start_datetime");
$start_datetime->setTimezone($summit->getTimeZone());
// set local time from UTC
$summit->setStartShowingVenuesDate($start_datetime);
// set local time from UTC
$summit->setStartShowingVenuesDate($start_datetime);
}
else{
$summit->clearStartShowingVenuesDate();
}
}
if(isset($data['schedule_start_date'])) {
$start_datetime = intval($data['schedule_start_date']);
$start_datetime = new \DateTime("@$start_datetime");
$start_datetime->setTimezone($summit->getTimeZone());
if(array_key_exists('schedule_start_date', $data)) {
if (isset($data['schedule_start_date'])) {
$start_datetime = intval($data['schedule_start_date']);
$start_datetime = new \DateTime("@$start_datetime");
$start_datetime->setTimezone($summit->getTimeZone());
// set local time from UTC
$summit->setScheduleDefaultStartDate($start_datetime);
// set local time from UTC
$summit->setScheduleDefaultStartDate($start_datetime);
}
else{
$summit->clearScheduleDefaultStartDate();
}
}
if(isset($data['link']) ){

View File

@ -390,6 +390,10 @@ class Summit extends SilverstripeBaseModel
$this->schedule_default_start_date = $this->convertDateFromTimeZone2UTC($schedule_default_start_date);
}
public function clearScheduleDefaultStartDate(){
$this->schedule_default_start_date = null;
}
/**
* @return mixed
*/
@ -406,6 +410,14 @@ class Summit extends SilverstripeBaseModel
$this->begin_date = $this->convertDateFromTimeZone2UTC($begin_date);
}
/**
* @return $this
*/
public function clearBeginEndDates(){
$this->begin_date = $this->end_date = null;
return $this;
}
/**
* @return \DateTime
*/
@ -454,6 +466,10 @@ class Summit extends SilverstripeBaseModel
$this->start_showing_venues_date = $this->convertDateFromTimeZone2UTC($start_showing_venues_date);
}
public function clearStartShowingVenuesDate(){
$this->start_showing_venues_date = null;
}
/**
* @return boolean
*/
@ -1393,6 +1409,14 @@ SQL;
$this->submission_begin_date = $this->convertDateFromTimeZone2UTC($submission_begin_date);
}
/**
* @return $this
*/
public function clearSubmissionDates(){
$this->submission_begin_date = $this->submission_end_date = null;
return $this;
}
/**
* @return DateTime
*/
@ -1423,6 +1447,14 @@ SQL;
$this->voting_begin_date = $this->convertDateFromTimeZone2UTC($voting_begin_date);
}
/**
* @return $this
*/
public function clearVotingDates(){
$this->voting_begin_date = $this->voting_end_date = null;
return $this;
}
/**
* @return DateTime
*/
@ -1453,6 +1485,14 @@ SQL;
$this->selection_begin_date = $this->convertDateFromTimeZone2UTC($selection_begin_date);
}
/**
* @return $this
*/
public function clearSelectionDates(){
$this->selection_begin_date = $this->selection_end_date = null;
return $this;
}
/**
* @return DateTime
*/
@ -1483,6 +1523,14 @@ SQL;
$this->registration_begin_date = $this->convertDateFromTimeZone2UTC($registration_begin_date);
}
/**
* @return $this
*/
public function clearRegistrationDates(){
$this->registration_begin_date = $this->registration_end_date = null;
return $this;
}
/**
* @return DateTime
*/

View File

@ -127,7 +127,7 @@ final class OAuth2SummitApiTest extends ProtectedApiTest
'name' => 'Vancouver, BC',
'start_date' => 1522853212,
'end_date' => 1542853212,
'time_zone_id' => 'America/Argentina/Buenos_Aires'
'time_zone_id' => 'America/Argentina/Buenos_Aires',
];
$headers = [
@ -158,7 +158,9 @@ final class OAuth2SummitApiTest extends ProtectedApiTest
'name' => $name,
'start_date' => 1522853212,
'end_date' => 1542853212,
'time_zone_id' => 'America/Argentina/Buenos_Aires'
'time_zone_id' => 'America/Argentina/Buenos_Aires',
'submission_begin_date' => null,
'submission_end_date' => null,
];
$headers = [