Skip to content

Commit

Permalink
Merge pull request #406 from code4romania/copy-beneficiary-labels
Browse files Browse the repository at this point in the history
Copy beneficiary labels
  • Loading branch information
gheorghelupu17 authored Dec 12, 2024
2 parents 41c38f0 + 35ed0d1 commit c602cdc
Show file tree
Hide file tree
Showing 2 changed files with 69 additions and 39 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
use App\Enums\AddressType;
use App\Filament\Organizations\Resources\BeneficiaryResource;
use App\Forms\Components\Notice;
use App\Forms\Components\Radio;
use App\Models\Beneficiary;
use App\Models\Organization;
use App\Models\Scopes\BelongsToCurrentTenant;
Expand All @@ -22,7 +21,9 @@
use Filament\Forms\Components\Placeholder;
use Filament\Forms\Components\Section;
use Filament\Forms\Components\TextInput;
use Filament\Forms\Components\Wizard;
use Filament\Forms\Components\Wizard\Step;
use Filament\Forms\Form;
use Filament\Forms\Get;
use Filament\Forms\Set;
use Filament\Resources\Pages\CreateRecord;
Expand Down Expand Up @@ -80,6 +81,22 @@ protected function setParentBeneficiary(): void
$this->parentBeneficiary = $parentBeneficiaryID ? Beneficiary::find($parentBeneficiaryID) : null;
}

public function form(Form $form): Form
{
return parent::form($form)
->schema([
Wizard::make($this->getSteps())
->extraAlpineAttributes([
'@copy_beneficiary_data.window' => "step='beneficiary'",
])
->startOnStep($this->getStartStep())
->cancelAction($this->getCancelFormAction())
->submitAction($this->getSubmitFormAction())
->skippable($this->hasSkippableSteps()),
])
->columns(null);
}

public function getStartStep(): int
{
return $this->parentBeneficiary ? 3 : 1;
Expand Down Expand Up @@ -165,37 +182,34 @@ protected function getSteps(): array
->first()
)
->content(function (Get $get) {
return new HtmlString(__('beneficiary.placeholder.beneficiary_exists'));
$beneficiary = Beneficiary::query()
->where('cnp', $get('cnp'))
->first();

if (! $beneficiary) {
$organizations = auth()->user()->organizations
->filter(fn (Organization $organization) => $organization->institution_id == Filament::getTenant()->institution_id);
$beneficiary = Beneficiary::query()
->where('cnp', $get('cnp'))
->whereIn('organization_id', $organizations->pluck('id')->toArray())
->withoutGlobalScopes([BelongsToCurrentTenant::class])
->with('organization')
->first();
if ($beneficiary) {
return new HtmlString(__('beneficiary.placeholder.beneficiary_exists'));
}

if (! $beneficiary) {
return '';
}
$organizations = auth()->user()->organizations
->filter(fn (Organization $organization) => $organization->institution_id == Filament::getTenant()->institution_id);
$beneficiary = Beneficiary::query()
->where('cnp', $get('cnp'))
->whereIn('organization_id', $organizations->pluck('id')->toArray())
->withoutGlobalScopes([BelongsToCurrentTenant::class])
->with('organization')
->first();

return new HtmlString(__('beneficiary.placeholder.beneficiary_exists', [
'url' => BeneficiaryResource::getUrl('view', ['record' => $beneficiary, 'tenant' => $beneficiary->organization]),
]));
if (! $beneficiary) {
return '';
}

return new HtmlString(__('beneficiary.placeholder.beneficiary_exists', [
'url' => BeneficiaryResource::getUrl('view', ['record' => $beneficiary]),
return new HtmlString(__('beneficiary.placeholder.beneficiary_exists_in_another_tenant', [
'center' => $beneficiary->organization->name,
]));
})
->registerActions([
Action::make('view_beneficiary')
->label(__('general.action.view_details'))
->label(__('beneficiary.action.view_case_details'))
->link()
->url(
fn (Get $get) => BeneficiaryResource::getUrl('view', [
Expand All @@ -211,23 +225,35 @@ protected function getSteps(): array
),

Action::make('view_beneficiary_from_another_tenant')
->label(__('general.action.view_details'))
->label(__('beneficiary.action.copy_beneficiary_data'))
->link()
->modalHeading(__('beneficiary.headings.modal_create_beneficiary_from_anther_tenant'))
->form([
Radio::make('copy_beneficiary')
->label(__('beneficiary.labels.beneficiary_exist'))
->options([
'yes' => __('beneficiary.labels.copy_data_from_another_tenant'),
'no' => __('beneficiary.labels.continue_register_without_copy'),
]),
])
->modalSubmitActionLabel(__('beneficiary.action.register'))
->action(function (array $data, Get $get, Set $set): void {
if ($data['copy_beneficiary'] !== 'yes') {
return;
}

->modalDescription(
fn (Get $get) => __('beneficiary.labels.modal_create_beneficiary_from_anther_tenant', [
'cnp' => $get('cnp'),
'center' => Beneficiary::query()
->where('cnp', $get('cnp'))
->whereIn(
'organization_id',
auth()->user()
->organizations
->filter(
fn (Organization $organization) => $organization->institution_id == Filament::getTenant()->institution_id
&& $organization !== Filament::getTenant()
)
->pluck('id')
->toArray()
)
->withoutGlobalScopes([BelongsToCurrentTenant::class])
->with(['organization'])
->first()
->organization
->name,
])
)
->modalSubmitActionLabel(__('beneficiary.action.continue_copy_beneficiary_data'))
->modalWidth('md')
->action(function (Get $get, Set $set): void {
$beneficiary = Beneficiary::query()
->where('cnp', $get('cnp'))
->whereIn(
Expand Down Expand Up @@ -261,6 +287,8 @@ protected function getSteps(): array
}
$set($beneficiaryKey, $beneficiaryValue);
}

$this->dispatch('copy_beneficiary_data');
})
->visible(
fn (Get $get) => ! Beneficiary::query()
Expand Down
10 changes: 6 additions & 4 deletions lang/ro/beneficiary.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,7 @@
'related_cases' => 'Istoric caz (fișe conectate cazului)',
'case_manager' => 'Manager de caz',
'beneficiary_exist' => 'Beneficiarul cu CNP-ul introdus există în baza de date.',
'copy_data_from_another_tenant' => 'Copiază datele de identificare în noul dosar de management de caz',
'continue_register_without_copy' => 'Continuă cu adăugarea beneficiarului, fără copierea datelor de identificare în noul dosar de management de caz',

'modal_create_beneficiary_from_anther_tenant' => 'Beneficiarul cu CNP :cnp există în baza de date :center. Continuă cu adăugarea beneficiarului cu copierea datelor de identificare în noul dosar de management de caz. Acestea vor putea fi modificate sau actualizate în pasul următor',
],

'page' => [
Expand Down Expand Up @@ -483,6 +481,9 @@
'reactivate' => 'Reactivează caz (dosar nou)',
'reactivate_modal' => 'Reactivează',
'delete' => 'Șterge dosar caz',
'continue_copy_beneficiary_data' => 'Continuă cu copiere',
'copy_beneficiary_data' => 'Copiază date identitate',
'view_case_details' => 'Vezi detalii caz',
],

'breadcrumb' => [
Expand All @@ -492,7 +493,7 @@
],

'headings' => [
'modal_create_beneficiary_from_anther_tenant' => 'Beneficiar identificat în baza de date',
'modal_create_beneficiary_from_anther_tenant' => 'Beneficiar identificat în baza de date a instituției',
],

'placeholder' => [
Expand Down Expand Up @@ -526,6 +527,7 @@
'email' => 'Introdu un email',
'consent' => 'Odată înregistrat cazul în sistem, aceste formulare de obținere a consimțământului vor putea fi încarcate în sistem, în secțiunea Documente Beneficiar.',
'beneficiary_exists' => 'CNP-ul a fost identificat în această bază de date.',
'beneficiary_exists_in_another_tenant' => 'CNP-ul a fost identificat în baza de date :center. Cu permisiunea beneficiarei poți copia datele de identificare ale persoanei în această bază de date. ',
'file_name' => 'Nume document',
'reactivate_text_1' => 'Prin reactivarea unui caz se va duplica dosarului beneficiarului pentru a putea fi completat cu informații noi, fără a pierde informațiile despre evaluările și managementul de caz anterior.',
'reactivate_text_2' => 'Toate datele de identitate se vor copia din dosarul curent și pot fi actualizate manual pentru această nouă reactivare. Toate formularele vor fi disponibile pentru a fi completate cu informații noi.',
Expand Down

0 comments on commit c602cdc

Please sign in to comment.