From e7fa446fc3955ef877062b6b27fb704a31c6b290 Mon Sep 17 00:00:00 2001 From: dhanabalan Date: Tue, 26 May 2026 14:21:09 +0530 Subject: [PATCH] changed logic in create visitor --- .../Pages/CreateVisitorEntry.php | 84 ++++++++++++++----- 1 file changed, 61 insertions(+), 23 deletions(-) diff --git a/app/Filament/Resources/VisitorEntryResource/Pages/CreateVisitorEntry.php b/app/Filament/Resources/VisitorEntryResource/Pages/CreateVisitorEntry.php index 1413c41..5cb71ad 100644 --- a/app/Filament/Resources/VisitorEntryResource/Pages/CreateVisitorEntry.php +++ b/app/Filament/Resources/VisitorEntryResource/Pages/CreateVisitorEntry.php @@ -14,12 +14,14 @@ class CreateVisitorEntry extends CreateRecord { protected static string $resource = VisitorEntryResource::class; - #[On('photo-captured')] - public function handlePhotoCapture(string $photo): void - { - // Puts the Base64 photo into the form's data array - $this->data['photo'] = $photo; - } + public $capturedPhoto; + + // #[On('photo-captured')] + // public function handlePhotoCapture(string $photo): void + // { + // // Puts the Base64 photo into the form's data array + // $this->data['photo'] = $photo; + // } public function processMobile($mobile) { @@ -53,26 +55,62 @@ class CreateVisitorEntry extends CreateRecord } } - protected function mutateFormDataBeforeCreate(array $data): array - { - if ( - !empty($data['photo']) && - str_starts_with($data['photo'], 'data:image') - ) { - // Step A: Strip the "data:image/jpeg;base64," prefix - $imageData = explode(',', $data['photo'])[1]; + // protected function mutateFormDataBeforeCreate(array $data): array + // { + // if ( + // !empty($data['photo']) && + // str_starts_with($data['photo'], 'data:image') + // ) { + // // Step A: Strip the "data:image/jpeg;base64," prefix + // $imageData = explode(',', $data['photo'])[1]; - // Step B: Generate a unique filename - $filename = 'visitor_' . time() . '_' . uniqid() . '.jpg'; + // // Step B: Generate a unique filename + // $filename = 'visitor_' . time() . '_' . uniqid() . '.jpg'; - // Step C: Decode Base64 and save as a real .jpg file - $path = 'visitor-photos/' . $filename; - Storage::disk('public')->put($path, base64_decode($imageData)); + // // Step C: Decode Base64 and save as a real .jpg file + // $path = 'visitor-photos/' . $filename; + // Storage::disk('public')->put($path, base64_decode($imageData)); - // Step D: Replace the Base64 string with just the file path - $data['photo'] = $path; + // // Step D: Replace the Base64 string with just the file path + // $data['photo'] = $path; + // } + + // return $data; + // } + + #[On('photo-captured')] + public function handlePhotoCapture(string $photo): void + { + $this->data['photo'] = $photo; + \Log::info('WEBCAM: photo-captured event received, length: ' . strlen($photo)); } - return $data; - } + protected function mutateFormDataBeforeCreate(array $data): array + { + \Log::info('WEBCAM: mutateFormDataBeforeCreate called, photo value: ' . substr($data['photo'] ?? 'NULL', 0, 50)); + + if ( + !empty($data['photo']) && + str_starts_with($data['photo'], 'data:image') + ) { + $imageData = explode(',', $data['photo'])[1]; + $filename = 'visitor_' . time() . '_' . uniqid() . '.jpg'; + $path = 'visitor-photos/' . $filename; + Storage::disk('public')->put($path, base64_decode($imageData)); + $data['photo'] = $path; + + \Log::info('WEBCAM: photo saved to ' . $path); + } + + return $data; + } + + + public function setPhoto(string $photo): void + { + $this->capturedPhoto = $photo; + + // Change this ↓ to dispatch to parent explicitly + $this->dispatch('photo-captured', photo: $photo)->to(\App\Filament\Resources\VisitorEntryResource\Pages\CreateVisitorEntry::class); + } }