Skip to content

Commit b32d2ed

Browse files
wip
1 parent b0933ea commit b32d2ed

File tree

12 files changed

+146
-129
lines changed

12 files changed

+146
-129
lines changed

app/Concerns/RedirectToMonitoring.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,9 @@ trait RedirectToMonitoring
1010

1111
protected function getRedirectUrl(): ?string
1212
{
13-
return self::getParentResource()::getUrl('monitorings.view', [
14-
'parent' => $this->getRecord()->beneficiary_id,
13+
$parentRecord = $this->getParentRecord();
14+
return static::getResource()::getUrl('view', [
15+
'beneficiary' => $parentRecord,
1516
'record' => $this->getRecord(),
1617
'tab' => \sprintf('-%s-tab', $this->getTabSlug()),
1718
]);

app/Filament/Organizations/Resources/BeneficiaryResource.php

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@
4545
use App\Filament\Organizations\Resources\BeneficiaryResource\Pages\ListSpecialists;
4646
use App\Filament\Organizations\Resources\InterventionPlanResource\Pages\CreateInterventionPlan;
4747
use App\Filament\Organizations\Resources\InterventionPlanResource\Pages\ViewInterventionPlan;
48-
use App\Filament\Organizations\Resources\MonitoringResource\Pages as MonitoringResourcePages;
4948
use App\Filters\DateFilter;
5049
use App\Models\Beneficiary;
5150
use App\Tables\Filters\SelectFilter;
@@ -142,14 +141,6 @@ public static function getPages(): array
142141

143142
'view_specialists' => ListSpecialists::route('/{record}/specialists'),
144143

145-
146-
'monitorings.create' => MonitoringResourcePages\CreateMonitoring::route('/{parent}/monitoring/create/{copyLastFile?}'),
147-
'monitorings.index' => MonitoringResourcePages\ListMonitoring::route('/{parent}/monitoring'),
148-
'monitorings.view' => MonitoringResourcePages\ViewMonitoring::route('/{parent}/monitoring/{record}'),
149-
'monitoring.edit_details' => MonitoringResourcePages\EditDetails::route('/{parent}/monitoring/{record}/editDetails'),
150-
'monitoring.edit_children' => MonitoringResourcePages\EditChildren::route('/{parent}/monitoring/{record}/editChildren'),
151-
'monitoring.edit_general' => MonitoringResourcePages\EditGeneral::route('/{parent}/monitoring/{record}/editGeneral'),
152-
153144
'beneficiary-histories.index' => ListBeneficiaryHistories::route('{parent}/history'),
154145
'beneficiary-histories.view' => ViewBeneficiaryHistories::route('{parent}/history/{record}'),
155146

app/Filament/Organizations/Resources/BeneficiaryResource/Pages/ViewBeneficiary.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
use App\Filament\Organizations\Resources\BeneficiaryResource\Widgets\DocumentsListWidget;
2020
use App\Filament\Organizations\Resources\BeneficiaryResource\Widgets\IntervetnionPlanWidget;
2121
use App\Filament\Organizations\Resources\BeneficiaryResource\Widgets\RelatedCases;
22-
use App\Filament\Organizations\Resources\MonitoringResource\Widgets\MonitoringWidget;
22+
use App\Filament\Organizations\Resources\BeneficiaryResource\Resources\MonitoringResource\Widgets\MonitoringWidget;
2323
use App\Infolists\Components\DateEntry;
2424
use App\Infolists\Components\EnumEntry;
2525
use App\Infolists\Components\Location;
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace App\Filament\Organizations\Resources\BeneficiaryResource\Resources;
6+
7+
use App\Models\Monitoring;
8+
use Filament\Resources\ParentResourceRegistration;
9+
use Filament\Resources\Resource;
10+
use Filament\Tables\Table;
11+
use Illuminate\Contracts\Support\Htmlable;
12+
use Illuminate\Database\Eloquent\Model;
13+
14+
class MonitoringResource extends Resource
15+
{
16+
protected static ?string $model = Monitoring::class;
17+
18+
protected static bool $shouldRegisterNavigation = false;
19+
20+
public static ?string $parentResource = \App\Filament\Organizations\Resources\BeneficiaryResource::class;
21+
22+
public static function getParentResourceRegistration(): ?ParentResourceRegistration
23+
{
24+
return \App\Filament\Organizations\Resources\BeneficiaryResource::asParent()
25+
->relationship('monitorings')
26+
->inverseRelationship('beneficiary');
27+
}
28+
29+
public static function getRecordTitle(Model|null $record): string|null|Htmlable
30+
{
31+
return $record->number;
32+
}
33+
34+
public static function getPages(): array
35+
{
36+
return [
37+
'index' => \App\Filament\Organizations\Resources\BeneficiaryResource\Resources\MonitoringResource\Pages\ListMonitoring::route('/'),
38+
'create' => \App\Filament\Organizations\Resources\BeneficiaryResource\Resources\MonitoringResource\Pages\CreateMonitoring::route('/create'),
39+
'view' => \App\Filament\Organizations\Resources\BeneficiaryResource\Resources\MonitoringResource\Pages\ViewMonitoring::route('/{record}'),
40+
'edit_details' => \App\Filament\Organizations\Resources\BeneficiaryResource\Resources\MonitoringResource\Pages\EditDetails::route('/{record}/editDetails'),
41+
'edit_children' => \App\Filament\Organizations\Resources\BeneficiaryResource\Resources\MonitoringResource\Pages\EditChildren::route('/{record}/editChildren'),
42+
'edit_general' => \App\Filament\Organizations\Resources\BeneficiaryResource\Resources\MonitoringResource\Pages\EditGeneral::route('/{record}/editGeneral'),
43+
];
44+
}
45+
}

app/Filament/Organizations/Resources/MonitoringResource/Pages/CreateMonitoring.php renamed to app/Filament/Organizations/Resources/BeneficiaryResource/Resources/MonitoringResource/Pages/CreateMonitoring.php

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,17 @@
22

33
declare(strict_types=1);
44

5-
namespace App\Filament\Organizations\Resources\MonitoringResource\Pages;
5+
namespace App\Filament\Organizations\Resources\BeneficiaryResource\Resources\MonitoringResource\Pages;
66

77
use Filament\Schemas\Components\Wizard\Step;
88
use App\Actions\BackAction;
99
use App\Concerns\PreventMultipleSubmit;
1010
use App\Concerns\PreventSubmitFormOnEnter;
1111
use App\Filament\Organizations\Resources\BeneficiaryResource;
12-
use App\Filament\Organizations\Resources\MonitoringResource;
12+
use App\Filament\Organizations\Resources\BeneficiaryResource\Resources\MonitoringResource;
13+
use App\Filament\Organizations\Resources\BeneficiaryResource\Resources\MonitoringResource\Pages\EditDetails;
14+
use App\Filament\Organizations\Resources\BeneficiaryResource\Resources\MonitoringResource\Pages\EditChildren;
15+
use App\Filament\Organizations\Resources\BeneficiaryResource\Resources\MonitoringResource\Pages\EditGeneral;
1316
use App\Models\Monitoring;
1417
use App\Models\Specialist;
1518
use App\Services\Breadcrumb\BeneficiaryBreadcrumb;
@@ -39,7 +42,7 @@ class CreateMonitoring extends CreateRecord
3942
public function getBreadcrumbs(): array
4043
{
4144
$breadcrumb = __('monitoring.breadcrumbs.file', ['file_number' => null]);
42-
$ownerRecord = $this->getOwnerRecord();
45+
$ownerRecord = $this->getParentRecord();
4346

4447
return array_merge(
4548
BeneficiaryBreadcrumb::make($ownerRecord)
@@ -55,23 +58,26 @@ public function getTitle(): string|Htmlable
5558

5659
protected function getRedirectUrl(): string
5760
{
58-
return MonitoringResource::getUrl('view', [
61+
$parentRecord = $this->getParentRecord();
62+
return static::getResource()::getUrl('view', [
63+
'beneficiary' => $parentRecord,
5964
'record' => $this->record,
6065
]);
6166
}
6267

6368
protected function getHeaderActions(): array
6469
{
70+
$parentRecord = $this->getParentRecord();
6571
return [
6672
BackAction::make()
67-
->url(MonitoringResource::getUrl('index')),
73+
->url(static::getResource()::getUrl('index', ['beneficiary' => $parentRecord])),
6874
];
6975
}
7076

7177
protected function afterFill(): void
7278
{
7379
$copyLastFile = (bool) request('copyLastFile');
74-
$ownerRecord = $this->getOwnerRecord();
80+
$ownerRecord = $this->getParentRecord();
7581
$this->lastFile = $ownerRecord
7682
->monitorings
7783
->sortByDesc('id')
@@ -100,17 +106,17 @@ public function getSteps(): array
100106
return [
101107

102108
Step::make(__('monitoring.headings.details'))
103-
->schema(EditDetails::getSchema())
109+
->schema(EditDetails::getFormSchemaStatic())
104110
->afterStateHydrated(fn (Set $set) => $set('specialistsTeam', $this->specialistTeam)),
105111

106112
Step::make(__('monitoring.headings.child_info'))
107-
->schema(EditChildren::getSchema())
113+
->schema(EditChildren::getFormSchemaStatic())
108114
->afterStateHydrated(function (Set $set) {
109115
$set('children', $this->children);
110116
}),
111117

112118
Step::make(__('monitoring.headings.general'))
113-
->schema(EditGeneral::getSchema()),
119+
->schema(EditGeneral::getFormSchemaStatic()),
114120

115121
];
116122
}
@@ -127,21 +133,21 @@ protected function getCancelFormAction(): Action
127133
{
128134
return Action::make('cancel')
129135
->label(__('filament-panels::resources/pages/create-record.form.actions.cancel.label'))
130-
->alpineClickHandler('document.referrer ? window.history.back() : (window.location.href = ' . Js::from($this->previousUrl ?? MonitoringResource::getUrl('index')) . ')')
136+
->alpineClickHandler('document.referrer ? window.history.back() : (window.location.href = ' . Js::from($this->previousUrl ?? static::getResource()::getUrl('index', ['beneficiary' => $this->getParentRecord()])) . ')')
131137
->color('gray');
132138
}
133139

134140
protected function mutateFormDataBeforeCreate(array $data): array
135141
{
136142
// Set the parent relationship key to the parent resource's ID.
137-
$data['beneficiary_id'] = $this->getOwnerRecord()->id;
143+
$data['beneficiary_id'] = $this->getParentRecord()->id;
138144

139145
return $data;
140146
}
141147

142148
private function getChildren(): array
143149
{
144-
$ownerRecord = $this->getOwnerRecord();
150+
$ownerRecord = $this->getParentRecord();
145151

146152
if ($this->lastFile && $this->lastFile->children->isNotEmpty()) {
147153
return $this->lastFile->children->toArray();
@@ -152,7 +158,7 @@ private function getChildren(): array
152158

153159
private function getSpecialists(): array
154160
{
155-
$ownerRecord = $this->getOwnerRecord();
161+
$ownerRecord = $this->getParentRecord();
156162

157163
if ($this->lastFile && $this->lastFile->specialistsTeam->isNotEmpty()) {
158164
return $this->lastFile

app/Filament/Organizations/Resources/MonitoringResource/Pages/EditChildren.php renamed to app/Filament/Organizations/Resources/BeneficiaryResource/Resources/MonitoringResource/Pages/EditChildren.php

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,14 @@
22

33
declare(strict_types=1);
44

5-
namespace App\Filament\Organizations\Resources\MonitoringResource\Pages;
5+
namespace App\Filament\Organizations\Resources\BeneficiaryResource\Resources\MonitoringResource\Pages;
66

77
use Filament\Schemas\Schema;
8-
use App\Concerns\HasParentResource;
98
use App\Concerns\PreventSubmitFormOnEnter;
109
use App\Concerns\RedirectToMonitoring;
1110
use App\Enums\ChildAggressorRelationship;
1211
use App\Enums\MaintenanceSources;
13-
use App\Filament\Organizations\Resources\MonitoringResource;
12+
use App\Filament\Organizations\Resources\BeneficiaryResource\Resources\MonitoringResource;
1413
use App\Forms\Components\DatePicker;
1514
use App\Forms\Components\Repeater;
1615
use App\Forms\Components\Select;
@@ -28,15 +27,15 @@
2827

2928
class EditChildren extends EditRecord
3029
{
31-
use HasParentResource;
3230
use RedirectToMonitoring;
3331
use PreventSubmitFormOnEnter;
3432

3533
protected static string $resource = MonitoringResource::class;
3634

3735
public function getBreadcrumbs(): array
3836
{
39-
return BeneficiaryBreadcrumb::make($this->parent)->getBreadcrumbsForMonitoringFileEdit($this->getRecord());
37+
$parentRecord = $this->getParentRecord();
38+
return BeneficiaryBreadcrumb::make($parentRecord)->getBreadcrumbsForMonitoringFileEdit($this->getRecord());
4039
}
4140

4241
public function getTitle(): string|Htmlable
@@ -57,6 +56,13 @@ public function form(Schema $schema): Schema
5756
->schema($this->getFormSchema())]);
5857
}
5958

59+
public static function getFormSchemaStatic(): array
60+
{
61+
$instance = new static();
62+
$instance->record = new \App\Models\Monitoring();
63+
return $instance->getFormSchema();
64+
}
65+
6066
protected function getFormSchema(): array
6167
{
6268
return [

app/Filament/Organizations/Resources/MonitoringResource/Pages/EditDetails.php renamed to app/Filament/Organizations/Resources/BeneficiaryResource/Resources/MonitoringResource/Pages/EditDetails.php

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,12 @@
22

33
declare(strict_types=1);
44

5-
namespace App\Filament\Organizations\Resources\MonitoringResource\Pages;
5+
namespace App\Filament\Organizations\Resources\BeneficiaryResource\Resources\MonitoringResource\Pages;
66

77
use Filament\Schemas\Schema;
8-
use App\Concerns\HasParentResource;
98
use App\Concerns\PreventSubmitFormOnEnter;
109
use App\Concerns\RedirectToMonitoring;
11-
use App\Filament\Organizations\Resources\MonitoringResource;
10+
use App\Filament\Organizations\Resources\BeneficiaryResource\Resources\MonitoringResource;
1211
use App\Forms\Components\DatePicker;
1312
use App\Forms\Components\Select;
1413
use App\Forms\Components\TableRepeater;
@@ -29,15 +28,15 @@
2928

3029
class EditDetails extends EditRecord
3130
{
32-
use HasParentResource;
3331
use RedirectToMonitoring;
3432
use PreventSubmitFormOnEnter;
3533

3634
protected static string $resource = MonitoringResource::class;
3735

3836
public function getBreadcrumbs(): array
3937
{
40-
return BeneficiaryBreadcrumb::make($this->parent)->getBreadcrumbsForMonitoringFileEdit($this->getRecord());
38+
$parentRecord = $this->getParentRecord();
39+
return BeneficiaryBreadcrumb::make($parentRecord)->getBreadcrumbsForMonitoringFileEdit($this->getRecord());
4140
}
4241

4342
public function getTitle(): string|Htmlable
@@ -59,6 +58,13 @@ public function form(Schema $schema): Schema
5958
]);
6059
}
6160

61+
public static function getFormSchemaStatic(): array
62+
{
63+
$instance = new static();
64+
$instance->record = new \App\Models\Monitoring();
65+
return $instance->getFormSchema();
66+
}
67+
6268
protected function getFormSchema(): array
6369
{
6470
return [
@@ -79,8 +85,8 @@ protected function getFormSchema(): array
7985
DatePicker::make('end_date')
8086
->label(__('monitoring.labels.end_date')),
8187

82-
Hidden::make('parent_id')
83-
->formatStateUsing(fn ($record, $state) => $state ?? ($record?->beneficiary_id ?? request('parent'))),
88+
Hidden::make('beneficiary_id')
89+
->formatStateUsing(fn ($record, $state) => $state ?? ($record?->beneficiary_id ?? $this->getParentRecord()?->id)),
8490

8591
TableRepeater::make('specialistsTeam')
8692
->relationship('specialistsTeam')

app/Filament/Organizations/Resources/MonitoringResource/Pages/EditGeneral.php renamed to app/Filament/Organizations/Resources/BeneficiaryResource/Resources/MonitoringResource/Pages/EditGeneral.php

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,12 @@
22

33
declare(strict_types=1);
44

5-
namespace App\Filament\Organizations\Resources\MonitoringResource\Pages;
5+
namespace App\Filament\Organizations\Resources\BeneficiaryResource\Resources\MonitoringResource\Pages;
66

77
use Filament\Schemas\Schema;
8-
use App\Concerns\HasParentResource;
98
use App\Concerns\PreventSubmitFormOnEnter;
109
use App\Concerns\RedirectToMonitoring;
11-
use App\Filament\Organizations\Resources\MonitoringResource;
10+
use App\Filament\Organizations\Resources\BeneficiaryResource\Resources\MonitoringResource;
1211
use App\Forms\Components\DatePicker;
1312
use App\Services\Breadcrumb\BeneficiaryBreadcrumb;
1413
use Filament\Schemas\Components\Grid;
@@ -24,15 +23,15 @@
2423

2524
class EditGeneral extends EditRecord
2625
{
27-
use HasParentResource;
2826
use RedirectToMonitoring;
2927
use PreventSubmitFormOnEnter;
3028

3129
protected static string $resource = MonitoringResource::class;
3230

3331
public function getBreadcrumbs(): array
3432
{
35-
return BeneficiaryBreadcrumb::make($this->parent)->getBreadcrumbsForMonitoringFileEdit($this->getRecord());
33+
$parentRecord = $this->getParentRecord();
34+
return BeneficiaryBreadcrumb::make($parentRecord)->getBreadcrumbsForMonitoringFileEdit($this->getRecord());
3635
}
3736

3837
public function getTitle(): string|Htmlable
@@ -54,6 +53,13 @@ public function form(Schema $schema): Schema
5453
]);
5554
}
5655

56+
public static function getFormSchemaStatic(): array
57+
{
58+
$instance = new static();
59+
$instance->record = new \App\Models\Monitoring();
60+
return $instance->getFormSchema();
61+
}
62+
5763
protected function getFormSchema(): array
5864
{
5965
return [
@@ -64,7 +70,7 @@ protected function getFormSchema(): array
6470
->schema([
6571
DatePicker::make('admittance_date')
6672
->label(__('monitoring.labels.admittance_date'))
67-
->default(self::getParent()?->created_at),
73+
->default($this->getParentRecord()?->created_at),
6874

6975
TextInput::make('admittance_disposition')
7076
->label(__('monitoring.labels.admittance_disposition'))

0 commit comments

Comments
 (0)