From de5dc2f6865aa5490c13cd73412d50d00271db38 Mon Sep 17 00:00:00 2001 From: amirghasempoor Date: Sat, 19 Jul 2025 14:27:07 +0330 Subject: [PATCH] create road item webservice --- app/Http/Controllers/V3/ProfileController.php | 1 + .../RoadItemController.php} | 11 +++--- .../RoadMaintenanceStationController.php | 33 ++++++++++++++++++ .../RoadItem/IndexRequest.php} | 16 ++++----- .../RoadMaintenanceStation/IndexRequest.php | 34 +++++++++++++++++++ ...05_18_090655_create_missionables_table.php | 2 +- routes/v3.php | 4 +-- 7 files changed, 84 insertions(+), 17 deletions(-) rename app/Http/Controllers/V3/{Dashboard/RoadItem/WebServiceController.php => WebServices/RoadItemController.php} (54%) create mode 100644 app/Http/Controllers/V3/WebServices/RoadMaintenanceStationController.php rename app/Http/Requests/V3/{RoadItem/WebService/CheckRequest.php => WebServices/RoadItem/IndexRequest.php} (55%) create mode 100644 app/Http/Requests/V3/WebServices/RoadMaintenanceStation/IndexRequest.php diff --git a/app/Http/Controllers/V3/ProfileController.php b/app/Http/Controllers/V3/ProfileController.php index 008ec6e7..b4b0fa70 100644 --- a/app/Http/Controllers/V3/ProfileController.php +++ b/app/Http/Controllers/V3/ProfileController.php @@ -22,6 +22,7 @@ class ProfileController extends Controller $user = Auth::user(); return $this->successResponse([ + 'id' => $user->id, 'username' => $user->username, 'first_name' => $user->first_name, 'last_name' => $user->last_name, diff --git a/app/Http/Controllers/V3/Dashboard/RoadItem/WebServiceController.php b/app/Http/Controllers/V3/WebServices/RoadItemController.php similarity index 54% rename from app/Http/Controllers/V3/Dashboard/RoadItem/WebServiceController.php rename to app/Http/Controllers/V3/WebServices/RoadItemController.php index cb7af26c..e395f4dd 100644 --- a/app/Http/Controllers/V3/Dashboard/RoadItem/WebServiceController.php +++ b/app/Http/Controllers/V3/WebServices/RoadItemController.php @@ -1,22 +1,23 @@ from_date; $toDate = $request->to_date; $roadItems = RoadItemsProject::query() - ->whereBetween('created_at', [$fromDate, $toDate]) + ->where('is_new', '=', 1) + ->whereBetween('activity_date_time', [$fromDate, $toDate]) ->get(); return $this->successResponse($roadItems); diff --git a/app/Http/Controllers/V3/WebServices/RoadMaintenanceStationController.php b/app/Http/Controllers/V3/WebServices/RoadMaintenanceStationController.php new file mode 100644 index 00000000..a16294c8 --- /dev/null +++ b/app/Http/Controllers/V3/WebServices/RoadMaintenanceStationController.php @@ -0,0 +1,33 @@ +province; + $status = $request->status; + $type = $request->type; + + $data = RahdariPoint::query() + ->when($status, fn ($query, $status) => $query->where('status', $status)) + ->when($type, fn ($query, $type) => $query->where('type', $type)) + ->when($province, fn($query, $province) => $query->where('province_id', $province)) + ->get([ + 'id', 'province_name', 'city_name', 'name', 'status', 'type_fa', 'phone', + 'code', 'lat', 'lng', + ]); + + return $this->successResponse($data); + } +} diff --git a/app/Http/Requests/V3/RoadItem/WebService/CheckRequest.php b/app/Http/Requests/V3/WebServices/RoadItem/IndexRequest.php similarity index 55% rename from app/Http/Requests/V3/RoadItem/WebService/CheckRequest.php rename to app/Http/Requests/V3/WebServices/RoadItem/IndexRequest.php index b88ec8ed..2ea5c62e 100644 --- a/app/Http/Requests/V3/RoadItem/WebService/CheckRequest.php +++ b/app/Http/Requests/V3/WebServices/RoadItem/IndexRequest.php @@ -1,29 +1,27 @@ username === 'service_user257'&& - Hash::check('S3rv1ce@123', $user->password) ); + return + $this->username === 'service_user257' && + Hash::check('S3rv1ce@123', $this->password); } /** * Get the validation rules that apply to the request. * - * @return array|string> + * @return array */ public function rules(): array { diff --git a/app/Http/Requests/V3/WebServices/RoadMaintenanceStation/IndexRequest.php b/app/Http/Requests/V3/WebServices/RoadMaintenanceStation/IndexRequest.php new file mode 100644 index 00000000..e03e9ae1 --- /dev/null +++ b/app/Http/Requests/V3/WebServices/RoadMaintenanceStation/IndexRequest.php @@ -0,0 +1,34 @@ +username === 'service_user257' && + Hash::check('S3rv1ce@123', $this->password); + } + + /** + * Get the validation rules that apply to the request. + * + * @return array + */ + public function rules(): array + { + return [ + 'province' => 'exists:provinces,id', + 'status' => 'in:0,1', + 'type' => 'in:1,2,3', + ]; + } +} diff --git a/database/migrations/2025_05_18_090655_create_missionables_table.php b/database/migrations/2025_05_18_090655_create_missionables_table.php index 3bd88f09..977d6f5d 100644 --- a/database/migrations/2025_05_18_090655_create_missionables_table.php +++ b/database/migrations/2025_05_18_090655_create_missionables_table.php @@ -13,7 +13,7 @@ return new class extends Migration { Schema::create('missionables', function (Blueprint $table) { $table->id(); - $table->foreignId('mission_id')->constrained('missions')->noActionOnDelete(); + $table->foreignId('mission_id')->constrained('missions')->cascadeOnDelete(); $table->morphs('missionable'); $table->timestamps(); }); diff --git a/routes/v3.php b/routes/v3.php index 4df794cf..a12dcfab 100644 --- a/routes/v3.php +++ b/routes/v3.php @@ -15,7 +15,6 @@ use App\Http\Controllers\V3\Dashboard\Mission\RequestPortalController; use App\Http\Controllers\V3\Dashboard\Mission\TransportationUnitController; use App\Http\Controllers\V3\Dashboard\ObservedItemController; use App\Http\Controllers\V3\Dashboard\OtpManagementController; -use App\Http\Controllers\V3\Dashboard\RoadItem\WebServiceController; use App\Http\Controllers\V3\Dashboard\RoadMaintenanceStationController; use App\Http\Controllers\V3\Dashboard\RoadPatrol\ReportController; use App\Http\Controllers\V3\Dashboard\SafetyAndPrivacy\OperatorController; @@ -28,6 +27,7 @@ use App\Http\Controllers\V3\NotificationController; use App\Http\Controllers\V3\PermissionManagementController; use App\Http\Controllers\V3\ProfileController; use App\Http\Controllers\V3\RahdaranController; +use App\Http\Controllers\V3\WebServices\RoadItemController; use Illuminate\Support\Facades\Route; Route::get('admin/permissions', function () { @@ -160,7 +160,7 @@ Route::prefix('road_items') }); Route::prefix('webservice') ->name('webservice.') - ->controller(WebServiceController::class) + ->controller(RoadItemController::class) ->group(function () { Route::get('/', 'getRoadItems')->name('getRoadItem'); });