feat:add final changes

This commit is contained in:
2026-08-22 15:15:01 +03:30
parent c1d93079cf
commit 79c8b71843
5 changed files with 27 additions and 53 deletions
@@ -151,24 +151,24 @@ class AdminController extends Controller
'admin_id' => $admin->id, 'admin_id' => $admin->id,
], ],
[ [
// مدیران
'admin_view' => $request->boolean('admin_view'), 'admin_view' => $request->boolean('admin_view'),
'admin_create' => $request->boolean('admin_create'), 'admin_create' => $request->boolean('admin_create'),
'admin_edit' => $request->boolean('admin_edit'), 'admin_edit' => $request->boolean('admin_edit'),
'admin_delete' => $request->boolean('admin_delete'), 'admin_delete' => $request->boolean('admin_delete'),
// کاربران
'user_view' => $request->boolean('user_view'), 'user_view' => $request->boolean('user_view'),
'user_edit' => $request->boolean('user_edit'), 'user_edit' => $request->boolean('user_edit'),
'user_delete' => $request->boolean('user_delete'), 'user_delete' => $request->boolean('user_delete'),
// تورها
'tour_view' => $request->boolean('tour_view'), 'tour_view' => $request->boolean('tour_view'),
'tour_create' => $request->boolean('tour_create'), 'tour_create' => $request->boolean('tour_create'),
'tour_edit' => $request->boolean('tour_edit'), 'tour_edit' => $request->boolean('tour_edit'),
'tour_delete' => $request->boolean('tour_delete'), 'tour_delete' => $request->boolean('tour_delete'),
// پروازها
'flight_view' => $request->boolean('flight_view'), 'flight_view' => $request->boolean('flight_view'),
'flight_create' => $request->boolean('flight_create'), 'flight_create' => $request->boolean('flight_create'),
'flight_edit' => $request->boolean('flight_edit'), 'flight_edit' => $request->boolean('flight_edit'),
@@ -164,7 +164,6 @@ class FlightController extends Controller
try { try {
// 1. ذخیره عکس
$image = $request->file('image'); $image = $request->file('image');
$imageName = time() $imageName = time()
@@ -179,7 +178,6 @@ class FlightController extends Controller
'public' 'public'
); );
// 2. ایجاد رکورد فایل
$file = File::create([ $file = File::create([
'name' => $imageName, 'name' => $imageName,
'size' => $image->getSize(), 'size' => $image->getSize(),
@@ -188,7 +186,6 @@ class FlightController extends Controller
'extension' => $image->extension(), 'extension' => $image->extension(),
]); ]);
// 3. ایجاد پرواز با file_id
$flight = Flight::create([ $flight = Flight::create([
'file_id' => $file->id, 'file_id' => $file->id,
'arrival_aiport_id' => $request->arrival_aiport_id, 'arrival_aiport_id' => $request->arrival_aiport_id,
@@ -204,6 +201,9 @@ class FlightController extends Controller
'status' => $request->status, 'status' => $request->status,
]); ]);
// ثبت لاگ ایجاد پرواز
logActivity($flight, 'created');
DB::commit(); DB::commit();
} catch (Exception $exception) { } catch (Exception $exception) {
@@ -232,7 +232,6 @@ class FlightController extends Controller
$oldFile = $flight->file; $oldFile = $flight->file;
// اطلاعات پرواز
$flight->update([ $flight->update([
'arrival_aiport_id' => $request->arrival_aiport_id, 'arrival_aiport_id' => $request->arrival_aiport_id,
'departure_airport_id' => $request->departure_airport_id, 'departure_airport_id' => $request->departure_airport_id,
@@ -246,16 +245,16 @@ class FlightController extends Controller
'status' => $request->status, 'status' => $request->status,
]); ]);
// ثبت لاگ ویرایش پرواز (باید بلافاصله بعد از update صدا زده شود)
logActivity($flight, 'updated');
// اگر عکس جدید انتخاب شده
if ($request->hasFile('image')) { if ($request->hasFile('image')) {
$image = $request->file('image'); $image = $request->file('image');
// ذخیره عکس جدید
$path = $image->store('flights', 'public'); $path = $image->store('flights', 'public');
// ایجاد رکورد فایل جدید
$newFile = File::create([ $newFile = File::create([
'name' => pathinfo( 'name' => pathinfo(
$image->hashName(), $image->hashName(),
@@ -267,15 +266,13 @@ class FlightController extends Controller
'path' => $path, 'path' => $path,
]); ]);
// اتصال پرواز به فایل جدید
$flight->update([ $flight->update([
'file_id' => $newFile->id, 'file_id' => $newFile->id,
]); ]);
// ثبت لاگ تغییر عکس (به‌صورت جدا، چون update دومیه)
logActivity($flight, 'updated');
// حذف فقط فایل فیزیکی قبلی
// رکورد files قبلی را حذف نمی‌کنیم
// چون FK روی flights.file_id وجود دارد.
if ($oldFile) { if ($oldFile) {
if (Storage::disk('public')->exists($oldFile->path)) { if (Storage::disk('public')->exists($oldFile->path)) {
@@ -324,15 +321,5 @@ class FlightController extends Controller
->with('success', 'پرواز با موفقیت حذف شد.'); ->with('success', 'پرواز با موفقیت حذف شد.');
} }
public function logs(Flight $flight)
{
$logs = ActivityLog::query()
->where('model_type', Flight::class)
->where('model_id', $flight->id)
->with('admin')
->orderByDesc('created_at')
->paginate(20);
return view('admin.flights.logs', compact('flight', 'logs'));
}
} }
@@ -40,7 +40,6 @@ class TourController extends Controller
}) })
// فیلتر وضعیت
->when($request->filled('status'), function (Builder $query) use ($request) { ->when($request->filled('status'), function (Builder $query) use ($request) {
$query->where( $query->where(
@@ -69,7 +68,6 @@ class TourController extends Controller
try { try {
// ذخیره تصویر
$image = $request->file('image'); $image = $request->file('image');
$path = $image->store('tours', 'public'); $path = $image->store('tours', 'public');
@@ -85,8 +83,6 @@ class TourController extends Controller
'path' => $path, 'path' => $path,
]); ]);
// ایجاد تور
$tour = Tour::create([ $tour = Tour::create([
'title' => $request->title, 'title' => $request->title,
'summary' => $request->input('summary') ?? '', 'summary' => $request->input('summary') ?? '',
@@ -102,8 +98,6 @@ class TourController extends Controller
'updated_at' => now(), 'updated_at' => now(),
]); ]);
// ایجاد تاریخ تور
TourDate::create([ TourDate::create([
'tour_id' => $tour->id, 'tour_id' => $tour->id,
'start_date' => $request->start_date, 'start_date' => $request->start_date,
@@ -170,11 +164,9 @@ class TourController extends Controller
try { try {
// فایل قبلی
$fileId = $tour->file_id; $fileId = $tour->file_id;
// اگر عکس جدید انتخاب شده باشد
if ($request->hasFile('image')) { if ($request->hasFile('image')) {
$image = $request->file('image'); $image = $request->file('image');
@@ -195,8 +187,6 @@ class TourController extends Controller
$fileId = $file->id; $fileId = $file->id;
} }
// ویرایش اطلاعات تور
$tour->update([ $tour->update([
'title' => $request->title, 'title' => $request->title,
'summary' => $request->input('summary') ?? '', 'summary' => $request->input('summary') ?? '',
@@ -209,11 +199,8 @@ class TourController extends Controller
'status' => $request->status, 'status' => $request->status,
]); ]);
// تاریخ تور
$tourDate = $tour->tourDates()->first(); $tourDate = $tour->tourDates()->first();
if ($tourDate) { if ($tourDate) {
$tourDate->update([ $tourDate->update([
@@ -226,7 +213,6 @@ class TourController extends Controller
} else { } else {
// اگر تور تاریخ نداشت، یک تاریخ جدید ایجاد شود
$tour->tourDates()->create([ $tour->tourDates()->create([
'start_date' => $request->start_date, 'start_date' => $request->start_date,
'end_date' => $request->end_date, 'end_date' => $request->end_date,
@@ -277,15 +263,5 @@ class TourController extends Controller
->with('success', 'تور با موفقیت حذف شد.'); ->with('success', 'تور با موفقیت حذف شد.');
} }
public function logs(Tour $tour)
{
$logs = ActivityLog::query()
->where('model_type', Tour::class)
->where('model_id', $tour->id)
->with('admin')
->orderByDesc('created_at')
->paginate(20);
return view('admin.tours.logs', compact('tour', 'logs'));
}
} }
@@ -33,7 +33,6 @@
@csrf @csrf
{{-- اطلاعات مدیر --}}
<div class="card custom-card"> <div class="card custom-card">
<div class="card-header"> <div class="card-header">
@@ -46,7 +45,6 @@
<div class="row gy-3"> <div class="row gy-3">
{{-- نام --}}
<div class="col-xl-6 col-lg-6"> <div class="col-xl-6 col-lg-6">
<label class="form-label">نام</label> <label class="form-label">نام</label>
@@ -66,7 +64,7 @@
</div> </div>
{{-- نام خانوادگی --}}
<div class="col-xl-6 col-lg-6"> <div class="col-xl-6 col-lg-6">
<label class="form-label">نام خانوادگی</label> <label class="form-label">نام خانوادگی</label>
@@ -115,6 +115,19 @@
</a> </a>
</li> </li>
<!-- End::slide --> <!-- End::slide -->
<li class="slide ">
<a href="{{route('admin.activity-logs.index')}}"
class="side-menu__item {{ activeAccountSidebar('admin.activity-logs.index') }}">
<svg xmlns="http://www.w3.org/2000/svg" class="side-menu__icon" width="1em"
height="1em" viewBox="0 0 24 24">
<path fill="none" stroke="currentColor" stroke-linecap="round"
stroke-linejoin="round" stroke-width="1.5"
d="M13 2h-2C7.229 2 5.343 2 4.172 3.172S3 6.229 3 10v4c0 3.771 0 5.657 1.172 6.828S7.229 22 11 22h2c3.771 0 5.657 0 6.828-1.172S21 17.771 21 14v-4c0-3.771 0-5.657-1.172-6.828S16.771 2 13 2m8 10H3m12-5H9m6 10H9"
color="currentColor"></path>
</svg>
<span class="side-menu__label">ثبت تغییرات</span>
</a>
</li>
</ul> </ul>
<div class="slide-right d-none" id="slide-right"> <div class="slide-right d-none" id="slide-right">