feat: add a list for flights in admin panel and add edit and delete for flights in admin panel
This commit is contained in:
@@ -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',
|
||||
],
|
||||
];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user