From 23844e2559a8d7d9dc2353b70003307a84133679 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andrei=20Ioni=C8=9B=C4=83?= Date: Fri, 8 Dec 2023 17:37:59 +0000 Subject: [PATCH] wip --- app/Enums/CaseStatus.php | 24 +++++++++++ .../Resources/BeneficiaryResource.php | 37 +++++++++++++--- app/Models/Beneficiary.php | 16 ++++--- .../Filament/OrganizationPanelProvider.php | 37 ++++++++++++++++ database/factories/BeneficiaryFactory.php | 3 ++ ...1_20_130401_create_beneficiaries_table.php | 2 + lang/ro/beneficiary.php | 8 ++++ lang/ro/field.php | 43 ++++++++++--------- lang/ro/placeholder.php | 40 +++++++++++++++++ 9 files changed, 178 insertions(+), 32 deletions(-) create mode 100644 app/Enums/CaseStatus.php diff --git a/app/Enums/CaseStatus.php b/app/Enums/CaseStatus.php new file mode 100644 index 00000000..8437c359 --- /dev/null +++ b/app/Enums/CaseStatus.php @@ -0,0 +1,24 @@ +columns([ - TextColumn::make('id'), + TextColumn::make('id') + ->label(__('field.case_id')) + ->extraHeaderAttributes([ + 'class' => 'w-1', + ]), TextColumn::make('full_name') + ->label(__('field.beneficiary')) ->searchable(), TextColumn::make('created_at') - ->date(), + ->label(__('field.open_at')) + ->date() + ->extraHeaderAttributes([ + 'class' => 'w-1', + ]), TextColumn::make('last_evaluated_at') - ->date(), + ->label(__('field.last_evaluated_at')) + ->date() + ->extraHeaderAttributes([ + 'class' => 'w-1', + ]), TextColumn::make('last_serviced_at') - ->date(), + ->label(__('field.last_serviced_at')) + ->date() + ->extraHeaderAttributes([ + 'class' => 'w-1', + ]), TextColumn::make('status') - ->badge(), + ->label(__('field.status')) + ->badge() + ->formatStateUsing(fn ($state) => $state?->label()) + ->extraHeaderAttributes([ + 'class' => 'w-1', + ]), ]) ->filters([ // ]) + ->bulkActions([ + Tables\Actions\BulkActionGroup::make([ + Tables\Actions\DeleteBulkAction::make(), + ]), + ]) ->actions([ Tables\Actions\ViewAction::make(), ]); diff --git a/app/Models/Beneficiary.php b/app/Models/Beneficiary.php index 6f43a075..4616c058 100644 --- a/app/Models/Beneficiary.php +++ b/app/Models/Beneficiary.php @@ -4,17 +4,18 @@ namespace App\Models; -use App\Enums\Gender; +use App\Concerns\BelongsToOrganization; +use App\Concerns\HasCitizenship; +use App\Concerns\HasEthnicity; use App\Concerns\HasUlid; +use App\Enums\CaseStatus; use App\Enums\CivilStatus; -use App\Concerns\HasEthnicity; -use App\Concerns\HasCitizenship; +use App\Enums\Gender; use App\Enums\ResidenceEnvironment; -use App\Concerns\BelongsToOrganization; -use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Casts\Attribute; -use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Factories\HasFactory; +use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\Relations\BelongsTo; class Beneficiary extends Model { @@ -55,6 +56,8 @@ class Beneficiary extends Model 'primary_phone', 'backup_phone', 'contact_notes', + + 'status', ]; protected $casts = [ @@ -64,6 +67,7 @@ class Beneficiary extends Model 'legal_residence_environment' => ResidenceEnvironment::class, 'effective_residence_environment' => ResidenceEnvironment::class, 'same_as_legal_residence' => 'boolean', + 'status' => CaseStatus::class, ]; public function legalResidenceCounty(): BelongsTo diff --git a/app/Providers/Filament/OrganizationPanelProvider.php b/app/Providers/Filament/OrganizationPanelProvider.php index 140c4be3..af2cbee1 100644 --- a/app/Providers/Filament/OrganizationPanelProvider.php +++ b/app/Providers/Filament/OrganizationPanelProvider.php @@ -10,13 +10,16 @@ use App\Filament\Pages\Tenancy\EditOrganizationProfile; use App\Http\Middleware\ApplyTenantScopes; use App\Models\Organization; +use Filament\Forms\Components\DateTimePicker; use Filament\Http\Middleware\Authenticate; use Filament\Http\Middleware\DisableBladeIconComponents; use Filament\Http\Middleware\DispatchServingFilamentEvent; +use Filament\Infolists\Infolist; use Filament\Pages\Page; use Filament\Panel; use Filament\PanelProvider; use Filament\Support\Colors\Color; +use Filament\Tables\Table; use Filament\Widgets; use Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse; use Illuminate\Cookie\Middleware\EncryptCookies; @@ -30,6 +33,23 @@ class OrganizationPanelProvider extends PanelProvider { + public static string $defaultDateDisplayFormat = 'd.m.Y'; + + public static string $defaultDateTimeDisplayFormat = 'd.m.Y H:i'; + + public static string $defaultDateTimeWithSecondsDisplayFormat = 'd.m.Y H:i:s'; + + public static string $defaultTimeDisplayFormat = 'H:i'; + + public static string $defaultTimeWithSecondsDisplayFormat = 'H:i:s'; + + public function register(): void + { + parent::register(); + + $this->setDefaultDateTimeDisplayFormats(); + } + public function boot(): void { Livewire::component('user_personal_info', UserPersonalInfo::class); @@ -97,4 +117,21 @@ public function panel(Panel $panel): Panel // ApplyTenantScopes::class, ], isPersistent: true); } + + protected function setDefaultDateTimeDisplayFormats(): void + { + Table::$defaultDateDisplayFormat = static::$defaultDateDisplayFormat; + Table::$defaultDateTimeDisplayFormat = static::$defaultDateTimeDisplayFormat; + Table::$defaultTimeDisplayFormat = static::$defaultTimeDisplayFormat; + + Infolist::$defaultDateDisplayFormat = static::$defaultDateDisplayFormat; + Infolist::$defaultDateTimeDisplayFormat = static::$defaultDateTimeDisplayFormat; + Infolist::$defaultTimeDisplayFormat = static::$defaultTimeDisplayFormat; + + DateTimePicker::$defaultDateDisplayFormat = static::$defaultDateDisplayFormat; + DateTimePicker::$defaultDateTimeDisplayFormat = static::$defaultDateTimeDisplayFormat; + DateTimePicker::$defaultDateTimeWithSecondsDisplayFormat = static::$defaultDateTimeWithSecondsDisplayFormat; + DateTimePicker::$defaultTimeDisplayFormat = static::$defaultTimeDisplayFormat; + DateTimePicker::$defaultTimeWithSecondsDisplayFormat = static::$defaultTimeWithSecondsDisplayFormat; + } } diff --git a/database/factories/BeneficiaryFactory.php b/database/factories/BeneficiaryFactory.php index c8bc8163..3031c83a 100644 --- a/database/factories/BeneficiaryFactory.php +++ b/database/factories/BeneficiaryFactory.php @@ -4,6 +4,7 @@ namespace Database\Factories; +use App\Enums\CaseStatus; use App\Enums\CivilStatus; use App\Enums\Gender; use App\Enums\IDType; @@ -42,6 +43,8 @@ public function definition(): array 'primary_phone' => fake()->phoneNumber(), 'backup_phone' => fake()->boolean(25) ? fake()->phoneNumber() : null, + + 'status' => fake()->randomElement(CaseStatus::values()), ]; } diff --git a/database/migrations/2023_11_20_130401_create_beneficiaries_table.php b/database/migrations/2023_11_20_130401_create_beneficiaries_table.php index 7a9b38c9..aee49c43 100644 --- a/database/migrations/2023_11_20_130401_create_beneficiaries_table.php +++ b/database/migrations/2023_11_20_130401_create_beneficiaries_table.php @@ -28,6 +28,8 @@ public function up(): void ->constrained() ->cascadeOnDelete(); + $table->string('status'); + $table->string('first_name')->nullable(); $table->string('last_name')->nullable(); $table->string('prior_name')->nullable(); diff --git a/lang/ro/beneficiary.php b/lang/ro/beneficiary.php index 706b8481..49f2fbc8 100644 --- a/lang/ro/beneficiary.php +++ b/lang/ro/beneficiary.php @@ -39,4 +39,12 @@ ], ], ], + + 'status' => [ + 'active' => 'Activ', + 'reactivated' => 'Reactivat', + 'monitoring' => 'În monitorizare', + 'closed' => 'Închis', + ], + ]; diff --git a/lang/ro/field.php b/lang/ro/field.php index 43bcbc45..a53ebf57 100644 --- a/lang/ro/field.php +++ b/lang/ro/field.php @@ -5,13 +5,23 @@ return [ 'age' => 'Vârstă', + 'backup_phone' => 'Număr telefon rezervă', + 'beneficiary' => 'Beneficiar', + 'birthdate' => 'Data nașterii', + 'birthplace' => 'Locul nașterii', + 'case_id' => 'Număr caz', + 'citizenship' => 'Cetățenie', 'city' => 'Localitate', 'civil_status' => 'Stare civilă', 'cnp' => 'CNP', + 'contact_notes' => 'Notițe legate de contactare beneficiar', 'county' => 'Județ', - 'birthdate' => 'Data nașterii', - 'birthplace' => 'Locul nașterii', + 'create_beneficiary_consent' => 'Confirm că s-a obținut acordul beneficiarului pentru înregistrarea datelor personale și utilizarea datelor rezultate din evaluare și intervenție în scopul oferirii serviciilor de management de caz.', 'date' => 'Data', + 'effective_residence_address' => 'Adresă domiciliu efectiv', + 'effective_residence_city' => 'Oraș/UAT domiciliu efectiv', + 'effective_residence_county' => 'Județ domiciliu efectiv', + 'effective_residence_environment' => 'Mediu rezidență domiciliu efectiv', 'email' => 'Email', 'ethnicity' => 'Etnie', 'first_name' => 'Prenume', @@ -27,16 +37,26 @@ 'intervention_name' => 'Nume intervenție', 'intervention_reason' => 'Motivul intervenției', 'interventions' => 'Intervenții', + 'last_evaluated_at' => 'Ultima evaluare', 'last_name' => 'Nume', + 'last_serviced_at' => 'Ultimul serviciu', + 'legal_residence_address' => 'Adresă domiciliu legal', + 'legal_residence_city' => 'Oraș/UAT domiciliu legal', + 'legal_residence_county' => 'Județ domiciliu legal', + 'legal_residence_environment' => 'Mediu rezidență domiciliu legal', 'location' => 'Locație', 'notes' => 'Descriere / Observații', 'nurse' => 'Asistent Medical Comunitar', + 'open_at' => 'Deschis la', 'organizer' => 'Organizator', 'outside_working_hours' => 'Realizat în afara programului de lucru', 'participants_list' => 'Listă nominală participanți', 'participants' => 'Participanți', 'phone' => 'Telefon', + 'primary_phone' => 'Număr telefon primar', + 'prior_name' => 'Nume anterior', 'reason_removed' => 'Motiv scoatere din evidență', + 'same_as_legal_residence' => 'Domiciliul legal al beneficiarului este și domiciliul efectiv', 'section_details' => ':section - detalii', 'service_name' => 'Nume serviciu', 'service_status' => 'Status serviciu', @@ -47,24 +67,5 @@ 'start_time' => 'Oră început', 'start_year' => 'Anul de început', 'status' => 'Status', - 'prior_name' => 'Nume anterior', - 'citizenship' => 'Cetățenie', - - 'legal_residence_county' => 'Județ domiciliu legal', - 'legal_residence_city' => 'Oraș/UAT domiciliu legal', - 'legal_residence_address' => 'Adresă domiciliu legal', - 'legal_residence_environment' => 'Mediu rezidență domiciliu legal', - 'same_as_legal_residence' => 'Domiciliul legal al beneficiarului este și domiciliul efectiv', - - 'effective_residence_county' => 'Județ domiciliu efectiv', - 'effective_residence_city' => 'Oraș/UAT domiciliu efectiv', - 'effective_residence_address' => 'Adresă domiciliu efectiv', - 'effective_residence_environment' => 'Mediu rezidență domiciliu efectiv', - - 'primary_phone' => 'Număr telefon primar', - 'backup_phone' => 'Număr telefon rezervă', - 'contact_notes' => 'Notițe legate de contactare beneficiar', - - 'create_beneficiary_consent' => 'Confirm că s-a obținut acordul beneficiarului pentru înregistrarea datelor personale și utilizarea datelor rezultate din evaluare și intervenție în scopul oferirii serviciilor de management de caz.', ]; diff --git a/lang/ro/placeholder.php b/lang/ro/placeholder.php index 717406a2..029aeb5e 100644 --- a/lang/ro/placeholder.php +++ b/lang/ro/placeholder.php @@ -23,4 +23,44 @@ 'phone' => 'Introdu număr telefon', 'contact_notes' => 'Adaugă interval orar sau orice detalii relevante legate de preferințe în contactare', + // 'accreditation_number' => 'Introdu seria și numărul', + // 'activity' => 'Introdu activitatea', + // 'age' => 'Vârstă', + // 'all_beneficiaries' => 'Toți beneficiarii', + // 'choose_services' => 'Alegeți unul sau mai multe servicii', + // + // 'city' => 'Alege localitatea', + // + // + // 'course_credits' => 'Total credite EMC obținute', + // 'course_name' => 'Numele cursului EMC', + // 'course_provider' => 'Numele organizatiei care a oferit cursul', + // 'course_theme' => 'Tema cursului EMC', + // 'date' => 'Alege o dată', + // 'email' => 'Adresă de email', + // 'employer_name' => 'Numele organizației angajatoare', + // 'employer_ongoing' => 'Lucrez aici în prezent', + // 'employer_project' => 'Introdu numele proiectului', + // 'employer_type' => 'Tip angajator', + // 'family' => 'Alege o familie', + // 'household' => 'Alege o gospodărie', + // 'id_number' => 'Introdu numărul actului de identitate', + // 'id_serial' => 'Introdu seria actului de identitate', + // 'id_type' => 'Alege un tip de act de identitate', + // 'intervention_reason' => 'Motivul intervenției', + + // 'location' => 'Introdu locația', + // 'no_segmentation_age' => 'Fără segmentare pe vârstă', + // 'no_segmentation_city' => 'Fără segmentare pe localitate', + // 'no_segmentation_county' => 'Fără segmentare pe județ', + // 'no_segmentation_gender' => 'Fără segmentare pe sex', + // 'organizer' => 'Introdu organizatorul', + // 'participants' => 'Introdu număr beneficiari', + // + // + // + // 'study_duration' => 'Total durată în ani', + // 'study_institution' => 'Introdu numele instituției', + // 'study_name' => 'Numele programului educațional', + ];