git commit"fix flight type display and status handling"

This commit is contained in:
2026-08-18 19:49:46 +03:30
parent 62a95c411b
commit 40dbf3b575
10 changed files with 130 additions and 94 deletions
-14
View File
@@ -1,14 +0,0 @@
<?php
namespace App\Enums;
enum FlightStatus : int
{
case Draft=0;
case Active=1;
case Inactive=2;
case Finished=3;
case Cancelled=4;
}
-10
View File
@@ -1,10 +0,0 @@
<?php
namespace App\Enums;
enum FlightType : int
{
case internal=0;
case external=2;
case charter=3;
}
+89 -11
View File
@@ -5,6 +5,8 @@ namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Http\Requests\Admin\FlightStoreRequest; use App\Http\Requests\Admin\FlightStoreRequest;
use App\Models\Flight; use App\Models\Flight;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Storage;
class FlightController extends Controller class FlightController extends Controller
{ {
@@ -12,52 +14,128 @@ class FlightController extends Controller
{ {
$flights = Flight::latest()->paginate(4); $flights = Flight::latest()->paginate(4);
return view('admin.flights.index',compact('flights')); return view('admin.flights.index', compact('flights'));
} }
public function create() public function create()
{ {
return view('admin.flights.create'); return view('admin.flights.create');
} }
public function store(FlightStoreRequest $request) public function store(FlightStoreRequest $request)
{ {
DB::beginTransaction();
try {
$data = $request->validated(); $data = $request->validated();
$data['type'] = (int) $data['type'];
if ($request->hasFile('image')) { if ($request->hasFile('image')) {
$data['image'] = $request->file('image')->store('flights', 'public');
$data['image'] = $request
->file('image')
->store('flights','public');
} }
Flight::create($data); Flight::create($data);
return redirect()->route('admin.flights.index')
->with('success', 'پرواز با موفقیت ثبت شد'); DB::commit();
return redirect()
->route('admin.flights.index')
->with('success','پرواز ثبت شد');
} catch(\Exception $e) {
DB::rollBack();
dd($e->getMessage());
} }
}
public function edit(Flight $flight) public function edit(Flight $flight)
{ {
return view('admin.flights.edit',compact('flight')); return view('admin.flights.edit',compact('flight'));
} }
public function update(FlightStoreRequest $request, Flight $flight) public function update(FlightStoreRequest $request, Flight $flight)
{ {
DB::beginTransaction();
try {
$data = $request->validated(); $data = $request->validated();
$data['type'] = (int) $data['type'];
if ($request->hasFile('image')) { if ($request->hasFile('image')) {
$data['image'] = $request->file('image')->store('flights', 'public');
if($flight->image){
Storage::disk('public')
->delete($flight->image);
} }
$data['image'] = $request
->file('image')
->store('flights','public');
}
$flight->update($data); $flight->update($data);
return redirect()->route('admin.flights.index')
->with('success', 'پرواز با موفقیت ویرایش شد'); DB::commit();
return redirect()
->route('admin.flights.index')
->with('success','پرواز ویرایش شد');
}catch(\Exception $e){
DB::rollBack();
dd($e->getMessage());
} }
}
public function destroy(Flight $flight) public function destroy(Flight $flight)
{ {
if($flight->image){
Storage::disk('public')
->delete($flight->image);
}
$flight->delete(); $flight->delete();
return back()->with('پرواز با موفقیت حذف شد.');
return back()
->with('success','پرواز حذف شد');
} }
} }
@@ -1,7 +1,8 @@
<?php <?php
namespace App\Http\Controllers; namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Models\Permission; use App\Models\Permission;
use App\Models\Role; use App\Models\Role;
use Illuminate\Http\Request; use Illuminate\Http\Request;
@@ -11,13 +12,13 @@ class RoleController extends Controller
public function index() public function index()
{ {
$roles=Role::paginate(3); $roles=Role::paginate(3);
return view('admins.Roles.index',compact('roles')); return view('admin.Roles.index',compact('roles'));
} }
public function permissions(Role $role) public function permissions(Role $role)
{ {
$permissions=Permission::all(); $permissions=Permission::all();
return view('admins.Roles.permissions',compact('role','permissions')); return view('admin.Roles.permissions',compact('role','permissions'));
} }
public function updatePermissions(Request $request, Role $role) public function updatePermissions(Request $request, Role $role)
{ {
@@ -46,10 +46,11 @@ class FlightStoreRequest extends FormRequest
'departure_date'=>[ 'departure_date'=>[
'required', 'required',
'date', 'date',
'after_or_equal:today'
], ],
'departure_time'=>[ 'departure_time'=>[
'required' 'required',
'date_format:H:i'
], ],
'arrival_time'=>[ 'arrival_time'=>[
'required' 'required'
+4 -2
View File
@@ -39,7 +39,9 @@ use Illuminate\Database\Eloquent\Model;
class Flight extends Model class Flight extends Model
{ {
protected $table = 'flights'; protected $table = 'flights';
public static $snakeAttributes = false; public static $snakeAttributes = false;
public $timestamps = true;
protected $casts = [ protected $casts = [
'departure_date' => 'datetime', 'departure_date' => 'datetime',
@@ -47,8 +49,8 @@ class Flight extends Model
'arrival_time' => 'datetime', 'arrival_time' => 'datetime',
'capacity' => 'int', 'capacity' => 'int',
'price' => 'float', 'price' => 'float',
'type' => FlightType::class, 'type' => 'int',
'status' => FlightStatus::class, 'status' => 'int',
]; ];
protected $fillable = [ protected $fillable = [
@@ -91,15 +91,9 @@
نوع پرواز نوع پرواز
</label> </label>
<select name="type" class="form-control">
<option value="0">داخلی</option> <option value="0">داخلی</option>
<option value="2">خارجی</option> <option value="2">خارجی</option>
<option value="3">چارتر</option> <option value="3">چارتر</option>
</select>
</div> </div>
@@ -110,10 +104,11 @@
تاریخ حرکت تاریخ حرکت
</label> </label>
<input type="date" <input type="text"
name="departure_date" name="departure_date"
class="form-control"> id="departure_date"
class="form-control"
autocomplete="off">
</div> </div>
+11 -18
View File
@@ -41,32 +41,28 @@
<div class="col-md-3"> <div class="col-md-3">
<select name="type" <select name="type" class="form-control">
class="form-control">
<option value=""> <option value="">
همه انواع همه انواع
</option> </option>
<option value="internal" <option value="0"
@selected(request('type')=='internal')> @selected(request('type')=='0')>
داخلی داخلی
</option> </option>
<option value="2"
<option value="external" @selected(request('type')=='2')>
@selected(request('type')=='external')>
خارجی خارجی
</option> </option>
<option value="3"
<option value="charter" @selected(request('type')=='3')>
@selected(request('type')=='charter')>
چارتر چارتر
</option> </option>
</select> </select>
</div> </div>
@@ -181,26 +177,23 @@
<td> <td>
@switch($flight->type)
@switch($flight->type->value) @case(0)
@case('internal')
داخلی داخلی
@break @break
@case('external') @case(2)
خارجی خارجی
@break @break
@case('charter') @case(3)
چارتر چارتر
@break @break
@endswitch @endswitch
</td> </td>
<td> <td>
{{ number_format($flight->price) }} {{ number_format($flight->price) }}
</td> </td>
@@ -71,16 +71,6 @@
</li> </li>
<li class="nav-item mb-2">
<a href="{{ route('admin.users.index') }}"
class="nav-link text-white">
کاربران
</a>
</li>
</ul> </ul>
+2 -2
View File
@@ -4,9 +4,9 @@
use App\Http\Controllers\Admin\AdminController; use App\Http\Controllers\Admin\AdminController;
use App\Http\Controllers\Admin\Auth\AuthController; use App\Http\Controllers\Admin\Auth\AuthController;
use App\Http\Controllers\Admin\Auth\DashboardController; use App\Http\Controllers\Admin\Auth\DashboardController;
use App\Http\Controllers\Admin\UserController;
use App\Http\Controllers\Admin\FlightController; use App\Http\Controllers\Admin\FlightController;
use App\Http\Controllers\RoleController; use App\Http\Controllers\Admin\RoleController;
use App\Http\Controllers\Admin\UserController;
use App\Http\Controllers\TourController; use App\Http\Controllers\TourController;
use Illuminate\Support\Facades\Route; use Illuminate\Support\Facades\Route;