Files
hatame.andarza09/app/Http/Controllers/Admin/FlightController.php
T

185 lines
3.9 KiB
PHP

<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Http\Requests\Admin\FlightStoreRequest;
use App\Models\ActivityLog;
use App\Models\Flight;
use Hekmatinasser\Verta\Verta;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Storage;
class FlightController extends Controller
{
public function index(Request $request)
{
$flights = Flight::query()
->applySearch($request->all())
->filterType($request->type)
->sort($request->sort)
->latest()
->paginate(4);
return view('admin.flights.index', compact('flights'));
}
public function create()
{
return view('admin.flights.create');
}
public function store(FlightStoreRequest $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('flights','public');
}
$data['created_by'] = auth('admin')->id();
$flight = Flight::create($data);
ActivityLog::create([
'admin_id' => auth('admin')->id(),
'action' => 'create',
'model' => 'Flight',
'model_id' => $flight->id,
'description' => 'ثبت پرواز جدید',
]);
DB::commit();
return redirect()
->route('admin.flights.index')
->with('success','پرواز ثبت شد');
} catch(\Exception $e) {
DB::rollBack();
dd($e->getMessage());
}
}
public function edit(Flight $flight)
{
return view('admin.flights.edit',compact('flight'));
}
public function update(FlightStoreRequest $request, Flight $flight)
{
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($flight->image){
Storage::disk('public')
->delete($flight->image);
}
$data['image'] = $request
->file('image')
->store('flights','public');
}
$data['updated_by'] = auth('admin')->id();
$flight->update($data);
ActivityLog::create([
'admin_id' => auth('admin')->id(),
'action' => 'update',
'model' => 'Flight',
'model_id' => $flight->id,
'description' => 'ویرایش اطلاعات پرواز',
]);
DB::commit();
return redirect()
->route('admin.flights.index')
->with('success','پرواز ویرایش شد');
}catch(\Exception $e){
DB::rollBack();
dd($e->getMessage());
}
}
public function destroy(Flight $flight)
{
if($flight->image){
Storage::disk('public')
->delete($flight->image);
}
ActivityLog::create([
'admin_id' => auth('admin')->id(),
'action' => 'delete',
'model' => 'Flight',
'model_id' => $flight->id,
'description' => 'حذف پرواز',
]);
$flight->delete();
return back()
->with('success','پرواز حذف شد');
}
}