Files
hatame.andarza09/app/Http/Controllers/Admin/TourController.php
T
hatame 24c674f9cf git add .
git commit "fix final issues before project delivery"
2026-08-22 16:17:21 +03:30

168 lines
3.8 KiB
PHP

<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Http\Requests\TourStoreRequest;
use App\Models\ActivityLog;
use App\Models\Tour;
use App\Models\TravelType;
use Hekmatinasser\Verta\Verta;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Storage;
class TourController extends Controller
{
public function index(Request $request)
{
$tours = Tour::query()
->applySearch($request->all())
->filterType($request->travel_type_id)
->sort($request->sort)
->latest()
->paginate(2);
return view('admin.tours.index', compact('tours'));
}
public function create()
{
return view('admin.tours.create' );
}
public function store(TourStoreRequest $request)
{
DB::beginTransaction();
try {
$data = $request->validated();
if ($request->departure_date) {
$data['departure_date'] = Verta::parse(
$request->departure_date
)->formatGregorian('Y-m-d');
}
if ($request->hasFile('image')) {
$data['image'] = $request
->file('image')
->store('tours','public');
}
$data['created_by'] = auth('admin')->id();
$tour = Tour::create($data);
ActivityLog::create([
'admin_id' => auth('admin')->id(),
'action' => 'create',
'model' => 'Tour',
'model_id' => $tour->id,
'description' => 'ثبت تور جدید',
]);
DB::commit();
return redirect()
->route('admin.tours.index')
->with('success','تور ثبت شد');
} catch(\Exception $e) {
DB::rollBack();
dd($e->getMessage());
}
}
public function edit(Tour $tour)
{
return view('admin.tours.edit',compact('tour'));
}
public function update(TourStoreRequest $request, Tour $tour)
{
DB::beginTransaction();
try {
$data = $request->validated();
if ($request->departure_date) {
$data['departure_date'] = Verta::parse(
$request->departure_date
)->formatGregorian('Y-m-d');
}
if ($request->hasFile('image')) {
if($tour->image){
Storage::disk('public')
->delete($tour->image);
}
$data['image'] = $request
->file('image')
->store('tours','public');
}
$data['updated_by'] = auth('admin')->id();
$tour->update($data);
ActivityLog::create([
'admin_id' => auth('admin')->id(),
'action' => 'update',
'model' => 'Tour',
'model_id' => $tour->id,
'description' => 'ویرایش تور',
]);
DB::commit();
return redirect()
->route('admin.tours.index')
->with('success','تور ویرایش شد');
}catch(\Exception $e){
DB::rollBack();
dd($e->getMessage());
}
}
public function destroy(Tour $tour)
{
if($tour->image){
Storage::disk('public')
->delete($tour->image);
}
ActivityLog::create([
'admin_id' => auth('admin')->id(),
'action' => 'delete',
'model' => 'Tour',
'model_id' => $tour->id,
'description' => 'حذف تور',
]);
$tour->delete();
return back()
->with('success','تور حذف شد');
}
}