Skip to content

Commit 0f9f4e6

Browse files
committed
Summit Events
Fixed occupancy updates Change-Id: I125a3097acc56523e6ec5d0ccc878a012e504a4c
1 parent ac955e1 commit 0f9f4e6

File tree

8 files changed

+43
-27
lines changed

8 files changed

+43
-27
lines changed

app/Http/Controllers/Apis/Protected/Summit/Factories/SummitEventValidationRulesFactory.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
<?php namespace App\Http\Controllers;
2+
use models\summit\SummitEvent;
3+
24
/**
35
* Copyright 2021 OpenStack Foundation
46
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -60,7 +62,7 @@ public static function build(array $data, bool $update = false): array
6062
'links' => 'sometimes|url_array',
6163
// group event
6264
'groups' => 'sometimes|int_array',
63-
'occupancy' => 'sometimes|in:EMPTY,25%,50%,75%,FULL',
65+
'occupancy' => 'sometimes|in:'.join(',', SummitEvent::ValidOccupanciesValues),
6466
'selection_plan_id' => 'sometimes|integer',
6567
'disclaimer_accepted' => 'sometimes|boolean',
6668
'created_by_id' => 'sometimes|integer',

app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitEventsApiController.php

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -651,6 +651,7 @@ public function addEvent($summit_id)
651651
});
652652
}
653653

654+
654655
/**
655656
* @param $summit_id
656657
* @param $event_id
@@ -666,10 +667,6 @@ public function updateEvent($summit_id, $event_id)
666667
if (is_null($summit))
667668
return $this->error404();
668669

669-
if (!Request::isJson())
670-
return $this->error400();
671-
$data = Request::json();
672-
673670
$current_member = $this->resource_server_context->getCurrentUser();
674671
if (is_null($current_member))
675672
return $this->error403();
@@ -678,10 +675,11 @@ public function updateEvent($summit_id, $event_id)
678675
if (is_null($event))
679676
return $this->error404();
680677

681-
$isAdmin = $current_member->isAdmin() || $current_member->isSummitAdmin();
678+
$isAdmin = $current_member->isSummitAllowed($summit);
682679
$isTrackChair = $summit->isTrackChairAdmin($current_member) || $summit->isTrackChair($current_member, $event->getCategory());
683680

684-
$payload = $data->all();
681+
$payload = $this->getJsonData();
682+
685683
// Creates a Validator instance and validates the data.
686684
$rules = $isAdmin ? SummitEventValidationRulesFactory::build($payload, true) : null;
687685
if(is_null($rules)){
@@ -691,16 +689,8 @@ public function updateEvent($summit_id, $event_id)
691689
if(is_null($rules))
692690
return $this->error403();
693691

694-
$validation = Validator::make($payload, $rules);
695-
696-
if ($validation->fails()) {
697-
$messages = $validation->messages()->toArray();
698692

699-
return $this->error412
700-
(
701-
$messages
702-
);
703-
}
693+
$payload = $this->getJsonPayload($rules, true);
704694

705695
$fields = [
706696
'title',

app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitLocationsApiController.php

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -381,11 +381,12 @@ public function getLocation($summit_id, $location_id)
381381
private function _getLocationEvents($summit_id, $location_id, $published = true)
382382
{
383383
$summit = SummitFinderStrategyFactory::build($this->repository, $this->resource_server_context)->find($summit_id);
384-
if (is_null($summit))
385-
if (is_null($summit)) return $this->error404();
384+
if (is_null($summit)) return $this->error404();
386385

387386
$location = null;
388387

388+
$current_user = $this->resource_server_context->getCurrentUser();
389+
389390
if (strtolower($location_id) !== "tbd" && intval($location_id) !== 0) {
390391
$location = $summit->getLocation(intval($location_id));
391392
if (is_null($location)) return $this->error404();
@@ -437,7 +438,10 @@ function ($filter) use($summit_id, $location, $published){
437438

438439
return $filter;
439440
},
440-
function () {
441+
function () use($summit, $current_user) {
442+
if(!is_null($current_user) && $current_user->isSummitAllowed($summit))
443+
return SerializerRegistry::SerializerType_Admin;
444+
441445
return SerializerRegistry::SerializerType_Public;
442446
},
443447
null,

app/ModelSerializers/Summit/AdminSummitEventSerializer.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,14 @@
1818
*/
1919
class AdminSummitEventSerializer extends SummitEventSerializer
2020
{
21+
protected static $array_mappings = [
22+
'Occupancy' => 'occupancy:json_string',
23+
];
24+
25+
protected static $allowed_fields = [
26+
'occupancy',
27+
];
28+
2129
/**
2230
* @param string|null $relation
2331
* @return string

app/ModelSerializers/Summit/SummitEventSerializer.php

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,7 @@
1212
* limitations under the License.
1313
**/
1414

15-
use App\Facades\ResourceServerContext;
1615
use Libs\ModelSerializers\AbstractSerializer;
17-
use models\main\Member;
1816
use models\summit\SummitEvent;
1917

2018
/**

app/Models/Foundation/Summit/Events/SummitEvent.php

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -999,16 +999,31 @@ public function setRSVPMaxUserWaitListNumber($rsvp_max_user_wait_list_number)
999999
/**
10001000
* @return string
10011001
*/
1002-
public function getOccupancy()
1002+
public function getOccupancy():?string
10031003
{
10041004
return $this->occupancy;
10051005
}
10061006

1007+
const OccupancyEmpty = 'EMPTY';
1008+
const Occupancy25_Percent = '25%';
1009+
const Occupancy50_Percent = '50%';
1010+
const Occupancy75_Percent = '75%';
1011+
const OccupancyFull = 'FULL';
1012+
1013+
const ValidOccupanciesValues = [
1014+
self::OccupancyEmpty,
1015+
self::Occupancy25_Percent,
1016+
self::Occupancy50_Percent,
1017+
self::Occupancy75_Percent,
1018+
self::OccupancyFull
1019+
];
10071020
/**
10081021
* @param string $occupancy
10091022
*/
1010-
public function setOccupancy($occupancy)
1023+
public function setOccupancy(string $occupancy)
10111024
{
1025+
if(!in_array($occupancy, self::ValidOccupanciesValues))
1026+
throw new ValidationException(sprintf("occupancy %s is not valid", $occupancy));
10121027
$this->occupancy = $occupancy;
10131028
}
10141029

app/Services/Model/Imp/AbstractPublishService.php

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,7 @@ protected function updateEventDates
145145
);
146146

147147
if (isset($data['start_date']) && isset($data['end_date'])) {
148+
148149
// we are setting dates
149150

150151
if (!$publishable_event->hasType()) {
@@ -190,10 +191,6 @@ protected function updateEventDates
190191
$publishable_event->setStartDate($start_datetime);
191192
$publishable_event->setEndDate($end_datetime);
192193
}
193-
else{
194-
// clear dates
195-
$publishable_event->clearPublishingDates();
196-
}
197194

198195
return $this->updateDuration($data, $summit, $publishable_event);
199196
}

app/Services/Model/Imp/SummitService.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -675,6 +675,7 @@ private function saveOrUpdateEvent(Summit $summit, array $data, $event_id = null
675675
}
676676

677677
$event = null;
678+
678679
// existing event
679680

680681
if (!is_null($event_id) && intval($event_id) > 0) {
@@ -713,6 +714,7 @@ private function saveOrUpdateEvent(Summit $summit, array $data, $event_id = null
713714
$event->setSummit($summit);
714715
if (!is_null($event_type))
715716
$event->setType($event_type);
717+
716718
SummitEventFactory::populate($event, $data);
717719
}
718720

0 commit comments

Comments
 (0)