feat: update edit for flights and add create flights in admin panel

This commit is contained in:
2026-08-20 14:18:28 +03:30
parent 6cde2328c1
commit 87e0fc16f8
6 changed files with 428 additions and 52 deletions
@@ -3,6 +3,7 @@
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;
@@ -75,11 +76,36 @@ class FlightController extends Controller
public function create()
{
$airports = Airport::all();
$airlines = Airline::query()
->orderBy('name')
->get();
return view('admin.flights.create', compact('airports'));
$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();
@@ -89,9 +115,6 @@ class FlightController extends Controller
->with('success', 'پرواز با موفقیت حذف شد.');
}
public function store()
{
}
}
@@ -0,0 +1,67 @@
<?php
namespace App\Http\Requests\Admins;
use Illuminate\Foundation\Http\FormRequest;
class FlightPostRequest extends FormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'flight_number' => [
'required',
'string',
'max:255'
],
'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',
],
'end_time' => [
'required',
],
'price' => [
'required',
'integer',
'min:0'
],
'capacity' => [
'required',
'integer',
'min:1'
],
'status' => [
'nullable',
'integer'
],
];
}
public function messages(): array
{
return [
//
];
}
}