Files
2026-08-22 08:40:01 +03:30

122 lines
3.4 KiB
PHP

<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Http\Requests\Admins\FlightPostRequest;
use App\Http\Requests\Admins\FlightUpdatePostRequest;
use App\Models\Airline;
use App\Models\Airport;
use App\Models\Flight;
use Hekmatinasser\Verta\Verta;
use Illuminate\Http\Request;
class FlightController extends Controller
{
public function index()
{
$flights = Flight::query()
->with([
'airline',
'airport',
'destinationAirport',
])
->latest('id')
->paginate(5);
foreach ($flights as $flight) {
$flight->start_date_fa = $flight->start_time ? $flight->start_time->toJalali()->format('Y/m/d') : null;
$flight->end_date_fa = $flight->end_time
? $flight->end_time->toJalali()->format('Y/m/d')
: null;
$flight->start_time_fa = $flight->start_time
? $flight->start_time->format('H:i')
: null;
$flight->end_time_fa = $flight->end_time
? $flight->end_time->format('H:i')
: null;
}
return view('admin.flights.index', compact('flights'));
}
public function edit(Flight $flight)
{
$airlines = Airline::query()
->orderBy('name')
->get();
$airports = Airport::query()
->orderBy('name')
->get();
return view('admin.flights.edit', compact('flight', 'airlines', 'airports'));
}
/**
* Update the specified flight.
*/
public function update(FlightUpdatePostRequest $request, Flight $flight)
{
$data = $request->validated();
$start = verta::parse($data['start_time'])->datetime();
$end = verta::parse($data['end_time'])->datetime();
$data['start_time'] = $start;
$data['end_time'] = $end;
$flight->update($data);
return redirect()->route('admin.flights.index');
}
public function create()
{
$airlines = Airline::query()
->orderBy('name')
->get();
$airports = Airport::query()
->orderBy('name')
->get();
return view('admin.flights.create', compact('airlines', 'airports'));
}
public function store(FlightPostRequest $request)
{
$data = $request->validated();
Flight::create([
'flight_number' => $data['flight_number'],
'airline_id' => $data['airline_id'],
'origin_airports_id' => $data['origin_airports_id'],
'destination_airports_id' => $data['destination_airports_id'],
'start_time' => Verta::parse($data['start_time'])->datetime(),
'end_time' => Verta::parse($data['end_time'])->datetime(),
'price' => $data['price'],
'capacity' => $data['capacity'],
'status' => $data['status'] ?? 1,
]);
return redirect()
->route('admin.flights.index')
->with('success', 'پرواز جدید با موفقیت ثبت شد.');
}
public function destroy(Flight $flight)
{
$flight->delete();
return redirect()
->route('admin.flights.index')
->with('success', 'پرواز با موفقیت حذف شد.');
}
}