24c674f9cf
git commit "fix final issues before project delivery"
168 lines
3.8 KiB
PHP
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','تور حذف شد');
|
|
}
|
|
}
|