create new column for database and improve the controller

This commit is contained in:
2025-04-14 15:40:10 +03:30
parent a3600c68fa
commit 2e0b49df45
3 changed files with 87 additions and 34 deletions

View File

@@ -13,11 +13,8 @@ use App\Models\City;
use App\Models\Province; use App\Models\Province;
use App\Models\RahdariPoint; use App\Models\RahdariPoint;
use App\Models\RahdariPointHistory; use App\Models\RahdariPointHistory;
use Hekmatinasser\Verta\Facades\Verta;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Http\JsonResponse; use Illuminate\Http\JsonResponse;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
class RoadMaintenanceStationController extends Controller class RoadMaintenanceStationController extends Controller
@@ -83,15 +80,15 @@ class RoadMaintenanceStationController extends Controller
*/ */
public function store(StoreRequest $request): JsonResponse public function store(StoreRequest $request): JsonResponse
{ {
$provinceName = Province::query()->find($request->province_id)->name_fa; $province = Province::query()->find($request->province_id);
$cityName = City::query()->find($request->city_id)->name_fa; $city = City::query()->find($request->city_id);
$station = RahdariPoint::query()->create([ $station = RahdariPoint::query()->create([
'province_id' => $request->province_id, 'province_id' => $province->id,
'province_name' => $provinceName, 'province_name' => $province->name_fa,
'city_id' => $request->city_id, 'city_id' => $city->id,
'city_name' => $cityName, 'city_name' => $city->name_fa,
'name' => $request->name, 'name' => $request->name,
'status' => $request->status, 'status' => $request->status,
'type' => $request->type, 'type' => $request->type,
@@ -144,45 +141,59 @@ class RoadMaintenanceStationController extends Controller
*/ */
public function update(UpdateRequest $request, RahdariPoint $rahdariPoint): JsonResponse public function update(UpdateRequest $request, RahdariPoint $rahdariPoint): JsonResponse
{ {
$province = Province::query()->find($request->province_id);
$city = City::query()->find($request->city_id);
RahdariPointHistory::query()->create([ RahdariPointHistory::query()->create([
'user_id' => $request->user()->id, 'user_id' => $request->user()->id,
'point_id' => $rahdariPoint->id, 'point_id' => $rahdariPoint->id,
'previous_province_id' => $province->id,
'previous_province_name' => $province->name_fa,
'previous_city_id' => $city->id,
'previous_city_name' => $city->name_fa,
'previous_name' => $rahdariPoint->name,
'previous_status' => $rahdariPoint->status, 'previous_status' => $rahdariPoint->status,
'previous_type' => $rahdariPoint->type, 'previous_type' => $rahdariPoint->type,
'previous_team_num' => $rahdariPoint->team_num, 'previous_team_num' => $rahdariPoint->team_num,
'previous_staff_num' => $rahdariPoint->staff_num, 'previous_staff_num' => $rahdariPoint->staff_num,
'previous_phone' => $rahdariPoint->phone, 'previous_phone' => $rahdariPoint->phone,
'previous_responsible_name' => $rahdariPoint->responsible_name, 'previous_responsible_name' => $rahdariPoint->responsible_name,
'previous_responsible_mobile' => $rahdariPoint->responsible_mobile, 'previous_responsible_mobile' => $rahdariPoint->responsible_mobile,
'previous_successor_name' => $rahdariPoint->successor_name, 'previous_successor_name' => $rahdariPoint->successor_name,
'previous_successor_mobile' => $rahdariPoint->successor_mobile, 'previous_successor_mobile' => $rahdariPoint->successor_mobile,
'previous_machines_light' => $rahdariPoint->machines_light, 'previous_machines_light' => $rahdariPoint->machines_light,
'previous_machines_sheavy' => $rahdariPoint->machines_sheavy, 'previous_machines_sheavy' => $rahdariPoint->machines_sheavy,
'previous_machines_heavy' => $rahdariPoint->machines_heavy, 'previous_machines_heavy' => $rahdariPoint->machines_heavy,
'previous_lat' => $rahdariPoint->lat, 'previous_lat' => $rahdariPoint->lat,
'previous_lng' => $rahdariPoint->lng, 'previous_lng' => $rahdariPoint->lng,
'new_files' => json_encode($rahdariPoint->files), 'new_files' => json_encode($rahdariPoint->files),
]); ]);
$rahdariPoint->update([ $rahdariPoint->update([
'status' => $request->input('status', $rahdariPoint->status), 'province_id' => $province->id,
'type' => $request->input('type', $rahdariPoint->type), 'province_name' => $province->name_fa,
'city_id' => $city->id,
'city_name' => $city->name_fa,
'name' => $request->input('name'),
'status' => $request->input('status'),
'type' => $request->input('type',),
'type_fa' => RoadMaintenanceStationTypes::name($request->type) ?? $rahdariPoint->type_fa, 'type_fa' => RoadMaintenanceStationTypes::name($request->type) ?? $rahdariPoint->type_fa,
'team_num' => $request->input('team_num', $rahdariPoint->team_num), 'team_num' => $request->input('team_num'),
'staff_num' => $request->input('staff_num', $rahdariPoint->staff_num), 'staff_num' => $request->input('staff_num'),
'phone' => $request->input('phone', $rahdariPoint->phone), 'phone' => $request->input('phone'),
'responsible_name' => $request->input('responsible_name', $rahdariPoint->responsible_name), 'responsible_name' => $request->input('responsible_name'),
'responsible_mobile' => $request->input('responsible_mobile', $rahdariPoint->responsible_mobile), 'responsible_mobile' => $request->input('responsible_mobile'),
'successor_name' => $request->input('successor_name', $rahdariPoint->successor_name), 'successor_name' => $request->input('successor_name'),
'successor_mobile' => $request->input('successor_mobile', $rahdariPoint->successor_mobile), 'successor_mobile' => $request->input('successor_mobile'),
'machines_light' => $request->input('machines_light', $rahdariPoint->machines_light), 'machines_light' => $request->input('machines_light'),
'machines_sheavy' => $request->input('machines_sheavy', $rahdariPoint->machines_sheavy), 'machines_sheavy' => $request->input('machines_sheavy'),
'machines_heavy' => $request->input('machines_heavy', $rahdariPoint->machines_heavy), 'machines_heavy' => $request->input('machines_heavy'),
'lat' => $request->input('lat', $rahdariPoint->lat), 'lat' => $request->input('lat'),
'lng' => $request->input('lng', $rahdariPoint->lng), 'lng' => $request->input('lng'),
'lat_from' => $request->lat_from, 'lat_from' => $request->lat_from,
'lng_from' => $request->lng_from, 'lng_from' => $request->lng_from,
'geometry' => $request->geometry, 'geometry' => $request->geometry,
'lat_to' => $request->lat_to, 'lat_to' => $request->lat_to,
'lng_to' => $request->lng_to, 'lng_to' => $request->lng_to,
'color' => $request->color, 'color' => $request->color,
@@ -200,7 +211,6 @@ class RoadMaintenanceStationController extends Controller
foreach ($uploadFields as $index => $field) { foreach ($uploadFields as $index => $field) {
if ($request->hasFile($field)) { if ($request->hasFile($field)) {
$existingFile = $rahdariPoint->files->get($index); $existingFile = $rahdariPoint->files->get($index);
$path = FileFacade::save($request->$field, "road_stations/{$rahdariPoint->id}"); $path = FileFacade::save($request->$field, "road_stations/{$rahdariPoint->id}");
if ($existingFile) { if ($existingFile) {

View File

@@ -22,6 +22,9 @@ class UpdateRequest extends FormRequest
public function rules(): array public function rules(): array
{ {
return [ return [
'province_id' => 'required|exists:provinces,id',
'city_id' => 'required|exists:cities,id',
'name' => 'required|string|max:255',
'status' => 'integer|in:0,1', 'status' => 'integer|in:0,1',
'type' => 'integer|in:1,2,3', 'type' => 'integer|in:1,2,3',
'team_num' => 'numeric', 'team_num' => 'numeric',

View File

@@ -0,0 +1,40 @@
<?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('rahdari_point_histories', function (Blueprint $table) {
$table->after('user_id', function (Blueprint $table) {
$table->unsignedSmallInteger('previous_province_id')->nullable();
$table->string('previous_province_name')->nullable();
$table->unsignedSmallInteger('previous_city_id')->nullable();
$table->string('previous_city_name')->nullable();
$table->string('previous_name')->nullable();
});
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('rahdari_point_histories', function (Blueprint $table) {
$table->dropColumn([
'previous_province_id',
'previous_province_name',
'previous_city_id',
'previous_city_name',
'previous_name',
]);
});
}
};