diff --git a/app/Http/Controllers/Apis/Protected/Summit/Factories/SummitSelectionPlanValidationRulesFactory.php b/app/Http/Controllers/Apis/Protected/Summit/Factories/SummitSelectionPlanValidationRulesFactory.php index f73b1e26..7884bb5b 100644 --- a/app/Http/Controllers/Apis/Protected/Summit/Factories/SummitSelectionPlanValidationRulesFactory.php +++ b/app/Http/Controllers/Apis/Protected/Summit/Factories/SummitSelectionPlanValidationRulesFactory.php @@ -27,6 +27,7 @@ final class SummitSelectionPlanValidationRulesFactory return [ 'name' => 'sometimes|string|max:255', 'is_enabled' => 'sometimes|boolean', + 'max_submission_allowed_per_user' => 'sometimes|integer|min:1', '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', @@ -38,6 +39,7 @@ final class SummitSelectionPlanValidationRulesFactory return [ 'name' => 'required|string|max:255', 'is_enabled' => 'required|boolean', + 'max_submission_allowed_per_user' => 'sometimes|integer|min:1', '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', diff --git a/app/ModelSerializers/Summit/SelectionPlanSerializer.php b/app/ModelSerializers/Summit/SelectionPlanSerializer.php index 79e37346..1f17b8d2 100644 --- a/app/ModelSerializers/Summit/SelectionPlanSerializer.php +++ b/app/ModelSerializers/Summit/SelectionPlanSerializer.php @@ -21,15 +21,16 @@ use ModelSerializers\SilverStripeSerializer; final class SelectionPlanSerializer extends SilverStripeSerializer { protected static $array_mappings = [ - 'Name' => 'name:json_string', - 'Enabled' => 'is_enabled:json_boolean', - 'SubmissionBeginDate' => 'submission_begin_date:datetime_epoch', - 'SubmissionEndDate' => 'submission_end_date:datetime_epoch', - 'VotingBeginDate' => 'voting_begin_date:datetime_epoch', - 'VotingEndDate' => 'voting_end_date:datetime_epoch', - 'SelectionBeginDate' => 'selection_begin_date:datetime_epoch', - 'SelectionEndDate' => 'selection_end_date:datetime_epoch', - 'SummitId' => 'summit_id:json_int', + 'Name' => 'name:json_string', + 'Enabled' => 'is_enabled:json_boolean', + 'SubmissionBeginDate' => 'submission_begin_date:datetime_epoch', + 'SubmissionEndDate' => 'submission_end_date:datetime_epoch', + 'MaxSubmissionAllowedPerUser' => 'max_submission_allowed_per_user:json_int', + 'VotingBeginDate' => 'voting_begin_date:datetime_epoch', + 'VotingEndDate' => 'voting_end_date:datetime_epoch', + 'SelectionBeginDate' => 'selection_begin_date:datetime_epoch', + 'SelectionEndDate' => 'selection_end_date:datetime_epoch', + 'SummitId' => 'summit_id:json_int', ]; /** diff --git a/app/ModelSerializers/Summit/SummitSerializer.php b/app/ModelSerializers/Summit/SummitSerializer.php index e1c5baf5..0012cd9f 100644 --- a/app/ModelSerializers/Summit/SummitSerializer.php +++ b/app/ModelSerializers/Summit/SummitSerializer.php @@ -33,6 +33,7 @@ class SummitSerializer extends SilverStripeSerializer 'Active' => 'active:json_boolean', 'TypeId' => 'type_id:json_int' , 'DatesLabel' => 'dates_label:json_string' , + 'MaxSubmissionAllowedPerUser' => 'max_submission_allowed_per_user:json_int', // calculated attributes 'PresentationVotesCount' => 'presentation_votes_count:json_int' , 'PresentationVotersCount' => 'presentation_voters_count:json_int' , diff --git a/app/Models/Foundation/Summit/Factories/SummitFactory.php b/app/Models/Foundation/Summit/Factories/SummitFactory.php index 4eade370..fc7f22b9 100644 --- a/app/Models/Foundation/Summit/Factories/SummitFactory.php +++ b/app/Models/Foundation/Summit/Factories/SummitFactory.php @@ -41,6 +41,10 @@ final class SummitFactory $summit->setTimeZoneId(trim($data['time_zone_id'])); } + if(isset($data['max_submission_allowed_per_user']) ){ + $summit->setMaxSubmissionAllowedPerUser(intval($data['max_submission_allowed_per_user'])); + } + if(isset($data['active']) ){ $summit->setActive(boolval($data['active'])); } diff --git a/app/Models/Foundation/Summit/Factories/SummitSelectionPlanFactory.php b/app/Models/Foundation/Summit/Factories/SummitSelectionPlanFactory.php index a25062c4..09757714 100644 --- a/app/Models/Foundation/Summit/Factories/SummitSelectionPlanFactory.php +++ b/app/Models/Foundation/Summit/Factories/SummitSelectionPlanFactory.php @@ -44,6 +44,10 @@ final class SummitSelectionPlanFactory if(isset($data['is_enabled'])) $selection_plan->setIsEnabled(boolval($data['is_enabled'])); + if(isset($data['max_submission_allowed_per_user']) ){ + $selection_plan->setMaxSubmissionAllowedPerUser(intval($data['max_submission_allowed_per_user'])); + } + 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']); diff --git a/app/Models/Foundation/Summit/SelectionPlan.php b/app/Models/Foundation/Summit/SelectionPlan.php index 42009783..992436d5 100644 --- a/app/Models/Foundation/Summit/SelectionPlan.php +++ b/app/Models/Foundation/Summit/SelectionPlan.php @@ -14,6 +14,7 @@ use App\Models\Utils\TimeZoneEntity; use Doctrine\Common\Collections\ArrayCollection; use models\summit\PresentationCategoryGroup; +use models\summit\Summit; use models\summit\SummitOwned; use models\utils\SilverstripeBaseModel; use Doctrine\ORM\Mapping AS ORM; @@ -44,6 +45,12 @@ class SelectionPlan extends SilverstripeBaseModel */ private $name; + /** + * @ORM\Column(name="MaxSubmissionAllowedPerUser", type="integer") + * @var int + */ + private $max_submission_allowed_per_user; + /** * @ORM\Column(name="Enabled", type="boolean") * @var bool @@ -245,8 +252,9 @@ class SelectionPlan extends SilverstripeBaseModel public function __construct() { parent::__construct(); - $this->is_enabled = false; - $this->category_groups = new ArrayCollection; + $this->is_enabled = false; + $this->category_groups = new ArrayCollection; + $this->max_submission_allowed_per_user = Summit::DefaultMaxSubmissionAllowedPerUser; } /** @@ -273,4 +281,20 @@ class SelectionPlan extends SilverstripeBaseModel $this->category_groups->removeElement($track_group); } + /** + * @return int + */ + public function getMaxSubmissionAllowedPerUser() + { + return $this->max_submission_allowed_per_user; + } + + /** + * @param int $max_submission_allowed_per_user + */ + public function setMaxSubmissionAllowedPerUser($max_submission_allowed_per_user) + { + $this->max_submission_allowed_per_user = $max_submission_allowed_per_user; + } + } \ No newline at end of file