From ef24ef854962257b41320e255bf12a3f3c66130d Mon Sep 17 00:00:00 2001 From: dhanabalan Date: Sun, 26 Jul 2026 10:49:29 +0530 Subject: [PATCH] Added dealer select option in visitor resource page --- .../Resources/VisitorEntryResource.php | 102 +++++++++++++++++- 1 file changed, 100 insertions(+), 2 deletions(-) diff --git a/app/Filament/Resources/VisitorEntryResource.php b/app/Filament/Resources/VisitorEntryResource.php index 7f94288..aba3e8c 100644 --- a/app/Filament/Resources/VisitorEntryResource.php +++ b/app/Filament/Resources/VisitorEntryResource.php @@ -8,6 +8,7 @@ use App\Filament\Resources\VisitorEntryResource\Pages; use App\Filament\Resources\VisitorEntryResource\RelationManagers; use App\Models\VisitorEntry; use App\Models\EmployeeMaster; +use App\Models\DealerVisitPlan; use App\Models\Plant; use Filament\Facades\Filament; use Filament\Forms; @@ -28,6 +29,7 @@ use Filament\Tables\Filters\Filter; use Filament\Forms\Components\DateTimePicker; use Filament\Forms\Components\Select; use Filament\Forms\Components\TextInput; +use Filament\Forms\Components\Radio; class VisitorEntryResource extends Resource { @@ -95,11 +97,13 @@ class VisitorEntryResource extends Resource $set('mobile_number', $employeeExist->mobile_number); $set('company', $plant->name); $set('type', 'InterUnitStaff'); + $set('dealer', null); } else { $set('name', null); $set('mobile_number', null); $set('company', null); $set('type', null); + $set('dealer', null); } } else @@ -109,6 +113,92 @@ class VisitorEntryResource extends Resource $set('company', null); $set('type', null); + } + }), + Forms\Components\Select::make('dealer') + ->label('Dealer Visit') + ->options( + DealerVisitPlan::where('status', 'Planned') + ->whereDate('visit_plan_date', today()) + ->select('organizer', 'company', 'name') + ->distinct() + ->orderBy('organizer') + ->get() + ->mapWithKeys(function ($dealer) { + $key = "{$dealer->organizer}|{$dealer->company}|{$dealer->name}"; + + return [ + $key => "{$dealer->organizer} ({$dealer->company}) ({$dealer->name})" + ]; + }) + ) + ->searchable() + ->reactive() + ->afterStateUpdated(function (callable $set, callable $get, $state) { + + if(!$state){ + $set('name', null); + $set('inter_unit', null); + $set('company', null); + $set('type', null); + $set('number_of_person', null); + $set('purpose_of_visit', null); + $set('department', null); + $set('employee_master_id', null); + return; + } + + [$organizer, $company, $name] = explode('|', $state); + + + $dealer = DealerVisitPlan::where('organizer', $organizer) + ->where('company', $company) + ->where('name', $name) + ->where('status', 'Planned') + ->whereDate('visit_plan_date', today()) + ->first(); + + if($dealer){ + + $organizerExist = DealerVisitPlan::where('organizer', $organizer)->where('name', $name)->where('company', $company)->latest()->first(); + + $empDepart = EmployeeMaster::where('id', $dealer->employee_master_id)->first(); + + if ($organizerExist) { + $set('name', $organizerExist->name); + $set('company', $organizerExist->company); + $set('number_of_person', $organizerExist->number_of_person); + $set('purpose_of_visit', $organizerExist->purpose_of_visit); + $set('type', 'Dealers'); + $set('department', $empDepart->department); + $set('organizer', $organizerExist->organizer); + $set('inter_unit', null); + $set('mobile_number', $organizerExist->mobile_number); + $set('mode_of_travel', $organizerExist->mode_of_travel); + } else { + $set('name', null); + $set('mobile_number', null); + $set('inter_unit', null); + $set('company', null); + $set('type', null); + $set('number_of_person', null); + $set('purpose_of_visit', null); + $set('department', null); + // $set('employee_master_id', null); + $set('code', null); + $set('mode_of_travel', null); + } + } + else + { + $set('name', null); + $set('company', null); + $set('type', null); + $set('number_of_person', null); + $set('purpose_of_visit', null); + $set('mode_of_travel', null); + $set('mobile_number', null); + } }), Forms\Components\TextInput::make('mobile_number') @@ -148,7 +238,8 @@ class VisitorEntryResource extends Resource 'Supplier' => 'Supplier', 'InterUnitStaff' => 'Inter Unit Staff', 'InterviewCandidates' => 'Interview Candidates', - 'Customers/Dealers' => 'Customers/Dealers', + 'Customers' => 'Customers', + 'Dealers' => 'Dealers', 'Bankers' => 'Bankers', 'ServiceProviders' => 'Service Providers', 'GovermentOfficials' => 'Government Officials', @@ -271,6 +362,8 @@ class VisitorEntryResource extends Resource ->validationMessages([ 'after' => 'Valid Upto must be after the In Time.', ]), + Forms\Components\Hidden::make('organizer') + ->label('Organizer'), Forms\Components\View::make('components.webcam-field') ->columnSpanFull(), Forms\Components\Hidden::make('photo'), @@ -317,8 +410,13 @@ class VisitorEntryResource extends Resource ->alignCenter() ->searchable() ->sortable(), + Tables\Columns\TextColumn::make('organizer') + ->label('Organizer') + ->alignCenter() + ->searchable() + ->sortable(), Tables\Columns\TextColumn::make('mobile_number') - ->label('Visitor Mobile Number') + ->label('Mobile Number') ->alignCenter() ->searchable() ->searchable()