Skip to content

Commit 47d83aa

Browse files
committed
wip
1 parent 3cc16cc commit 47d83aa

27 files changed

Lines changed: 330 additions & 199 deletions

.nvmrc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
22
1+
24

.php-cs-fixer.dist.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,9 @@
160160
'single_line' => true,
161161
],
162162
'ordered_imports' => [
163+
'imports_order' => [
164+
'class', 'function', 'const',
165+
],
163166
'sort_algorithm' => 'alpha',
164167
],
165168

Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ RUN set -ex; \
1616
--no-dev \
1717
--prefer-dist
1818

19-
FROM node:22-alpine AS assets
19+
FROM node:24-alpine AS assets
2020

2121
WORKDIR /build
2222

app/Filament/Resources/Beneficiaries/BeneficiaryResource.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ class BeneficiaryResource extends Resource
2828

2929
protected static ?int $navigationSort = 1;
3030

31+
protected static ?string $recordTitleAttribute = 'full_name';
32+
3133
public static function getModelLabel(): string
3234
{
3335
return __('beneficiary.label.singular');

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

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
use App\Filament\Resources\Beneficiaries\Resources\Catagraphies\CatagraphyResource;
99
use App\Filament\Resources\Beneficiaries\Resources\Interventions\Actions\CreateCaseAction;
1010
use App\Filament\Resources\Beneficiaries\Resources\Interventions\Actions\CreateIndividualServiceAction;
11+
use App\Models\Beneficiary;
1112
use Filament\Actions\Action;
1213
use Filament\Actions\ActionGroup;
1314
use Filament\Support\Enums\IconPosition;
@@ -17,6 +18,9 @@ trait HasRegularBeneficiaryActions
1718
{
1819
protected function getHeaderActions(): array
1920
{
21+
/** @var Beneficiary */
22+
$beneficiary = $this->getParentRecord() ?? $this->getRecord();
23+
2024
return [
2125
ActionGroup::make([])
2226
->label(__('app.action.group'))
@@ -28,21 +32,19 @@ protected function getHeaderActions(): array
2832
Action::make('catagraphy')
2933
->label(__('catagraphy.action.update'))
3034
->url(CatagraphyResource::getUrl('edit', [
31-
'beneficiary' => $this->getRecord(),
35+
'beneficiary' => $beneficiary,
3236
])),
3337

3438
CreateCaseAction::make()
35-
->after(fn () => $this->emit('updateInterventionsWidget'))
3639
->icon(null),
3740

3841
CreateIndividualServiceAction::make()
39-
->after(fn () => $this->emit('updateInterventionsWidget'))
4042
->icon(null),
4143

4244
Action::make('appointment')
4345
->label(__('appointment.action.create'))
4446
->url(AppointmentResource::getUrl('create', [
45-
'beneficiary' => $this->getRecord(),
47+
'beneficiary' => $beneficiary,
4648
])),
4749
]),
4850
];

app/Filament/Resources/Beneficiaries/Resources/Catagraphies/Pages/EditCatagraphy.php

Lines changed: 55 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,10 @@
88
use App\Filament\Resources\Beneficiaries\Resources\Catagraphies\CatagraphyResource;
99
use App\Filament\Resources\Beneficiaries\Resources\Catagraphies\Concerns\GetRecordFromParentRecord;
1010
use App\Filament\Resources\Beneficiaries\Resources\Catagraphies\Concerns\HasBreadcrumbs;
11-
use Filament\Actions\DeleteAction;
12-
use Filament\Actions\ViewAction;
11+
use App\Models\Catagraphy;
12+
use App\Models\Vulnerability\Vulnerability;
1313
use Filament\Resources\Pages\EditRecord;
14+
use Illuminate\Database\Eloquent\Model;
1415

1516
class EditCatagraphy extends EditRecord
1617
{
@@ -20,11 +21,58 @@ class EditCatagraphy extends EditRecord
2021

2122
protected static string $resource = CatagraphyResource::class;
2223

23-
protected function getHeaderActions(): array
24+
public function getTitle(): string
2425
{
25-
return [
26-
ViewAction::make(),
27-
DeleteAction::make(),
28-
];
26+
return __('catagraphy.form.edit');
27+
}
28+
29+
public function getBreadcrumb(): string
30+
{
31+
return $this->getTitle();
32+
}
33+
34+
protected function authorizeAccess(): void
35+
{
36+
parent::authorizeAccess();
37+
38+
abort_unless($this->getParentRecord()->isRegular(), 404);
39+
}
40+
41+
/**
42+
* @param Catagraphy $record
43+
* @param array<string, mixed> $data
44+
* @return Catagraphy
45+
*/
46+
protected function handleRecordUpdate(Model $record, array $data): Model
47+
{
48+
$data['nurse_id'] = auth()->id();
49+
$data['beneficiary_id'] = $this->getParentRecord()->id;
50+
// dd($data);
51+
// Handle pregnancy data
52+
if (! Vulnerability::isPregnancy($data['cat_rep'])) {
53+
$data['cat_preg'] = null;
54+
}
55+
56+
$record->fill($data)->save();
57+
58+
if ($record->beneficiary->isRegistered()) {
59+
$record->beneficiary->markAsCatagraphed();
60+
}
61+
62+
$this->form->saveRelationships();
63+
64+
// Clear disabilities relationship if has_disabilities is false
65+
// using each->delete() to trigger the model events
66+
if (! $record->has_disabilities) {
67+
$record->disabilities->each->delete();
68+
}
69+
70+
// Clear diseases relationship if has_health_issues is false
71+
// using each->delete() to trigger the model events
72+
if (! $record->has_health_issues) {
73+
$record->diseases->each->delete();
74+
}
75+
76+
return $record;
2977
}
3078
}

app/Filament/Resources/Beneficiaries/Resources/Catagraphies/Pages/SummaryCatagraphy.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
namespace App\Filament\Resources\Beneficiaries\Resources\Catagraphies\Pages;
66

77
use App\Filament\Resources\Beneficiaries\Concerns\DisableNavigationIcon;
8+
use App\Filament\Resources\Beneficiaries\Concerns\HasRegularBeneficiaryActions;
89
use App\Filament\Resources\Beneficiaries\Concerns\UsesParentRecordSubNavigation;
910
use App\Filament\Resources\Beneficiaries\Resources\Catagraphies\CatagraphyResource;
1011
use App\Filament\Resources\Beneficiaries\Resources\Catagraphies\Concerns\GetRecordFromParentRecord;
@@ -21,6 +22,7 @@ class SummaryCatagraphy extends ViewRecord
2122
use HasBreadcrumbs;
2223
use GetRecordFromParentRecord;
2324
use UsesParentRecordSubNavigation;
25+
use HasRegularBeneficiaryActions;
2426

2527
protected static string $resource = CatagraphyResource::class;
2628

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,15 +52,15 @@ private static function vulnerabilities(): Section
5252
EmptyState::make(__('catagraphy.vulnerability.empty.title'))
5353
->description(__('catagraphy.vulnerability.empty.description'))
5454
->icon('icon-empty-state')
55-
->action(
55+
->footer([
5656
Action::make('create')
5757
->label(__('catagraphy.vulnerability.empty.create'))
5858
->url(CatagraphyResource::getUrl('edit', [
5959
'beneficiary' => $record->beneficiary,
6060
]))
6161
->button()
6262
->color('gray'),
63-
),
63+
]),
6464
];
6565
}
6666

app/Filament/Resources/Beneficiaries/Resources/Documents/Pages/EditDocument.php

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,11 @@
77
use App\Filament\Resources\Beneficiaries\Concerns\UsesParentRecordSubNavigation;
88
use App\Filament\Resources\Beneficiaries\Resources\Documents\Concerns\HasBreadcrumbs;
99
use App\Filament\Resources\Beneficiaries\Resources\Documents\DocumentResource;
10+
use App\Filament\Resources\Beneficiaries\Resources\Documents\Schemas\DocumentForm;
1011
use Filament\Actions\DeleteAction;
1112
use Filament\Resources\Pages\EditRecord;
13+
use Filament\Schemas\Components\Section;
14+
use Filament\Schemas\Schema;
1215

1316
class EditDocument extends EditRecord
1417
{
@@ -28,4 +31,16 @@ public function getTitle(): string
2831
{
2932
return $this->getRecordTitle();
3033
}
34+
35+
public function form(Schema $schema): Schema
36+
{
37+
return $schema
38+
->columns(1)
39+
->components([
40+
Section::make()
41+
->heading(__('document.summary'))
42+
->columns(2)
43+
->components(fn (Schema $schema) => DocumentForm::configure($schema)),
44+
]);
45+
}
3146
}

app/Filament/Resources/Beneficiaries/Resources/Documents/Schemas/DocumentForm.php

Lines changed: 22 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
use Filament\Forms\Components\SpatieMediaLibraryFileUpload;
99
use Filament\Forms\Components\Textarea;
1010
use Filament\Forms\Components\TextInput;
11-
use Filament\Schemas\Components\Section;
1211
use Filament\Schemas\Schema;
1312
use Filament\Support\Icons\Heroicon;
1413

@@ -19,38 +18,33 @@ public static function configure(Schema $schema): Schema
1918
return $schema
2019
->columns(1)
2120
->components([
22-
Section::make()
23-
->heading(__('document.summary'))
21+
Subsection::make()
22+
->icon(Heroicon::OutlinedDocumentText)
2423
->columns()
2524
->components([
26-
Subsection::make()
27-
->icon(Heroicon::OutlinedDocumentText)
28-
->columns()
29-
->components([
30-
TextInput::make('title')
31-
->label(__('field.document_title'))
32-
->maxLength(200)
33-
->required(),
25+
TextInput::make('title')
26+
->label(__('field.document_title'))
27+
->maxLength(200)
28+
->required(),
3429

35-
TextInput::make('type')
36-
->label(__('field.document_type'))
37-
->maxLength(200)
38-
->nullable(),
30+
TextInput::make('type')
31+
->label(__('field.document_type'))
32+
->maxLength(200)
33+
->nullable(),
3934

40-
SpatieMediaLibraryFileUpload::make('document')
41-
->label(__('field.file'))
42-
->maxSize(1024 * 1024 * 2)
43-
->columnSpanFull(),
44-
]),
35+
SpatieMediaLibraryFileUpload::make('document')
36+
->label(__('field.file'))
37+
->maxSize(1024 * 1024 * 2)
38+
->columnSpanFull(),
39+
]),
4540

46-
Subsection::make()
47-
->icon(Heroicon::OutlinedChatBubbleBottomCenterText)
48-
->components([
49-
Textarea::make('notes')
50-
->label(__('field.notes'))
51-
->nullable()
52-
->maxLength(65535),
53-
]),
41+
Subsection::make()
42+
->icon(Heroicon::OutlinedChatBubbleBottomCenterText)
43+
->components([
44+
Textarea::make('notes')
45+
->label(__('field.notes'))
46+
->nullable()
47+
->maxLength(65535),
5448
]),
5549
]);
5650
}

0 commit comments

Comments
 (0)