From b54c6dbfba9caf46bed4028cab3079c8a1674e0c Mon Sep 17 00:00:00 2001 From: Shailesh-1981 <86923815+Shailesh-1981@users.noreply.github.com> Date: Thu, 27 Mar 2025 17:20:57 +0530 Subject: [PATCH] api create --- .../APIS/CustomerApi/DownloadsController.php | 94 +++++++++++++++++++ app/Models/Reports.php | 16 ++++ ...2025_03_27_064213_create_reports_table.php | 34 +++++++ ...27_073243_add_user_id_to_reports_table.php | 32 +++++++ routes/admin_api.php | 2 + routes/customer_api.php | 14 ++- 6 files changed, 187 insertions(+), 5 deletions(-) create mode 100644 app/Http/Controllers/APIS/CustomerApi/DownloadsController.php create mode 100644 app/Models/Reports.php create mode 100644 database/migrations/2025_03_27_064213_create_reports_table.php create mode 100644 database/migrations/2025_03_27_073243_add_user_id_to_reports_table.php diff --git a/app/Http/Controllers/APIS/CustomerApi/DownloadsController.php b/app/Http/Controllers/APIS/CustomerApi/DownloadsController.php new file mode 100644 index 0000000..e8d0f71 --- /dev/null +++ b/app/Http/Controllers/APIS/CustomerApi/DownloadsController.php @@ -0,0 +1,94 @@ +all(), [ + 'user_id' => ['required'], + 'device_xid' => ['required'], + 'start_date' => ['required'], + 'end_date' => ['required'], + 'report_type' => ['required'], + 'download_status' => ['required'], + ]); + if ($validator->fails()) { + return response()->json([ + 'status' => 422, + 'message' => 'Validation failed', + 'errors' => $validator->errors() + ]); + } + + $data = Reports::create([ + 'request_time' => Carbon::now(), + 'user_id' => $request->user_id, + 'device_xid' => $request->device_xid, + 'start_date' => $request->start_date, + 'end_date' => $request->end_date, + 'report_type' => $request->report_type, + 'download_status' => $request->download_status, + ]); + + if ($data) { + return response()->json([ + 'status' => 200, + 'message' => 'Report data saved successfully', + 'data' => $data + ]); + } + } + + public function fetchReport(Request $request) + { + $userId = Auth::id(); + $data = Reports::where('user_id', $userId)->whereNull('deleted_at')->get(); + if($data){ + return response()->json([ + 'status' => 200, + 'message' => 'Report data fetch successfully', + 'data' => $data + ]); + + }else{ + return response()->json([ + 'status' => 404, + 'message' => 'Report data not found', + 'data' => $data + ]); + + } + + } + + public function destroyReport() + { + $userId = Auth::id(); + $data = Reports::where('user_id', $userId)->whereNull('deleted_at')->delete(); + if ($data) { + return response()->json([ + 'status' => 200, + 'message' => 'Report data deleted successfully', + 'data' => $data + ]); + } else { + return response()->json([ + 'status' => 404, + 'message' => 'Report data not found', + 'data' => $data + ]); + } + } +} diff --git a/app/Models/Reports.php b/app/Models/Reports.php new file mode 100644 index 0000000..45af36f --- /dev/null +++ b/app/Models/Reports.php @@ -0,0 +1,16 @@ +id(); + $table->timestamp('request_time')->nullable();; + $table->string('device_xid'); + $table->timestamp('start_date')->nullable();; + $table->timestamp('end_date')->nullable();; + $table->boolean('report_type')->default(false)->comment('Report status: 0 = pdf, 1 = spreadsheet'); + $table->boolean('download_status')->default(false)->comment('Download status: 0 = failed, 1 = completed'); + $table->softDeletes(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('reports'); + } +}; diff --git a/database/migrations/2025_03_27_073243_add_user_id_to_reports_table.php b/database/migrations/2025_03_27_073243_add_user_id_to_reports_table.php new file mode 100644 index 0000000..5749b07 --- /dev/null +++ b/database/migrations/2025_03_27_073243_add_user_id_to_reports_table.php @@ -0,0 +1,32 @@ +string('user_id')->nullable()->after('request_time'); // Change 'existing_column' to the column after which you want to add the new column + + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('reports', function (Blueprint $table) { + // + $table->dropColumn('user_id'); + + }); + } +}; diff --git a/routes/admin_api.php b/routes/admin_api.php index ec53649..0745cd8 100644 --- a/routes/admin_api.php +++ b/routes/admin_api.php @@ -64,3 +64,5 @@ Route::post('/update-device-profile-master/{deviceId}', [DeviceProfileMasterCont Route::post('/alarm/create-or-update', [AlarmController::class, 'createOrUpdateAlarm'])->name('alarm.create-or-update'); Route::post('/alarm/filter', [AlarmController::class, 'filterAlarm'])->name('alarm.filter'); +//******************************************************* Report API ******************************************************** + diff --git a/routes/customer_api.php b/routes/customer_api.php index a6bbd57..223b9a3 100644 --- a/routes/customer_api.php +++ b/routes/customer_api.php @@ -8,6 +8,8 @@ use Tymon\JWTAuth\Facades\JWTAuth; use App\Http\Controllers\APIS\CustomerApi\AuthController; use App\Http\Controllers\APIS\CustomerApi\CustomerDeviceInfoController; use App\Http\Controllers\APIS\CustomerApi\TelemetryController; +use App\Http\Controllers\APIS\CustomerApi\DownloadsController as CustomerApiDownloadsController; + Route::get('/customerapi', function () { return ('Welcome to admin api routes.'); @@ -15,15 +17,17 @@ Route::get('/customerapi', function () { Route::post('user-login', [AuthController::class, 'login']); -Route::get('/customer-device-info',[CustomerDeviceInfoController::class,'customerDeviceInfo']); -Route::post('/telemetry-data-asset',[TelemetryController::class,'telemetryDataAsset']); -Route::post('/telemetry-data-device',[TelemetryController::class,'telemetryDataDevice']); -Route::post('/telemetry-data-device-diagnostic',[TelemetryController::class,'telemePtryDataDeviceDiagnostic']); +Route::get('/customer-device-info', [CustomerDeviceInfoController::class, 'customerDeviceInfo']); +Route::post('/telemetry-data-asset', [TelemetryController::class, 'telemetryDataAsset']); +Route::post('/telemetry-data-device', [TelemetryController::class, 'telemetryDataDevice']); +Route::post('/telemetry-data-device-diagnostic', [TelemetryController::class, 'telemePtryDataDeviceDiagnostic']); // Route::post('/user-login', [AuthController::class, 'login']); Route::middleware(['customerApiBasicAuth'])->group(function () { Route::get('/user-assets', [UserAssetLinkController::class, 'index']); - + Route::post('/store/report', [CustomerApiDownloadsController::class, 'storePdfData'])->name('store-report'); + Route::post('/fetch/report', [CustomerApiDownloadsController::class, 'fetchReport'])->name('fetch-report'); + Route::post('/destroy/report', [CustomerApiDownloadsController::class, 'destroyReport'])->name('destroy-report'); });