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?->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 @@ -| + # + | + ++ ایرلاین + | + ++ شماره پرواز + | + ++ مسیر + | + ++ نوع + | + ++ قیمت + | + ++ وضعیت + | + ++ عملیات + | + +
|---|---|---|---|---|---|---|---|
| + {{ $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 }} + | + + ++ + + + ویرایش + + + + + + + + | + + +
| + موردی یافت نشد + | + +|||||||