From 24e232743983e692ab01787d4355bc9d34677bce Mon Sep 17 00:00:00 2001 From: dhanabalan Date: Fri, 23 Jan 2026 16:51:30 +0530 Subject: [PATCH] Refactor characteristic approval routes and enhance session handling --- routes/web.php | 247 ++++++++++++++++++++++++++++--------------------- 1 file changed, 143 insertions(+), 104 deletions(-) diff --git a/routes/web.php b/routes/web.php index ca8fd60..3a22a96 100644 --- a/routes/web.php +++ b/routes/web.php @@ -1,76 +1,116 @@ $request->serial_numbers]); - return response()->json([ - 'status' => 'success', - 'serial_numbers' => session('serial_numbers'), - ]); - }); +// ..Characteristic Approval Routes..// - Route::get('/part-validation-image/{filename}', function ($filename) { - $path = storage_path("app/private/uploads/PartValidation/{$filename}"); +Route::get('/characteristic/hold', [CharacteristicApprovalController::class, 'holdForm']) + ->name('characteristic.hold') + ->middleware('signed'); - if (!file_exists($path)) { - abort(404, 'Image not found'); - } +Route::post('/characteristic/hold-save', [CharacteristicApprovalController::class, 'holdSave']) + ->name('characteristic.hold.save'); - return response()->file($path); - })->name('part.validation.image'); +Route::get('/approval/hold-success', function () { + return view('approval.hold-success'); +})->name('approval.hold.success'); - // web.php - Route::post('/temp-upload', function (Request $request) { - if (!$request->hasFile('photo')) { - return response()->json(['success' => false], 400); - } +Route::get('/characteristic/reject', [CharacteristicApprovalController::class, 'rejectForm']) + ->name('characteristic.reject') + ->middleware('signed'); - $file = $request->file('photo'); - $filename = 'capture_' . time() . '.jpeg'; - $path = $file->storeAs('temp', $filename, 'local'); // storage/app/temp +Route::post('/characteristic/reject-save', [CharacteristicApprovalController::class, 'rejectSave']) + ->name('characteristic.reject.save'); - return response()->json([ - 'success' => true, - 'path' => $path, - ]); - }); +Route::get('/approval/reject-success', function () { + return view('approval.reject-success'); +})->name('approval.reject.success'); - Route::post('/verify-ocr', function (Request $request) { +Route::get('/characteristic/approve', [CharacteristicApprovalController::class, 'approve']) + ->name('characteristic.approve') + ->middleware('signed'); - if (!$request->has('path')) { - return response()->json(['success' => false, 'error' => 'No file path provided']); - } +Route::post('/file-upload', [FileUploadController::class, 'upload'])->name('file.upload'); - $filePath = storage_path('app/private/temp/' . basename($request->path)); +// Route::get('/characteristic/hold', [CharacteristicApprovalController::class, 'hold']) +// ->name('characteristic.hold') +// ->middleware('signed'); - if (!file_exists($filePath)) { - return response()->json(['success' => false, 'error' => 'File not found']); - } +// Route::get('/characteristic/reject', [CharacteristicApprovalController::class, 'reject']) +// ->name('characteristic.reject') +// ->middleware('signed'); - try { +// routes/web.php +Route::post('/save-serials-to-session', function (Request $request) { + session(['serial_numbers' => $request->serial_numbers]); + + return response()->json([ + 'status' => 'success', + 'serial_numbers' => session('serial_numbers'), + ]); +}); + +Route::get('/part-validation-image/{filename}', function ($filename) { + $path = storage_path("app/private/uploads/PartValidation/{$filename}"); + + if (! file_exists($path)) { + abort(404, 'Image not found'); + } + + return response()->file($path); +})->name('part.validation.image'); + +// web.php +Route::post('/temp-upload', function (Request $request) { + if (! $request->hasFile('photo')) { + return response()->json(['success' => false], 400); + } + + $file = $request->file('photo'); + $filename = 'capture_'.time().'.jpeg'; + $path = $file->storeAs('temp', $filename, 'local'); // storage/app/temp + + return response()->json([ + 'success' => true, + 'path' => $path, + ]); +}); + +Route::post('/verify-ocr', function (Request $request) { + + if (! $request->has('path')) { + return response()->json(['success' => false, 'error' => 'No file path provided']); + } + + $filePath = storage_path('app/private/temp/'.basename($request->path)); + + if (! file_exists($filePath)) { + return response()->json(['success' => false, 'error' => 'File not found']); + } + + try { // $text = (new TesseractOCR($filePath))->lang('eng')->run(); $text = (new TesseractOCR($filePath)) - ->executable('/usr/bin/tesseract') - ->lang('eng') - ->psm(6) // treats the image as a block of text - ->config('tessedit_char_whitelist', '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz') - ->run(); + ->executable('/usr/bin/tesseract') + ->lang('eng') + ->psm(6) // treats the image as a block of text + ->config('tessedit_char_whitelist', '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz') + ->run(); $text = trim($text); // remove whitespace @@ -79,19 +119,19 @@ use thiagoalessio\TesseractOCR\TesseractOCR; return response()->json(['success' => true, 'text' => 'Text not found']); } - //return response()->json(['success' => true, 'text' => $text]); - $lines = preg_split('/\r\n|\r|\n/', $text); - $serials = array_filter(array_map('trim', $lines), fn($line) => preg_match('/^[A-Za-z0-9]+$/', $line)); + // return response()->json(['success' => true, 'text' => $text]); + $lines = preg_split('/\r\n|\r|\n/', $text); + $serials = array_filter(array_map('trim', $lines), fn ($line) => preg_match('/^[A-Za-z0-9]+$/', $line)); - return response()->json([ - 'success' => true, - 'text' => array_values($serials) // reindex array - ]); - } - //catch (\Exception $e) { - // return response()->json(['success' => false, 'error' => $e->getMessage()]); - // } - catch (\Exception $e) { + return response()->json([ + 'success' => true, + 'text' => array_values($serials), // reindex array + ]); + } + // catch (\Exception $e) { + // return response()->json(['success' => false, 'error' => $e->getMessage()]); + // } + catch (\Exception $e) { // Log the full exception class and message \Log::error('Tesseract OCR failed', [ 'exception_class' => get_class($e), @@ -111,62 +151,61 @@ use thiagoalessio\TesseractOCR\TesseractOCR; 'trace' => $e->getTraceAsString(), ]); } - }); +}); - Route::get('/download/{equipmentNumber}', function ($equipmentNumber) { +Route::get('/download/{equipmentNumber}', function ($equipmentNumber) { $model = EquipmentMaster::where('equipment_number', $equipmentNumber)->firstOrFail(); if (! $model->attachment || ! Storage::disk('local')->exists($model->attachment)) { abort(404, 'File not found.'); } - return Storage::disk('local')->download($model->attachment); - })->name('download.attachment'); - // Route::get('/admin/forgot-password', function () { - // return view('auth.forgot-password'); - // })->name('filament.admin.forgot-password'); + return Storage::disk('local')->download($model->attachment); +})->name('download.attachment'); +// Route::get('/admin/forgot-password', function () { +// return view('auth.forgot-password'); +// })->name('filament.admin.forgot-password'); - // Route::post('/admin/forgot-password', function(Request $request){ +// Route::post('/admin/forgot-password', function(Request $request){ - // $validator = Validator::make($request->all(), [ - // 'email'=>'required|email', - // 'old_password'=>'required', - // 'password'=>'required', - // 'password_confirmation'=>'required' - // ]); +// $validator = Validator::make($request->all(), [ +// 'email'=>'required|email', +// 'old_password'=>'required', +// 'password'=>'required', +// 'password_confirmation'=>'required' +// ]); - // if($validator->fails()){ - // return response()->json([ - // 'emailError' => $validator->errors()->first('email'), - // 'oldPasswordError' => $validator->errors()->first('old_password'), - // 'newPasswordError' => $validator->errors()->first('password'), - // 'confirmPasswordError' => $validator->errors()->first('password_confirmation') - // ]); - // } +// if($validator->fails()){ +// return response()->json([ +// 'emailError' => $validator->errors()->first('email'), +// 'oldPasswordError' => $validator->errors()->first('old_password'), +// 'newPasswordError' => $validator->errors()->first('password'), +// 'confirmPasswordError' => $validator->errors()->first('password_confirmation') +// ]); +// } - // $user = User::where('email',$request->email)->first(); - // if(!$user){ - // return response()->json(['passwordError'=>'No user found with this email.']); - // } +// $user = User::where('email',$request->email)->first(); +// if(!$user){ +// return response()->json(['passwordError'=>'No user found with this email.']); +// } - // if(!Hash::check($request->old_password, $user->password)){ - // return response()->json(['oldPasswordError'=>'Old password does not match']); - // } +// if(!Hash::check($request->old_password, $user->password)){ +// return response()->json(['oldPasswordError'=>'Old password does not match']); +// } - // if($request->password != $request->password_confirmation){ - // return response()->json(['newPasswordError'=>'New password and confirm password do not match']); - // } +// if($request->password != $request->password_confirmation){ +// return response()->json(['newPasswordError'=>'New password and confirm password do not match']); +// } - // $user->password = Hash::make($request->password); - // $user->save(); +// $user->password = Hash::make($request->password); +// $user->save(); - // return response()->json(['success'=>'Password changed successfully!']); - // })->name('filament.admin.forgot-password.otp'); +// return response()->json(['success'=>'Password changed successfully!']); +// })->name('filament.admin.forgot-password.otp'); - - // Route::post('/admin/check-email', function(Request $request){ - // $request->validate(['email' => 'required|email']); - // $exists = User::where('email', $request->email)->first(); - // return response()->json(['exists' => $exists]); - // })->name('admin.check-email'); +// Route::post('/admin/check-email', function(Request $request){ +// $request->validate(['email' => 'required|email']); +// $exists = User::where('email', $request->email)->first(); +// return response()->json(['exists' => $exists]); +// })->name('admin.check-email');