88 lines
2.4 KiB
PHP
88 lines
2.4 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Admin;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Http\Requests\TourStoreRequest;
|
|
use App\Models\Tour;
|
|
use App\Models\TravelType;
|
|
use Illuminate\Http\Request;
|
|
|
|
class TourController extends Controller
|
|
{
|
|
public function index()
|
|
{
|
|
$tours = Tour::latest()->paginate(10);
|
|
return view('admin.tours.index', compact('tours'));
|
|
}
|
|
|
|
public function create()
|
|
{
|
|
return view('admin.tours.create');
|
|
}
|
|
|
|
public function store(TourStoreRequest $request)
|
|
{
|
|
|
|
// Tour::create($request->validated());
|
|
|
|
|
|
$tour = Tour::create($request->only([
|
|
'travel_type_id', 'title', 'slug', 'description',
|
|
'start_date', 'end_date', 'price', 'capacity', 'status'
|
|
]));
|
|
|
|
$this->uploadImages($tour, $request->file('images'));
|
|
return view('admin.tours.index')
|
|
->with('success', 'تور با موفقیت ایجاد شد.');
|
|
}
|
|
|
|
public function show(Tour $tour)
|
|
{
|
|
return view('admin.tours.show', compact('tour'));
|
|
}
|
|
|
|
public function edit(Tour $tour)
|
|
{
|
|
$travelTypes = TravelType::all();
|
|
return view('admin.tours.edit', compact('tour', 'travelTypes'));
|
|
}
|
|
|
|
public function update(TourStoreRequest $request, Tour $tour)
|
|
{
|
|
$tour->update($request->validated());
|
|
|
|
|
|
// ذخیره فایل و گرفتن مسیر (بدون پسوند)
|
|
$path = $request->file('image')->store('photos', 'public');
|
|
|
|
$extension = $request->file('image')->getClientOriginalExtension();
|
|
|
|
// ایجاد رکورد
|
|
$tour->files()->create([
|
|
'name' => $path,
|
|
'extension' => $extension,
|
|
'size' => $request->file('image')->getSize(),
|
|
'original_name' => $request->file('image')->getClientOriginalName(),
|
|
]);
|
|
|
|
|
|
return redirect()->route('admin.tours.index')
|
|
->with('success', 'تور با موفقیت بهروزرسانی شد.');
|
|
}
|
|
|
|
public function destroy(Tour $tour)
|
|
{
|
|
$tour->delete();
|
|
|
|
return redirect()->route('admin.tours.index')
|
|
->with('success', 'تور با موفقیت حذف شد.');
|
|
}
|
|
|
|
public function removeImage(Tour $tour, $image)
|
|
{
|
|
// منطق حذف تصویر — بسته به جدول تصاویر
|
|
return back()->with('success', 'تصویر حذف شد.');
|
|
}
|
|
}
|