diff --git a/.env b/.env index 5cfb27b..753aa6b 100644 --- a/.env +++ b/.env @@ -74,4 +74,4 @@ NEXT_CLOUD_PASSWORD=userdev12345 NEXT_CLOUD_PATHPREFIX="" WABLAS_HOST=https://bdg.wablas.com -WABLAS_TOKEN=5iCaiP0nEgfl3lzrdsZGb9TvNYuwFZF8s4rp8AYwCx5OrYeiKXgixFMo9nDWNrJN +WABLAS_TOKEN=5iCaiP0nEgfl3lzrdsZGb9TvNYuwFZF8s4rp8AYwCx5OrYeiKXgixFMo9nDWNrJN.IF98hujz diff --git a/app/Helpers/BudgetHelper.php b/app/Helpers/BudgetHelper.php index 3d26892..99f4ae8 100644 --- a/app/Helpers/BudgetHelper.php +++ b/app/Helpers/BudgetHelper.php @@ -31,7 +31,7 @@ class BudgetHelper // Add the used budget per model for the specified month and year to the usedBudget array $users = UserHasCabang::where('cabang_id', $cabang_id)->get(); - $userIds = $users->pluck('user_id')->toArray(); + $userIds = $users->pluck('user_id')->toArray(); $forms = FormHelper::getFormsByUserIds($userIds, $month, $year)->sortByDesc('tanggal')->sortByDesc('created_at'); $usedBudget += $forms->sum('approved_total'); } @@ -40,4 +40,11 @@ class BudgetHelper return $availableBudget; } + + public static function getClosingDate($cabang_id) + { + $budget = BudgetControl::where('cabang_id', $cabang_id)->orderBy('created_at', 'desc')->first(); + + return $budget->closing_at; + } } diff --git a/app/Http/Controllers/Backend/DashboardController.php b/app/Http/Controllers/Backend/DashboardController.php index d04504e..eaa10f4 100644 --- a/app/Http/Controllers/Backend/DashboardController.php +++ b/app/Http/Controllers/Backend/DashboardController.php @@ -22,11 +22,36 @@ class DashboardController extends Controller { $role = auth()->user()->getRoleNames()[0]; $forms = [ - 'vehicle' => FormVehicleRunningCost::query(), - 'upcountry' => FormUpCountry::query(), - 'entertainment' => FormEntertaimentPresentation::query(), - 'meeting' => FormMeetingSeminar::query(), - 'others' => FormOthers::query(), + 'vehicle' => FormVehicleRunningCost::whereMonth('tanggal', date('m')) + ->whereYear('tanggal', date('Y')) + ->where('tanggal', '<=', date('Y-m-10')) + ->whereRaw('DAY(CURDATE()) <= 10') + ->orderBy('tanggal', 'desc') + ->get(), + 'upcountry' => FormUpCountry::whereMonth('tanggal', date('m')) + ->whereYear('tanggal', date('Y')) + ->where('tanggal', '<=', date('Y-m-10')) + ->whereRaw('DAY(CURDATE()) <= 10') + ->orderBy('tanggal', 'desc') + ->get(), + 'entertainment' => FormEntertaimentPresentation::whereMonth('tanggal', date('m')) + ->whereYear('tanggal', date('Y')) + ->where('tanggal', '<=', date('Y-m-10')) + ->whereRaw('DAY(CURDATE()) <= 10') + ->orderBy('tanggal', 'desc') + ->get(), + 'meeting' => FormMeetingSeminar::whereMonth('created_at', date('m')) + ->whereYear('created_at', date('Y')) + ->where('created_at', '<=', date('Y-m-10')) + ->whereRaw('DAY(CURDATE()) <= 10') + ->orderBy('created_at', 'desc') + ->get(), + 'others' => FormOthers::whereMonth('tanggal', date('m')) + ->whereYear('tanggal', date('Y')) + ->where('tanggal', '<=', date('Y-m-10')) + ->whereRaw('DAY(CURDATE()) <= 10') + ->orderBy('tanggal', 'desc') + ->get(), ]; if ($role == 'Admin Region' || $role == 'Marketing Operational Manager Region') { diff --git a/app/Http/Controllers/Forms/FormEntertainmentPresentationController.php b/app/Http/Controllers/Forms/FormEntertainmentPresentationController.php index 3f5d2ed..a7e78ef 100644 --- a/app/Http/Controllers/Forms/FormEntertainmentPresentationController.php +++ b/app/Http/Controllers/Forms/FormEntertainmentPresentationController.php @@ -32,7 +32,13 @@ class FormEntertainmentPresentationController extends Controller $this->checkAuthorization(auth()->user(), ['forms.entertainment.view']); $role = auth()->user()->getRoleNames()[0]; - $forms = FormEntertaimentPresentation::get(); + $forms = FormEntertaimentPresentation::whereMonth('tanggal', date('m')) + ->whereYear('tanggal', date('Y')) + ->where('tanggal', '<=', date('Y-m-10')) + ->whereRaw('DAY(CURDATE()) <= 10') + ->orderBy('tanggal', 'desc') + ->get(); + $availableBudget = null; if ($role == 'Admin Region' || $role == 'Marketing Operational Manager Region') { @@ -59,7 +65,8 @@ class FormEntertainmentPresentationController extends Controller } else if ($role == 'Medical Representatif') { $forms = $forms->where('user_id', auth()->user()->id); - $availableBudget = BudgetHelper::getAvailableBudget($forms->first()->user->cabang->cabang->id); + $cabang_id = UserHasCabang::where('user_id', auth()->user()->id)->first()->cabang_id; + $availableBudget = BudgetHelper::getAvailableBudget($cabang_id); } else { $forms = $forms; @@ -104,12 +111,13 @@ class FormEntertainmentPresentationController extends Controller public function store(Request $request) { $this->checkAuthorization(auth()->user(), ['forms.entertainment.create']); + $cabang_id = UserHasCabang::where('user_id', auth()->user()->id)->first()->cabang_id; $request->validate([ 'tanggal' => 'required', 'jenis' => 'required|in:entertainment,presentation,sponsorship', 'keterangan' => 'required', - 'total' => 'required|numeric|min:1|max:' . BudgetHelper::getAvailableBudget(), + 'total' => 'required|numeric|min:1|max:' . BudgetHelper::getAvailableBudget($cabang_id), 'name' => 'required', 'alamat' => 'required', 'nik_or_npwp' => 'required', @@ -216,19 +224,20 @@ class FormEntertainmentPresentationController extends Controller { $this->checkAuthorization(auth()->user(), ['forms.entertainment.edit']); $role = auth()->user()->getRoleNames()[0]; + $form = FormEntertaimentPresentation::findOrfail($id); + $cabang_id = UserHasCabang::where('user_id', $form->user_id)->first()->cabang_id; $request->validate([ 'tanggal' => 'required', 'jenis' => 'required|in:entertainment,presentation,sponsorship', 'keterangan' => 'required', - 'total' => 'required|numeric|min:1|max:' . BudgetHelper::getAvailableBudget(), + 'total' => 'required|numeric|min:1|max:' . BudgetHelper::getAvailableBudget($cabang_id), 'name' => 'required', 'alamat' => 'required', 'nik_or_npwp' => 'required', 'bukti_total' => ['nullable', 'file', 'max:51200', new FileType(['php', 'exe', 'js', 'sh', 'bat', 'exe', 'sh', 'php', 'vbs'])], ]); - $form = FormEntertaimentPresentation::findOrfail($id); if($form->status != 'On Progress' && $role == 'Medical Representatif') { session()->flash('error', 'You cannot edit this form because it has been approved or rejected.'); return redirect()->back(); @@ -280,7 +289,8 @@ class FormEntertainmentPresentationController extends Controller ]); $form = FormEntertaimentPresentation::findOrfail($id); - if($form->total > BudgetHelper::getAvailableBudget()) { + $cabang_id = UserHasCabang::where('user_id', $form->user_id)->first()->cabang_id; + if($form->total > BudgetHelper::getAvailableBudget($cabang_id)) { session()->flash('error', 'The total nominal exceeds the available budget.'); return redirect()->back(); } diff --git a/app/Http/Controllers/Forms/FormMeetingSeminarController.php b/app/Http/Controllers/Forms/FormMeetingSeminarController.php index c47af8c..206504d 100644 --- a/app/Http/Controllers/Forms/FormMeetingSeminarController.php +++ b/app/Http/Controllers/Forms/FormMeetingSeminarController.php @@ -32,7 +32,13 @@ class FormMeetingSeminarController extends Controller $this->checkAuthorization(auth()->user(), ['forms.meeting.view']); $role = auth()->user()->getRoleNames()[0]; - $forms = FormMeetingSeminar::get(); + $forms = FormMeetingSeminar::whereMonth('created_at', date('m')) + ->whereYear('created_at', date('Y')) + ->where('created_at', '<=', date('Y-m-10')) + ->whereRaw('DAY(CURDATE()) <= 10') + ->orderBy('created_at', 'desc') + ->get(); + $availableBudget = null; if ($role == 'Admin Region' || $role == 'Marketing Operational Manager Region') { @@ -59,7 +65,8 @@ class FormMeetingSeminarController extends Controller } else if ($role == 'Medical Representatif') { $forms = $forms->where('user_id', auth()->user()->id); - $availableBudget = BudgetHelper::getAvailableBudget($forms->first()->user->cabang->cabang->id); + $cabang_id = UserHasCabang::where('user_id', auth()->user()->id)->first()->cabang_id; + $availableBudget = BudgetHelper::getAvailableBudget($cabang_id); } else { $forms = $forms; @@ -175,7 +182,8 @@ class FormMeetingSeminarController extends Controller ]; // Check if the total nominal exceeds the available budget - if(array_sum($data_nominal) > BudgetHelper::getAvailableBudget()) { + $cabang_id = UserHasCabang::where('user_id', auth()->user()->id)->first()->cabang_id; + if(array_sum($data_nominal) > BudgetHelper::getAvailableBudget($cabang_id)) { session()->flash('error', 'The total nominal exceeds the available budget.'); return redirect()->back(); } @@ -254,6 +262,7 @@ class FormMeetingSeminarController extends Controller { $this->checkAuthorization(auth()->user(), ['forms.meeting.edit']); $role = auth()->user()->getRoleNames()[0]; + $form = FormMeetingSeminar::findOrfail($id); $request->validate([ 'allowance' => 'nullable|numeric', @@ -264,7 +273,6 @@ class FormMeetingSeminarController extends Controller 'bukti_hotel' => ['nullable', 'file', 'max:51200', new FileType(['php', 'exe', 'js', 'sh', 'bat', 'exe', 'sh', 'php', 'vbs'])], ]); - $form = FormMeetingSeminar::findOrfail($id); if($form->status != 'On Progress' && $role == 'Medical Representatif') { session()->flash('error', 'You cannot edit this form because it has been approved or rejected.'); return redirect()->back(); @@ -322,7 +330,8 @@ class FormMeetingSeminarController extends Controller ]; // Check if the total nominal exceeds the available budget - if(array_sum($data_nominal) > BudgetHelper::getAvailableBudget()) { + $cabang_id = UserHasCabang::where('user_id', $form->user_id)->first()->cabang_id; + if(array_sum($data_nominal) > BudgetHelper::getAvailableBudget($cabang_id)) { session()->flash('error', 'The total nominal exceeds the available budget.'); return redirect()->back(); } @@ -356,7 +365,8 @@ class FormMeetingSeminarController extends Controller ]; // Check if the total nominal exceeds the available budget - if(array_sum($approved_data) > BudgetHelper::getAvailableBudget()) { + $cabang_id = UserHasCabang::where('user_id', $form->user_id)->first()->cabang_id; + if(array_sum($approved_data) > BudgetHelper::getAvailableBudget($cabang_id)) { session()->flash('error', 'The total nominal exceeds the available budget.'); return redirect()->back(); } diff --git a/app/Http/Controllers/Forms/FormOtherController.php b/app/Http/Controllers/Forms/FormOtherController.php index e124d2c..f7700a6 100644 --- a/app/Http/Controllers/Forms/FormOtherController.php +++ b/app/Http/Controllers/Forms/FormOtherController.php @@ -32,7 +32,13 @@ class FormOtherController extends Controller $this->checkAuthorization(auth()->user(), ['forms.other.view']); $role = auth()->user()->getRoleNames()[0]; - $forms = FormOthers::get(); + $forms = FormOthers::whereMonth('tanggal', date('m')) + ->whereYear('tanggal', date('Y')) + ->where('tanggal', '<=', date('Y-m-10')) + ->whereRaw('DAY(CURDATE()) <= 10') + ->orderBy('tanggal', 'desc') + ->get(); + $availableBudget = null; if ($role == 'Admin Region' || $role == 'Marketing Operational Manager Region') { @@ -59,7 +65,9 @@ class FormOtherController extends Controller } else if ($role == 'Medical Representatif') { $forms = $forms->where('user_id', auth()->user()->id); - $availableBudget = BudgetHelper::getAvailableBudget($forms->first()->user->cabang->cabang->id); + $cabang_id = UserHasCabang::where('user_id', auth()->user()->id)->first()->cabang_id; + + $availableBudget = BudgetHelper::getAvailableBudget($cabang_id); } else { $forms = $forms; @@ -107,12 +115,13 @@ class FormOtherController extends Controller public function store(Request $request) { $this->checkAuthorization(auth()->user(), ['forms.other.create']); + $cabang_id = UserHasCabang::where('user_id', auth()->user()->id)->first()->cabang_id; $request->validate([ 'kategori_id' => 'required', 'tanggal' => 'required|date', 'keterangan' => 'required', - 'total' => 'required|numeric|min:1|max:' . BudgetHelper::getAvailableBudget(), + 'total' => 'required|numeric|min:1|max:' . BudgetHelper::getAvailableBudget($cabang_id), 'bukti_total' => ['nullable', 'file', 'max:51200', new FileType(['php', 'exe', 'js', 'sh', 'bat', 'exe', 'sh', 'php', 'vbs'])], ]); @@ -214,16 +223,17 @@ class FormOtherController extends Controller { $this->checkAuthorization(auth()->user(), ['forms.other.edit']); $role = auth()->user()->getRoleNames()[0]; + $form = FormOthers::findOrfail($id); + $cabang_id = UserHasCabang::where('user_id', $form->user_id)->first()->cabang_id; $request->validate([ 'kategori_id' => 'required', 'tanggal' => 'required|date', 'keterangan' => 'required', - 'total' => 'required|numeric|min:1|max:' . BudgetHelper::getAvailableBudget(), + 'total' => 'required|numeric|min:1|max:' . BudgetHelper::getAvailableBudget($cabang_id), 'bukti_total' => ['nullable', 'file', 'max:51200', new FileType(['php', 'exe', 'js', 'sh', 'bat', 'exe', 'sh', 'php', 'vbs'])], ]); - $form = FormOthers::findOrfail($id); if($form->status != 'On Progress' && $role == 'Medical Representatif') { session()->flash('error', 'You cannot edit this form because it has been approved or rejected.'); return redirect()->back(); @@ -273,7 +283,8 @@ class FormOtherController extends Controller ]); $form = FormOthers::findOrfail($id); - if($form->total > BudgetHelper::getAvailableBudget()) { + $cabang_id = UserHasCabang::where('user_id', $form->user_id)->first()->cabang_id; + if($form->total > BudgetHelper::getAvailableBudget($cabang_id)) { session()->flash('error', 'The total nominal exceeds the available budget.'); return redirect()->back(); } diff --git a/app/Http/Controllers/Forms/FormUpCountryController.php b/app/Http/Controllers/Forms/FormUpCountryController.php index 169afbc..d347167 100644 --- a/app/Http/Controllers/Forms/FormUpCountryController.php +++ b/app/Http/Controllers/Forms/FormUpCountryController.php @@ -32,7 +32,13 @@ class FormUpCountryController extends Controller $this->checkAuthorization(auth()->user(), ['forms.country.view']); $role = auth()->user()->getRoleNames()[0]; - $forms = FormUpCountry::get(); + $forms = FormUpCountry::whereMonth('tanggal', date('m')) + ->whereYear('tanggal', date('Y')) + ->where('tanggal', '<=', date('Y-m-10')) + ->whereRaw('DAY(CURDATE()) <= 10') + ->orderBy('tanggal', 'desc') + ->get(); + $availableBudget = null; if ($role == 'Admin Region' || $role == 'Marketing Operational Manager Region') { @@ -59,7 +65,9 @@ class FormUpCountryController extends Controller } else if ($role == 'Medical Representatif') { $forms = $forms->where('user_id', auth()->user()->id); - $availableBudget = BudgetHelper::getAvailableBudget($forms->first()->user->cabang->cabang->id); + $cabang_id = UserHasCabang::where('user_id', auth()->user()->id)->first()->cabang_id; + + $availableBudget = BudgetHelper::getAvailableBudget($cabang_id); } else { $forms = $forms; @@ -199,7 +207,8 @@ class FormUpCountryController extends Controller ]; // Check if the total nominal exceeds the available budget - if(array_sum($data_nominal) > BudgetHelper::getAvailableBudget()) { + $cabang_id = UserHasCabang::where('user_id', auth()->user()->id)->first()->cabang_id; + if(array_sum($data_nominal) > BudgetHelper::getAvailableBudget($cabang_id)) { session()->flash('error', 'The total nominal exceeds the available budget.'); return redirect()->back(); } @@ -372,7 +381,8 @@ class FormUpCountryController extends Controller ]; // Check if the total nominal exceeds the available budget - if(array_sum($data_nominal) > BudgetHelper::getAvailableBudget()) { + $cabang_id = UserHasCabang::where('user_id', $form->user_id)->first()->cabang_id; + if(array_sum($data_nominal) > BudgetHelper::getAvailableBudget($cabang_id)) { session()->flash('error', 'The total nominal exceeds the available budget.'); return redirect()->back(); } @@ -413,7 +423,8 @@ class FormUpCountryController extends Controller ]; // Check if the total nominal exceeds the available budget - if(array_sum($approved_data) > BudgetHelper::getAvailableBudget()) { + $cabang_id = UserHasCabang::where('user_id', $form->user_id)->first()->cabang_id; + if(array_sum($approved_data) > BudgetHelper::getAvailableBudget($cabang_id)) { session()->flash('error', 'The total nominal exceeds the available budget.'); return redirect()->back(); } diff --git a/app/Http/Controllers/Forms/FormVehicleController.php b/app/Http/Controllers/Forms/FormVehicleController.php index 2657ba9..7b53c8d 100644 --- a/app/Http/Controllers/Forms/FormVehicleController.php +++ b/app/Http/Controllers/Forms/FormVehicleController.php @@ -32,7 +32,13 @@ class FormVehicleController extends Controller $this->checkAuthorization(auth()->user(), ['forms.vehicle.view']); $role = auth()->user()->getRoleNames()[0]; - $forms = FormVehicleRunningCost::get(); + $forms = FormVehicleRunningCost::whereMonth('tanggal', date('m')) + ->whereYear('tanggal', date('Y')) + ->where('tanggal', '<=', date('Y-m-10')) + ->whereRaw('DAY(CURDATE()) <= 10') + ->orderBy('tanggal', 'desc') + ->get(); + $availableBudget = null; if ($role == 'Admin Region' || $role == 'Marketing Operational Manager Region') { @@ -59,7 +65,9 @@ class FormVehicleController extends Controller } else if ($role == 'Medical Representatif') { $forms = $forms->where('user_id', auth()->user()->id); - $availableBudget = BudgetHelper::getAvailableBudget($forms->first()->user->cabang->cabang->id); + $cabang_id = UserHasCabang::where('user_id', auth()->user()->id)->first()->cabang_id; + + $availableBudget = BudgetHelper::getAvailableBudget($cabang_id); } else { $forms = $forms; @@ -104,11 +112,12 @@ class FormVehicleController extends Controller public function store(Request $request) { $this->checkAuthorization(auth()->user(), ['forms.vehicle.create']); + $cabang_id = UserHasCabang::where('user_id', auth()->user()->id)->first()->cabang_id; $request->validate([ 'tanggal' => 'required', 'liter' => 'required', - 'total' => 'required|numeric|min:1|max:' . BudgetHelper::getAvailableBudget(), + 'total' => 'required|numeric|min:1|max:' . BudgetHelper::getAvailableBudget($cabang_id), 'jarak' => 'required', 'tipe_bensin' => 'required|in:pertalite,pertamax', 'nopol' => 'required', @@ -217,11 +226,13 @@ class FormVehicleController extends Controller { $this->checkAuthorization(auth()->user(), ['forms.vehicle.edit']); $role = auth()->user()->getRoleNames()[0]; + $form = FormVehicleRunningCost::findOrfail($id); + $cabang_id = UserHasCabang::where('user_id', $form->user_id)->first()->cabang_id; $request->validate([ 'tanggal' => 'required', 'liter' => 'required', - 'total' => 'required|numeric|min:1|max:' . BudgetHelper::getAvailableBudget(), + 'total' => 'required|numeric|min:1|max:' . BudgetHelper::getAvailableBudget($cabang_id), 'jarak' => 'required', 'tipe_bensin' => 'required|in:pertalite,pertamax', 'nopol' => 'required', @@ -229,7 +240,6 @@ class FormVehicleController extends Controller 'bukti_total' => ['nullable', 'file', 'max:51200', new FileType(['php', 'exe', 'js', 'sh', 'bat', 'exe', 'sh', 'php', 'vbs'])], ]); - $form = FormVehicleRunningCost::findOrfail($id); if($form->status != 'On Progress' && $role == 'Medical Representatif') { session()->flash('error', 'You cannot edit this form because it has been approved or rejected.'); return redirect()->back(); @@ -282,7 +292,8 @@ class FormVehicleController extends Controller ]); $form = FormVehicleRunningCost::findOrfail($id); - if($form->total > BudgetHelper::getAvailableBudget()) { + $cabang_id = UserHasCabang::where('user_id', $form->user_id)->first()->cabang_id; + if($form->total > BudgetHelper::getAvailableBudget($cabang_id)) { session()->flash('error', 'The total nominal exceeds the available budget.'); return redirect()->back(); }