Skip to content

Commit 7415122

Browse files
authored
Merge pull request #332 from ECFMP/fixing-event-filters
fix: event participation filters crashing api
2 parents f0f481a + 1aaa917 commit 7415122

File tree

3 files changed

+30
-18
lines changed

3 files changed

+30
-18
lines changed

app/Http/Resources/FlowMeasureResource.php

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
use App\Helpers\ApiDateTimeFormatter;
66
use App\Helpers\FlowMeasureFilterApiFormatter;
7+
use App\Models\Event;
78
use Illuminate\Http\Resources\Json\JsonResource;
89

910
class FlowMeasureResource extends JsonResource
@@ -26,8 +27,8 @@ public function toArray($request): array
2627
'measure' => [
2728
'type' => $this->type,
2829
'value' => $this->isMandatoryRoute()
29-
? $this->mandatory_route
30-
: $this->value,
30+
? $this->mandatory_route
31+
: $this->value,
3132
],
3233
'filters' => $this->formatFilters($this->filters),
3334
'notified_flight_information_regions' => $this->notifiedFlightInformationRegions->pluck('id')->toArray(),
@@ -46,18 +47,25 @@ private function formatFilters(array $filters): array
4647
);
4748
}
4849

49-
private function formatSingleFilter(string $type, $value): array|int|string
50+
private function formatSingleFilter(string $type, $value): array |int|string
5051
{
5152
return match ($type) {
5253
'ADES', 'ADEP' => FlowMeasureFilterApiFormatter::formatAirportList($value),
53-
'level_above', 'level_below' => (int)$value,
54-
'level' => array_map(fn ($level) => (int)$level, $value),
55-
'member_event', 'member_not_event' => [
56-
'event_id' => (int)$value['event_id'],
57-
'event_api' => $value['event_api'],
58-
'event_vatcan' => $value['event_vatcan'],
59-
],
54+
'level_above', 'level_below' => (int) $value,
55+
'level' => array_map(fn ($level) => (int) $level, $value),
56+
'member_event', 'member_not_event' => $this->formatEventMembershipFilters($value),
6057
default => $value
6158
};
6259
}
60+
61+
private function formatEventMembershipFilters($value): array
62+
{
63+
$event = Event::withTrashed()->where('id', $value)->first();
64+
65+
return [
66+
'event_id' => $event->id,
67+
'event_api' => null,
68+
'event_vatcan' => $event->vatcan_code,
69+
];
70+
}
6371
}

database/factories/FlowMeasureFactory.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@ public function withMemberEvent(Event $event): static
183183
'type' => 'member_event',
184184
'value' => [
185185
'event_id' => (string) $event->id,
186-
'event_api' => 'testapicode',
186+
'event_api' => null,
187187
'event_vatcan' => 'testvatcancode',
188188
]
189189
]
@@ -197,7 +197,7 @@ public function withMemberNotEvent(Event $event): static
197197
'type' => 'member_not_event',
198198
'value' => [
199199
'event_id' => (string) $event->id,
200-
'event_api' => 'testapicode',
200+
'event_api' => null,
201201
'event_vatcan' => 'testvatcancode',
202202
]
203203
]

tests/Api/FlowMeasureTest.php

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -295,7 +295,9 @@ public function testItReturnsAFlowMeasureWithALevelFilter()
295295

296296
public function testItReturnsAFlowMeasureWithAMemberEventFilter()
297297
{
298-
$event = Event::factory()->create();
298+
$event = Event::factory()
299+
->withVatcanCode()
300+
->create();
299301
$flowMeasure = FlowMeasure::factory()
300302
->withMemberEvent($event)
301303
->create();
@@ -326,8 +328,8 @@ public function testItReturnsAFlowMeasureWithAMemberEventFilter()
326328
'type' => 'member_event',
327329
'value' => [
328330
'event_id' => $event->id,
329-
'event_api' => 'testapicode',
330-
'event_vatcan' => 'testvatcancode',
331+
'event_api' => null,
332+
'event_vatcan' => $event->vatcan_code,
331333
],
332334
],
333335
],
@@ -338,7 +340,9 @@ public function testItReturnsAFlowMeasureWithAMemberEventFilter()
338340

339341
public function testItReturnsAFlowMeasureWithAMemberNotEventFilter()
340342
{
341-
$event = Event::factory()->create();
343+
$event = Event::factory()
344+
->withVatcanCode()
345+
->create();
342346
$flowMeasure = FlowMeasure::factory()
343347
->withMemberNotEvent($event)
344348
->create();
@@ -369,8 +373,8 @@ public function testItReturnsAFlowMeasureWithAMemberNotEventFilter()
369373
'type' => 'member_not_event',
370374
'value' => [
371375
'event_id' => $event->id,
372-
'event_api' => 'testapicode',
373-
'event_vatcan' => 'testvatcancode',
376+
'event_api' => null,
377+
'event_vatcan' => $event->vatcan_code,
374378
],
375379
],
376380
],

0 commit comments

Comments
 (0)