diff --git a/app/Enums/FlightStatus.php b/app/Enums/FlightStatus.php new file mode 100644 index 0000000..a0c6529 --- /dev/null +++ b/app/Enums/FlightStatus.php @@ -0,0 +1,14 @@ +paginate(4); + + return view('admin.flights.index',compact('flights')); + } + public function create() + { + return view('admin.flights.create'); + } + public function store(FlightStoreRequest $request) + { + $data = $request->validated(); + + $data['type'] = (int) $data['type']; + + if ($request->hasFile('image')) { + $data['image'] = $request->file('image')->store('flights', 'public'); + } + + Flight::create($data); + + return redirect()->route('admin.flights.index') + ->with('success', 'پرواز با موفقیت ثبت شد'); + } + + public function edit(Flight $flight) + { + return view('admin.flights.edit',compact('flight')); + + } + public function update(FlightStoreRequest $request, Flight $flight) + { + $data = $request->validated(); + + $data['type'] = (int) $data['type']; + + if ($request->hasFile('image')) { + $data['image'] = $request->file('image')->store('flights', 'public'); + } + + $flight->update($data); + + return redirect()->route('admin.flights.index') + ->with('success', 'پرواز با موفقیت ویرایش شد'); + } + public function destroy(Flight $flight) + { + $flight->delete(); + return back()->with('پرواز با موفقیت حذف شد.'); + + } } diff --git a/app/Http/Controllers/ReservationController.php b/app/Http/Controllers/ReservationController.php index 36bb87d..193fa05 100644 --- a/app/Http/Controllers/ReservationController.php +++ b/app/Http/Controllers/ReservationController.php @@ -10,8 +10,9 @@ class ReservationController extends Controller { public function index() { - $reservations = Reservation:: - where('user_id', Auth::id()) + $reservations = Reservation::query() + ->with('reservable') + ->where('user_id', Auth::id()) ->latest() ->get(); diff --git a/app/Http/Requests/Admin/FlightStoreRequest.php b/app/Http/Requests/Admin/FlightStoreRequest.php index c798007..79ed4d5 100644 --- a/app/Http/Requests/Admin/FlightStoreRequest.php +++ b/app/Http/Requests/Admin/FlightStoreRequest.php @@ -12,7 +12,7 @@ class FlightStoreRequest extends FormRequest */ public function authorize(): bool { - return false; + return true; } /** @@ -23,7 +23,68 @@ class FlightStoreRequest extends FormRequest public function rules(): array { return [ - // + 'airline'=>[ + 'required', + 'string', + 'max:100' + ], + 'flight_number'=>[ + 'required', + 'string', + 'max:50' + ], + 'origin'=>[ + 'required', + 'string', + 'max:100' + ], + 'destination'=>[ + 'required', + 'string', + 'max:100' + ], + 'departure_date'=>[ + 'required', + 'date', + + ], + 'departure_time'=>[ + 'required' + ], + 'arrival_time'=>[ + 'required' + ], + 'flight_class'=>[ + 'nullable', + 'string', + 'max:50' + ], + 'capacity'=>[ + 'required', + 'integer', + 'min:1' + ], + 'price'=>[ + 'required', + 'numeric', + 'min:0' + ], + 'image' => [ + 'nullable', + 'image', + 'mimes:jpg,jpeg,png,webp', + 'max:2048' + ], + 'type'=>[ + 'required', + 'integer', + 'in:0,2,3' + ], + 'status'=>[ + 'required', + 'in:0,1,2,3,4' + ] + ]; } } diff --git a/app/Models/Flight.php b/app/Models/Flight.php index 8061ab0..5f6a022 100644 --- a/app/Models/Flight.php +++ b/app/Models/Flight.php @@ -6,6 +6,8 @@ namespace App\Models; +use App\Enums\FlightStatus; +use App\Enums\FlightType; use Carbon\Carbon; use Illuminate\Database\Eloquent\Attributes\Scope; use Illuminate\Database\Eloquent\Builder; @@ -27,6 +29,7 @@ use Illuminate\Database\Eloquent\Model; * @property string $views * @property int|null $capacity * @property float|null $price + * @property int $type * @property int|null $status * @property Carbon|null $created_at * @property Carbon|null $updated_at @@ -44,7 +47,8 @@ class Flight extends Model 'arrival_time' => 'datetime', 'capacity' => 'int', 'price' => 'float', - 'status' => 'int' + 'type' => FlightType::class, + 'status' => FlightStatus::class, ]; protected $fillable = [ @@ -60,6 +64,7 @@ class Flight extends Model 'price', 'image', 'views', + 'type', 'status' ]; @@ -79,9 +84,7 @@ class Flight extends Model public function reservations() { return $this->morphMany( - Reservation::class, - 'reservable' - ); + Reservation::class, 'reservable'); } #[Scope] diff --git a/app/Models/Reservation.php b/app/Models/Reservation.php index 0e553e3..f1a3a14 100644 --- a/app/Models/Reservation.php +++ b/app/Models/Reservation.php @@ -56,5 +56,4 @@ class Reservation extends Model { return $this->morphTo(); } - } diff --git a/public/uploads/users/1787054360.jpg b/public/uploads/users/1787054360.jpg new file mode 100644 index 0000000..827594d Binary files /dev/null and b/public/uploads/users/1787054360.jpg differ diff --git a/resources/views/account/users/Reservation/index.blade.php b/resources/views/account/users/Reservation/index.blade.php index d4bebb1..fcf3e3e 100644 --- a/resources/views/account/users/Reservation/index.blade.php +++ b/resources/views/account/users/Reservation/index.blade.php @@ -60,14 +60,15 @@

- {{ $reservation->reservable?->name ?? 'پرواز حذف شده' }} + {{ $reservation->reservable?->airline ?? 'پرواز حذف شده' }}

- پرواز + {{ $reservation->reservable?->origin }} + - + {{ $reservation->reservable?->destination }}

- @endif diff --git a/resources/views/admins/Roles/index.blade.php b/resources/views/admin/Roles/index.blade.php similarity index 100% rename from resources/views/admins/Roles/index.blade.php rename to resources/views/admin/Roles/index.blade.php diff --git a/resources/views/admins/Roles/permissions.blade.php b/resources/views/admin/Roles/permissions.blade.php similarity index 100% rename from resources/views/admins/Roles/permissions.blade.php rename to resources/views/admin/Roles/permissions.blade.php diff --git a/resources/views/admin/flights/create.blade.php b/resources/views/admin/flights/create.blade.php index f11ca0e..56637ad 100644 --- a/resources/views/admin/flights/create.blade.php +++ b/resources/views/admin/flights/create.blade.php @@ -1,3 +1,224 @@ -
- -
+@extends('admin.layouts.app') + +@section('content') + +
+ +

+ ثبت پرواز جدید +

+ + +
+ + @csrf + + +
+ + +
+ + + + + @error('airline') + + {{ $message }} + + @enderror +
+ + + +
+ + + + + @error('flight_number') + + {{ $message }} + + @enderror +
+ + + +
+ + + + +
+ + + +
+ + + + +
+ + + +
+ + + + +
+ + + +
+ + + + + +
+ + + +
+ + + + + +
+ + + + +
+ + + + + +
+ + + +
+ + + + + +
+ + + +
+ + + + + +
+ + + +
+ + + + + +
+ + +
+ + + + + +
+ +
+ +@endsection diff --git a/resources/views/admin/flights/edit.blade.php b/resources/views/admin/flights/edit.blade.php index 10b58a2..67ff2f5 100644 --- a/resources/views/admin/flights/edit.blade.php +++ b/resources/views/admin/flights/edit.blade.php @@ -1,3 +1,241 @@ -
- -
+@extends('admin.layouts.app') + +@section('content') + +
+ +

+ ویرایش پرواز +

+ + +
+ + @csrf + @method('PUT') + + +
+ + +
+ + + + + @error('airline') + + {{ $message }} + + @enderror + +
+ + + +
+ + + + + +
+ + + +
+ + + + + +
+ + + +
+ + + + + +
+ + + +
+ + + + + +
+ + + +
+ + + + + +
+ + + +
+ + + + + +
+ + + +
+ + + + + +
+ + + +
+ + + + + +
+ + + +
+ + + + + +
+ + + +
+ + + + + +
+ + + + +
+ + + + + + + @if($flight->image) + + + + @endif + +
+ + +
+ + + + + + + بازگشت + + + +
+ + +
+ + +@endsection diff --git a/resources/views/admin/flights/index.blade.php b/resources/views/admin/flights/index.blade.php index f11d369..7d5bf24 100644 --- a/resources/views/admin/flights/index.blade.php +++ b/resources/views/admin/flights/index.blade.php @@ -1,3 +1,271 @@ -
- -
+@extends('admin.layouts.app') + +@section('content') + +
+ +
+ +

+ مدیریت پروازها +

+ + + + ثبت پرواز جدید + + + +
+ + +
+ + +
+ + +
+ + + +
+ + +
+ + + +
+ + +
+ + + +
+ + +
+ + + +
+ + +
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @forelse($flights as $flight) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @empty + + + + + + + + @endforelse + + + + +
+ # + + ایرلاین + + شماره پرواز + + مسیر + + نوع + + قیمت + + وضعیت + + عملیات +
+ {{ $loop->iteration }} + + {{ $flight->airline }} + + {{ $flight->flight_number }} + + {{ $flight->origin }} + - + {{ $flight->destination }} + + + @switch($flight->type->value) + + @case('internal') + داخلی + @break + + @case('external') + خارجی + @break + + @case('charter') + چارتر + @break + + @endswitch + + + {{ number_format($flight->price) }} + + {{ $flight->status }} + + + + + ویرایش + + + + + +
+ + @csrf + @method('DELETE') + + + + +
+ +
+ موردی یافت نشد +
+ + + {{ $flights->links() }} + + +
+ +@endsection diff --git a/routes/admin.php b/routes/admin.php index 4c42895..8b2126a 100644 --- a/routes/admin.php +++ b/routes/admin.php @@ -5,7 +5,7 @@ use App\Http\Controllers\Admin\AdminController; use App\Http\Controllers\Admin\Auth\AuthController; use App\Http\Controllers\Admin\Auth\DashboardController; use App\Http\Controllers\Admin\UserController; -use App\Http\Controllers\FlightController; +use App\Http\Controllers\Admin\FlightController; use App\Http\Controllers\RoleController; use App\Http\Controllers\TourController; use Illuminate\Support\Facades\Route; @@ -45,8 +45,10 @@ Route::prefix('admin')->name('admin.')->group(function (){ Route::prefix('flights')->name('flights.')->controller(FlightController::class)->group(function (){ Route::get('/','index')->name('index'); - Route::prefix('{flight}')->group(function (){ - Route::get('show','show')->name('show'); + Route::get('create','create')->name('create'); + Route::post('store','store')->name('store'); + + Route::prefix('{flight}')->group(function (){ Route::get('edit','edit')->name('edit'); Route::put('update','update')->name('update');