From be0cbb1756b306e23a118cb080674526b85ff980 Mon Sep 17 00:00:00 2001 From: Yash Date: Wed, 26 Oct 2022 12:31:09 +0530 Subject: [PATCH] Rebased and fixed issue #1275 --- app/Http/Controllers/Admin/RankController.php | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/Admin/RankController.php b/app/Http/Controllers/Admin/RankController.php index 6a6f008b8..be7989149 100644 --- a/app/Http/Controllers/Admin/RankController.php +++ b/app/Http/Controllers/Admin/RankController.php @@ -7,6 +7,7 @@ use App\Http\Requests\UpdateRankRequest; use App\Repositories\RankRepository; use App\Repositories\SubfleetRepository; +use App\Repositories\UserRepository; use App\Services\FleetService; use Cache; use Illuminate\Http\Request; @@ -18,6 +19,7 @@ class RankController extends Controller private FleetService $fleetSvc; private RankRepository $rankRepository; private SubfleetRepository $subfleetRepo; + private UserRepository $userRepo; /** * RankController constructor. @@ -25,15 +27,18 @@ class RankController extends Controller * @param FleetService $fleetSvc * @param RankRepository $rankingRepo * @param SubfleetRepository $subfleetRepo + * @param UserRepository $userRepo */ public function __construct( FleetService $fleetSvc, RankRepository $rankingRepo, - SubfleetRepository $subfleetRepo + SubfleetRepository $subfleetRepo, + UserRepository $userRepo ) { $this->fleetSvc = $fleetSvc; $this->rankRepository = $rankingRepo; $this->subfleetRepo = $subfleetRepo; + $this->userRepo = $userRepo; } /** @@ -190,6 +195,19 @@ public function update($id, UpdateRankRequest $request) */ public function destroy($id) { + $rank_in_use = $this->userRepo->findWhere(['rank_id' => $id])->count(); + if ($rank_in_use > 0) { + Flash::error('Rank cannot be deleted since it\'s already assigned to one or more pilots!'); + + return redirect(route('admin.ranks.index')); + } + + if ($this->rankRepository->count() === 1) { + Flash::error('Rank cannot be deleted since it\'s the only remaining rank in your database!'); + + return redirect(route('admin.ranks.index')); + } + $rank = $this->rankRepository->findWithoutFail($id); if (empty($rank)) {