form->fill(); } public function form(Form $form): Form { return $form->schema([ Forms\Components\Section::make('Upload Daily Task Report') ->schema([ Forms\Components\TextInput::make('file_name') ->label('File Name') ->reactive(), Forms\Components\FileUpload::make('report_pdf') ->label('Daily Report PDF') ->disk('local') ->directory('task_updates') ->acceptedFileTypes(['application/pdf']) ->required() ->maxSize(10240) ->preserveFilenames(), ]) ->columns(2), ])->statePath('filters'); } public function uploadTaskPdf(): void { $state = $this->form->getState(); // triggers upload/validation $currentFile = $state['report_pdf']; $directory = 'task_updates'; $filename = trim(basename($currentFile)); $path = 'task_updates/' . $filename; $expectedEmployees = [ 'Dhanabalan Saravanan', 'Ranjith', 'Srimathi Ramamoorthy', ]; $filename = pathinfo(basename($currentFile), PATHINFO_FILENAME); $isValid = collect($expectedEmployees)->contains( fn ($name) => strcasecmp(trim($filename), $name) == 0 ); if (! $isValid) { Notification::make() ->title('Invalid PDF filename') ->body( 'Please upload a PDF with one of these names: ' . implode(', ', array_map( fn ($name) => $name . '.pdf', $expectedEmployees )) ) ->danger() ->send(); $this->form->fill(['report_pdf' => null]); return; } else{ Notification::make() ->title('PDF uploaded successfully') ->success() ->send(); $this->form->fill(['report_pdf' => null]); } } public function removeTaskPdf(){ $fileName = $this->filters['file_name'] ?? null; if (!$fileName) { Notification::make() ->title('File Name Required') ->body('Please enter a file name before removing the PDF.') ->danger() ->send(); return; } $filePath = "task_updates/{$fileName}.pdf"; if (!Storage::disk('local')->exists($filePath)) { Notification::make() ->title('PDF Not Found') ->body('The selected PDF does not exist.') ->danger() ->send(); $this->form->fill(['file_name' => null]); return; } if (Storage::disk('local')->exists($filePath)) { if (Storage::disk('local')->delete($filePath)) { Notification::make() ->title('PDF Removed Successfully') ->body('The PDF was removed successfully.') ->success() ->send(); return; } else{ Notification::make() ->title('PDF Removed Failed') ->body('Unable to remove the PDF. Please try again...') ->success() ->send(); return; } } } public function downloadTaskPdf(){ $fileName = $this->filters['file_name'] ?? null; if (!$fileName) { Notification::make() ->title('File Name Required') ->body('Please enter a file name before removing the PDF.') ->danger() ->send(); return; } $filePath = "task_updates/{$fileName}.pdf"; if (!Storage::disk('local')->exists($filePath)) { Notification::make() ->title('PDF Not Found') ->body('The selected PDF does not exist.') ->danger() ->send(); $this->form->fill(['file_name' => null]); return; } if (Storage::disk('local')->exists($filePath)) { if($filePath){ $fullPath = Storage::disk('local')->path($filePath); Notification::make() ->title('PDF Downloaded Successfully') ->body('The PDF was downloaded successfully.') ->success() ->send(); return response()->download($fullPath, "{$fileName}.pdf"); } else{ Notification::make() ->title('PDF downloaded Failed') ->body('Unable to download the PDF. Please try again...') ->success() ->send(); return; } } } public static function canAccess(): bool { return Auth::check() && Auth::user()->can('view upload daily report page'); } }