diff --git a/app/Http/Controllers/V3/RoadItemsProjectController.php b/app/Http/Controllers/V3/RoadItemsProjectController.php index cf63b5af..17143f55 100644 --- a/app/Http/Controllers/V3/RoadItemsProjectController.php +++ b/app/Http/Controllers/V3/RoadItemsProjectController.php @@ -39,8 +39,7 @@ class RoadItemsProjectController extends Controller 'end_lng', 'project_distance', 'item', 'item_fa', 'sub_item_fa', 'sub_item_data', 'created_at', 'updated_at', 'province_id', 'province_fa', 'unit_fa', 'status', 'status_fa', 'supervisor_description', 'supervising_time', - 'supervisor_name', 'edarat_id', 'edarat_name', 'activity_date_time', - 'cmms_machine_code' + 'supervisor_name', 'edarat_id', 'edarat_name', 'activity_date_time','cmmsMachines.machine_code' ); $allowedFilters = $columns; @@ -50,14 +49,14 @@ class RoadItemsProjectController extends Controller $query = null; if ($user->hasPermissionTo('show-road-item-supervise-cartable')) { - $query = RoadItemsProject::query()->where('is_new', 1)->with(['files', 'rahdaran:id,name,code', 'cmmsMachine:id,machine_code']); + $query = RoadItemsProject::query()->where('is_new', 1)->with(['files', 'rahdaran:id,name,code', 'cmmsMachines:id,machine_code']); } elseif ($user->hasPermissionTo('show-road-item-supervise-cartable-province')) { if (is_null($user->province_id)) { return $this->errorResponse('استانی برای شما در سامانه ثبت نشده است!'); } $query = RoadItemsProject::query()->where('is_new', 1) - ->with(['files', 'rahdaran:id,name,code', 'cmmsMachine:id,machine_code'])->where('province_id', auth()->user()->province_id); + ->with(['files', 'rahdaran:id,name,code', 'cmmsMachines:id,machine_code'])->where('province_id', auth()->user()->province_id); } $data = DataTableFacade::run( @@ -147,14 +146,13 @@ class RoadItemsProjectController extends Controller 'end_lng', 'project_distance', 'item', 'item_fa', 'sub_item_fa', 'sub_item_data', 'created_at', 'updated_at', 'province_id', 'province_fa', 'unit_fa', 'status', 'status_fa', 'supervisor_description', 'supervising_time', - 'supervisor_name', 'edarat_id', 'edarat_name', 'activity_date_time', - 'cmms_machine_code' + 'supervisor_name', 'edarat_id', 'edarat_name', 'activity_date_time', 'cmmsMachines.machine_code' ); $allowedFilters = $columns; $allowedSortings = $columns; - $query = RoadItemsProject::with(['files', 'rahdaran:id,name,code', 'cmmsMachine:id,machine_code']) + $query = RoadItemsProject::with(['files', 'rahdaran:id,name,code', 'cmmsMachines:id,machine_code']) ->where('is_new', 1) ->where('user_id', auth()->user()->id); @@ -206,7 +204,6 @@ class RoadItemsProjectController extends Controller $start_coordinates = explode(',', $request->start_point); $end_coordinates = $info_item->needs_end_point ? explode(',', $request->end_point) : null; - $cmmsMachine = CMMSMachine::query()->find($request->cmms_machine_id); $attributes = [ 'start_lat' => $start_coordinates[0], @@ -235,8 +232,6 @@ class RoadItemsProjectController extends Controller 'edarat_name' => $user->edarate_shahri_name, 'activity_date' => $request->activity_date, 'activity_time' => $request->activity_time, - 'cmms_machine_id' => $cmmsMachine->id, - 'cmms_machine_code' => $cmmsMachine->machine_code, ]; $after_image = ($request->has('after_image') && $info_item->needs_image) ? @@ -256,6 +251,7 @@ class RoadItemsProjectController extends Controller } $road_item->rahdaran()->attach($request->rahdaran_id); + $road_item->cmmsMachines()->attach($request->machines_id); auth()->user()->addActivityComplete(1154); @@ -285,8 +281,6 @@ class RoadItemsProjectController extends Controller $end_coordinates = explode(',', $request->end_point); } - $cmmsMachine = CMMSMachine::query()->find($request->cmms_machine_id); - if ($info_item->needs_image) { if ($request->has('after_image')) { @@ -321,11 +315,10 @@ class RoadItemsProjectController extends Controller 'sub_item_data' => $request->amount, 'status' => 0, 'status_fa' => 'در حال بررسی', - 'cmms_machine_id' => $cmmsMachine->id, - 'cmms_machine_code' => $cmmsMachine->machine_code, ]); $roadItemsProject->rahdaran()->sync($request->rahdaran_id); + $roadItemsProject->cmmsMachines()->sync($request->machines_id); auth()->user()->addActivityComplete(1155); diff --git a/app/Http/Requests/V3/RoadItemsProject/StoreRequest.php b/app/Http/Requests/V3/RoadItemsProject/StoreRequest.php index 3a99e8ae..03b3fb46 100644 --- a/app/Http/Requests/V3/RoadItemsProject/StoreRequest.php +++ b/app/Http/Requests/V3/RoadItemsProject/StoreRequest.php @@ -32,7 +32,8 @@ class StoreRequest extends FormRequest 'activity_time' => 'required|date_format:H:i', 'before_image' => 'image|max:4096', 'after_image' => 'image|max:4096', - 'cmms_machine_id' => 'required|exists:cmms_machines,id', + 'machines_id' => 'required|array', + 'machines_id.*' => 'required|exists:cmms_machines,id', 'rahdaran_id' => 'required|array', 'rahdaran_id.*' => 'required|exists:rahdaran,id', ]; diff --git a/app/Http/Requests/V3/RoadItemsProject/UpdateRequest.php b/app/Http/Requests/V3/RoadItemsProject/UpdateRequest.php index da9fe59e..6f80951f 100644 --- a/app/Http/Requests/V3/RoadItemsProject/UpdateRequest.php +++ b/app/Http/Requests/V3/RoadItemsProject/UpdateRequest.php @@ -31,7 +31,8 @@ class UpdateRequest extends FormRequest 'amount' => 'required|numeric', 'before_image' => 'image|max:4096', 'after_image' => 'image|max:4096', - 'cmms_machine_id' => 'required|exists:cmms_machines,id', + 'machines_id' => 'required|array', + 'machines_id.*' => 'required|exists:cmms_machines,id', 'rahdaran_id' => 'required|array', 'rahdaran_id.*' => 'required|exists:rahdaran,id', ]; diff --git a/app/Models/RoadItemsProject.php b/app/Models/RoadItemsProject.php index c89b9080..684af53a 100644 --- a/app/Models/RoadItemsProject.php +++ b/app/Models/RoadItemsProject.php @@ -55,8 +55,6 @@ class RoadItemsProject extends Model 'activity_date', 'activity_time', 'activity_date_time', - 'cmms_machine_id', - 'cmms_machine_code', ]; /** @@ -131,8 +129,6 @@ class RoadItemsProject extends Model 'activity_time' => $attributes['activity_time'], 'activity_date_time' => $attributes['activity_date']." ".$attributes['activity_time'], 'is_new' => 1, - 'cmms_machine_id' => $attributes['cmms_machine_id'] ?? null, - 'cmms_machine_code' => $attributes['cmms_machine_code'] ?? null, ]); // if ($info_item->needs_image) { @@ -171,9 +167,9 @@ class RoadItemsProject extends Model } } - public function cmmsMachine(): HasOne + public function cmmsMachines(): BelongsToMany { - return $this->hasOne(CMMSMachine::class, 'id', 'cmms_machine_id'); + return $this->belongsToMany(CMMSMachine::class, 'cmms_machine_road_items_project'); } public function rahdaran(): BelongsToMany diff --git a/database/migrations/2024_12_10_093937_add_column_to_road_items_projects_table.php b/database/migrations/2024_12_10_093937_add_column_to_road_items_projects_table.php deleted file mode 100644 index 445f8674..00000000 --- a/database/migrations/2024_12_10_093937_add_column_to_road_items_projects_table.php +++ /dev/null @@ -1,31 +0,0 @@ -foreignId('cmms_machine_id')->nullable()->constrained('cmms_machines'); - $table->string('cmms_machine_code')->nullable(); - }); - } - - /** - * Reverse the migrations. - */ - public function down(): void - { - Schema::table('road_items_projects', function (Blueprint $table) { - $table->dropForeign(['cmms_machine_id']); - $table->dropColumn('cmms_machine_id'); - $table->dropColumn('cmms_machine_code'); - }); - } -}; diff --git a/database/migrations/2024_12_24_132145_create_cmms_machine_road_items_project_table.php b/database/migrations/2024_12_24_132145_create_cmms_machine_road_items_project_table.php new file mode 100644 index 00000000..b9ed40ea --- /dev/null +++ b/database/migrations/2024_12_24_132145_create_cmms_machine_road_items_project_table.php @@ -0,0 +1,30 @@ +id(); + $table->foreignId('machine_id')->constrained('cmms_machines')->onDelete('cascade'); + $table->unsignedBigInteger('road_items_project_id'); + $table->foreign('road_items_project_id')->references('id')->on('road_items_projects')->onDelete('cascade'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('cmms_machine_road_items_project'); + } +};