Skip to content

Commit 717f181

Browse files
committed
wip
1 parent 8230be8 commit 717f181

16 files changed

Lines changed: 467 additions & 173 deletions

app/Filament/Resources/Appointments/RelationManagers/InterventionsRelationManager.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,12 @@
77
use App\Enums\Intervention\Status;
88
use App\Filament\Resources\Appointments\InterventionResource;
99
use App\Filament\Resources\Beneficiaries\BeneficiaryResource;
10-
use App\Forms\Components\Select;
1110
use App\Models\Appointment;
1211
use App\Models\Intervention;
1312
use Filament\Actions\AssociateAction;
1413
use Filament\Actions\DissociateAction;
1514
use Filament\Actions\ViewAction;
15+
use Filament\Forms\Components\Select;
1616
use Filament\Forms\Components\TextInput;
1717
use Filament\Resources\RelationManagers\RelationManager;
1818
use Filament\Schemas\Schema;

app/Filament/Resources/Beneficiaries/BeneficiaryResource.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
use App\Filament\Resources\Beneficiaries\Pages\ListOcasionalBeneficiaries;
1414
use App\Filament\Resources\Beneficiaries\Pages\ListRegularBeneficiaries;
1515
use App\Filament\Resources\Beneficiaries\Pages\ViewBeneficiary;
16+
use App\Filament\Resources\Beneficiaries\Pages\ViewBeneficiaryDetails;
1617
use App\Filament\Resources\Beneficiaries\Resources\Catagraphies\Pages\SummaryCatagraphy;
1718
use App\Filament\Resources\Beneficiaries\Tables\BeneficiariesTable;
1819
use App\Models\Beneficiary;
@@ -69,6 +70,7 @@ public static function getPages(): array
6970

7071
'create' => CreateBeneficiary::route('/create'),
7172
'view' => ViewBeneficiary::route('/{record}'),
73+
'details' => ViewBeneficiaryDetails::route('/{record}/details'),
7274
'edit' => EditBeneficiary::route('/{record}/edit'),
7375

7476
'interventions' => ListInterventions::route('/{record}/interventions'),
@@ -90,6 +92,7 @@ public static function getRecordSubNavigation(Page $page): array
9092

9193
return $page->generateNavigationItems([
9294
ViewBeneficiary::class,
95+
ViewBeneficiaryDetails::class,
9396
SummaryCatagraphy::class,
9497
ListInterventions::class,
9598
ListDocuments::class,

app/Filament/Resources/Beneficiaries/Concerns/HasRegularBeneficiaryActions.php

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
namespace App\Filament\Resources\Beneficiaries\Concerns;
66

77
use App\Filament\Resources\Appointments\AppointmentResource;
8-
use App\Filament\Resources\Beneficiaries\BeneficiaryResource;
9-
use App\Filament\Resources\Interventions\Actions\CreateCaseAction;
10-
use App\Filament\Resources\Interventions\Actions\CreateIndividualServiceAction;
8+
use App\Filament\Resources\Beneficiaries\Resources\Catagraphies\CatagraphyResource;
9+
use App\Filament\Resources\Beneficiaries\Resources\Interventions\Actions\CreateCaseAction;
10+
use App\Filament\Resources\Beneficiaries\Resources\Interventions\Actions\CreateIndividualServiceAction;
1111
use Filament\Actions\Action;
1212
use Filament\Actions\ActionGroup;
1313
use Filament\Support\Enums\IconPosition;
@@ -27,23 +27,23 @@ protected function getHeaderActions(): array
2727
->actions([
2828
Action::make('catagraphy')
2929
->label(__('catagraphy.action.update'))
30-
// ->url(BeneficiaryResource::getUrl('catagraphy.edit', [
31-
// 'record' => $this->getRecord(),
32-
// ])),
33-
,
34-
// CreateCaseAction::make()
35-
// ->after(fn () => $this->emit('updateInterventionsWidget'))
36-
// ->icon(null),
30+
->url(CatagraphyResource::getUrl('edit', [
31+
'beneficiary' => $this->getRecord(),
32+
])),
3733

38-
// CreateIndividualServiceAction::make()
39-
// ->after(fn () => $this->emit('updateInterventionsWidget'))
40-
// ->icon(null),
34+
CreateCaseAction::make()
35+
->after(fn () => $this->emit('updateInterventionsWidget'))
36+
->icon(null),
37+
38+
CreateIndividualServiceAction::make()
39+
->after(fn () => $this->emit('updateInterventionsWidget'))
40+
->icon(null),
4141

4242
Action::make('appointment')
43-
->label(__('appointment.action.create')),
44-
// ->url(AppointmentResource::getUrl('create', [
45-
// 'beneficiary' => $this->getBeneficiary(),
46-
// ])),
43+
->label(__('appointment.action.create'))
44+
->url(AppointmentResource::getUrl('create', [
45+
'beneficiary' => $this->getRecord(),
46+
])),
4747
]),
4848
];
4949
}

app/Filament/Resources/Beneficiaries/Pages/ListInterventions.php

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@
88
use App\Filament\Resources\Beneficiaries\Concerns\DisableNavigationIcon;
99
use App\Filament\Resources\Beneficiaries\Concerns\HasBreadcrumbs;
1010
use App\Filament\Resources\Beneficiaries\Concerns\UsesParentRecordSubNavigation;
11+
use App\Filament\Resources\Beneficiaries\Resources\Interventions\Actions\CreateCaseAction;
12+
use App\Filament\Resources\Beneficiaries\Resources\Interventions\Actions\CreateIndividualServiceAction;
1113
use App\Filament\Resources\Beneficiaries\Resources\Interventions\InterventionResource;
12-
use Filament\Actions\CreateAction;
1314
use Filament\Panel;
1415
use Filament\Resources\Pages\ManageRelatedRecords;
15-
use Filament\Tables\Table;
1616

1717
class ListInterventions extends ManageRelatedRecords
1818
{
@@ -41,12 +41,12 @@ public static function getNavigationLabel(): string
4141
return __('intervention.label.plural');
4242
}
4343

44-
public function table(Table $table): Table
44+
protected function getHeaderActions(): array
4545
{
46-
return $table
47-
->headerActions([
48-
CreateAction::make(),
49-
]);
46+
return [
47+
CreateIndividualServiceAction::make(),
48+
CreateCaseAction::make(),
49+
];
5050
}
5151

5252
public static function getRouteName(?Panel $panel = null): string
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace App\Filament\Resources\Beneficiaries\Pages;
6+
7+
use App\Filament\Resources\Beneficiaries\BeneficiaryResource;
8+
use App\Filament\Resources\Beneficiaries\Concerns\DisableNavigationIcon;
9+
use App\Filament\Resources\Beneficiaries\Concerns\HasBreadcrumbs;
10+
use App\Filament\Resources\Beneficiaries\Concerns\HasRegularBeneficiaryActions;
11+
use App\Filament\Resources\Beneficiaries\Concerns\UsesParentRecordSubNavigation;
12+
use App\Filament\Resources\Beneficiaries\Schemas\RegularBeneficiaryInfolist;
13+
use Filament\Resources\Pages\ViewRecord;
14+
use Filament\Schemas\Schema;
15+
16+
class ViewBeneficiaryDetails extends ViewRecord
17+
{
18+
use DisableNavigationIcon;
19+
use HasBreadcrumbs;
20+
use HasRegularBeneficiaryActions {
21+
getHeaderActions as getRegularBeneficiaryActions;
22+
}
23+
use UsesParentRecordSubNavigation;
24+
25+
protected static string $resource = BeneficiaryResource::class;
26+
27+
public function getTitle(): string
28+
{
29+
return static::getNavigationLabel();
30+
}
31+
32+
public function getBreadcrumb(): string
33+
{
34+
return $this->getTitle();
35+
}
36+
37+
public static function getNavigationLabel(): string
38+
{
39+
return __('beneficiary.section.personal_data');
40+
}
41+
42+
public function infolist(Schema $schema): Schema
43+
{
44+
return RegularBeneficiaryInfolist::configure($schema);
45+
}
46+
}

app/Filament/Resources/Beneficiaries/Resources/Catagraphies/Schemas/CatagraphyForm.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,6 @@ public static function configure(Schema $schema): Schema
165165
->visible(fn (Get $get) => \boolval($get('has_disabilities')))
166166
->schema([
167167
Repeater::make('disabilities')
168-
169168
->relationship()
170169
->addActionLabel(__('catagraphy.action.add_disability'))
171170
->reorderable(false)
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace App\Filament\Resources\Beneficiaries\Resources\Interventions\Actions;
6+
7+
use App\Filament\Resources\Beneficiaries\Resources\Interventions\InterventionResource;
8+
use App\Filament\Resources\Beneficiaries\Resources\Interventions\Schemas\CaseForm;
9+
use App\Models\Beneficiary;
10+
use App\Models\Intervention;
11+
use App\Models\Intervention\InterventionableCase;
12+
use Filament\Actions\CreateAction;
13+
use Filament\Schemas\Schema;
14+
use Filament\Support\Icons\Heroicon;
15+
16+
class CreateCaseAction extends CreateAction
17+
{
18+
public static function getDefaultName(): ?string
19+
{
20+
return 'create_case';
21+
}
22+
23+
protected function setUp(): void
24+
{
25+
parent::setUp();
26+
27+
$this->label(__('intervention.action.open_case'));
28+
29+
$this->modalHeading(__('intervention.action.open_case'));
30+
31+
$this->modal();
32+
33+
$this->model(null);
34+
35+
$this->icon(Heroicon::OutlinedFolderPlus);
36+
37+
$this->groupedIcon(null);
38+
39+
$this->createAnother(false);
40+
41+
$this->using(function (array $data, Beneficiary $record): Intervention {
42+
$interventionable = InterventionableCase::create($data['interventionable']);
43+
44+
$intervention = $interventionable->intervention()->create([
45+
'beneficiary_id' => $record?->id,
46+
'integrated' => $data['integrated'],
47+
'notes' => $data['notes'],
48+
]);
49+
50+
$intervention
51+
->setVulnerability($data['vulnerability_id'])
52+
->save();
53+
54+
return $intervention;
55+
});
56+
57+
$this->schema(fn (Schema $schema) => CaseForm::configure($schema));
58+
59+
// TODO: fix
60+
// $this->disabled(fn (Beneficiary $record) => ! InterventionResource::hasValidVulnerabilities($record));
61+
}
62+
}
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace App\Filament\Resources\Beneficiaries\Resources\Interventions\Actions;
6+
7+
use App\Filament\Resources\Beneficiaries\Resources\Interventions\InterventionResource;
8+
use App\Filament\Resources\Beneficiaries\Resources\Interventions\Schemas\IndividualServiceForm;
9+
use App\Models\Beneficiary;
10+
use App\Models\Intervention;
11+
use App\Models\Intervention\InterventionableIndividualService;
12+
use Filament\Actions\CreateAction;
13+
use Filament\Schemas\Schema;
14+
use Filament\Support\Icons\Heroicon;
15+
16+
class CreateIndividualServiceAction extends CreateAction
17+
{
18+
public static function getDefaultName(): ?string
19+
{
20+
return 'create_individual_service';
21+
}
22+
23+
protected function setUp(): void
24+
{
25+
parent::setUp();
26+
27+
$this->label(__('intervention.action.add_service'));
28+
29+
$this->modalHeading(__('intervention.action.add_service'));
30+
31+
$this->icon(Heroicon::OutlinedPlusCircle);
32+
33+
$this->groupedIcon(null);
34+
35+
$this->createAnother(false);
36+
37+
$this->using(function (array $data, Beneficiary $record): Intervention {
38+
$interventionable = InterventionableIndividualService::create($data['interventionable']);
39+
40+
$intervention = $interventionable->intervention()->make([
41+
'beneficiary_id' => $record?->id,
42+
'integrated' => $data['integrated'],
43+
'notes' => $data['notes'],
44+
]);
45+
46+
$intervention
47+
->setVulnerability($data['vulnerability_id'])
48+
->save();
49+
50+
return $intervention;
51+
});
52+
53+
$this->schema(fn (Schema $schema) => IndividualServiceForm::configure($schema));
54+
55+
// TODO: fix
56+
// $this->disabled(fn (Beneficiary $record) => ! InterventionResource::hasValidVulnerabilities($record));
57+
}
58+
}

app/Filament/Resources/Beneficiaries/Resources/Interventions/Pages/EditIntervention.php

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
use App\Filament\Resources\Beneficiaries\Resources\Interventions\Schemas\IndividualServiceForm;
1212
use App\Models\Intervention;
1313
use Filament\Resources\Pages\EditRecord;
14+
use Filament\Schemas\Components\Section;
1415
use Filament\Schemas\Schema;
1516
use Illuminate\Database\Eloquent\Model;
1617
use Illuminate\Support\Arr;
@@ -32,11 +33,17 @@ public function form(Schema $schema): Schema
3233
/** @var Intervention */
3334
$intervention = $this->getRecord();
3435

35-
if ($intervention->isCase()) {
36-
return CaseForm::configure($schema);
37-
}
38-
39-
return IndividualServiceForm::configure($schema);
36+
return $schema
37+
->columns(1)
38+
->components([
39+
Section::make()
40+
->heading(__('intervention.summary'))
41+
->components(
42+
fn (Schema $schema) => $intervention->isCase()
43+
? CaseForm::configure($schema)
44+
: IndividualServiceForm::configure($schema)
45+
),
46+
]);
4047
}
4148

4249
public function mutateFormDataBeforeFill(array $data): array

0 commit comments

Comments
 (0)