feat: add a list for flights in admin panel and add edit and delete for flights in admin panel

This commit is contained in:
2026-08-20 13:22:35 +03:30
parent ab9a459c48
commit 67f9379e86
8 changed files with 729 additions and 3 deletions
@@ -0,0 +1,97 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
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(10);
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()
{
$airports = Airport::all();
return view('admin.flights.create', compact('airports'));
}
public function destroy(Flight $flight)
{
$flight->delete();
return redirect()
->route('admin.flights.index')
->with('success', 'پرواز با موفقیت حذف شد.');
}
public function store()
{
}
}
@@ -0,0 +1,66 @@
<?php
namespace App\Http\Requests\Admins;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Foundation\Http\FormRequest;
class FlightUpdatePostRequest extends FormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'flight_number' => [
'required',
'int',
'digits:10',
],
'airline_id' => [
'required',
'integer',
'exists:airlines,id',
],
'origin_airports_id' => [
'required',
'integer',
'exists:airports,id',
],
'destination_airports_id' => [
'required',
'integer',
'exists:airports,id',
'different:origin_airports_id',
],
'start_time' => [
'required',
'string',
],
'end_time' => [
'required',
'string',
],
'price' => [
'required',
'integer',
'min:0',
],
'capacity' => [
'required',
'integer',
'min:1',
],
];
}
}
+2 -1
View File
@@ -8,7 +8,7 @@ namespace App\Models;
use Carbon\Carbon;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
/**
* Class Flight
*
@@ -59,6 +59,7 @@ class Flight extends Model
/**
* @var mixed|string
*/
use SoftDeletes;
public mixed $end_date_fa;
protected $table = 'flights';