api create

This commit is contained in:
Shailesh-1981
2025-03-27 17:20:57 +05:30
parent 3f7084ef16
commit b54c6dbfba
6 changed files with 187 additions and 5 deletions

View File

@@ -0,0 +1,94 @@
<?php
namespace App\Http\Controllers\APIS\CustomerApi;
use App\Http\Controllers\Controller;
use App\Models\Reports;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
use Carbon\Carbon;
use Illuminate\Support\Facades\Auth;
class DownloadsController extends Controller
{
//
public function storePdfData(Request $request)
{
$validator = Validator::make($request->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
]);
}
}
}

16
app/Models/Reports.php Normal file
View File

@@ -0,0 +1,16 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class Reports extends Model
{
use SoftDeletes;
//
protected $table ="reports";
protected $guarded =[];
protected $dates = ['deleted_at'];
}

View File

@@ -0,0 +1,34 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('reports', function (Blueprint $table) {
$table->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');
}
};

View File

@@ -0,0 +1,32 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('reports', function (Blueprint $table) {
//
$table->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');
});
}
};

View File

@@ -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 ********************************************************

View File

@@ -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');
});