diff --git a/app/Helpers/OutstandingHelper.php b/app/Helpers/OutstandingHelper.php
new file mode 100644
index 0000000..55578fc
--- /dev/null
+++ b/app/Helpers/OutstandingHelper.php
@@ -0,0 +1,77 @@
+filter(function ($form) use ($role, $periodStart, $periodEnd, $regionId, $cabangId) {
+ $tanggal = Carbon::parse($form->tanggal);
+ if ($tanggal->lt($periodStart) || $tanggal->gt($periodEnd)) {
+ return false;
+ }
+
+ $status = $form->status;
+ switch ($role) {
+ case 'Admin Region':
+ if ($status !== 'On Progress') {
+ return false;
+ }
+ if ($regionId && optional($form->user)->region_id !== $regionId) {
+ return false;
+ }
+ return true;
+
+ case 'Area Manager Cabang':
+ if ($status !== 'Approved 1') {
+ return false;
+ }
+ if ($cabangId && optional($form->rayon)->cabang_id !== $cabangId) {
+ return false;
+ }
+ return true;
+
+ case 'Marketing Information System':
+ return $status === 'Approved 1';
+
+ case 'Marketing Operational Manager Region':
+ if ($status !== 'Approved 2') {
+ return false;
+ }
+ if (!is_null($form->final_approved_at) || !is_null($form->final_approved_by)) {
+ return false;
+ }
+ if ($regionId && optional($form->user)->region_id !== $regionId) {
+ return false;
+ }
+ return true;
+
+ case 'Head of Sales Marketing':
+ if ($status !== 'Approved 2') {
+ return false;
+ }
+ return is_null($form->final_approved_at) || is_null($form->final_approved_by);
+
+ default:
+ return is_null($form->final_approved_at) || is_null($form->final_approved_by);
+ }
+ });
+ }
+}
diff --git a/app/Http/Controllers/Forms/FormEntertainmentPresentationController.php b/app/Http/Controllers/Forms/FormEntertainmentPresentationController.php
index 2c79bc7..4987efe 100644
--- a/app/Http/Controllers/Forms/FormEntertainmentPresentationController.php
+++ b/app/Http/Controllers/Forms/FormEntertainmentPresentationController.php
@@ -26,6 +26,7 @@ use App\Models\Admin;
use App\Rules\FileType;
use App\Helpers\BudgetHelper;
use App\Helpers\NotificationHelper;
+use App\Helpers\OutstandingHelper;
use Illuminate\Support\Facades\Log;
use App\Services\BrevoService;
use Carbon\Carbon;
@@ -39,6 +40,9 @@ class FormEntertainmentPresentationController extends Controller
$role = auth()->user()->getRoleNames()[0];
$startDay = (int) env('STARTING_DATE', 11);
$closingDay = (int) env('CLOSING_DATE', 10);
+ $userRegionData = auth()->user()->getMyCabangAndRegionId();
+ $regionContextId = $userRegionData['region'] !== '-' ? $userRegionData['region'] : null;
+ $cabangContextId = $userRegionData['cabang'] !== '-' ? $userRegionData['cabang'] : null;
$now = Carbon::now();
@@ -64,25 +68,21 @@ class FormEntertainmentPresentationController extends Controller
$periodeYear = (int) $currentPeriodStartDate->format('Y');
if ($role == 'Admin Region' || $role == 'Marketing Operational Manager Region') {
- $region_id = auth()->user()->getMyCabangAndRegionId()['region'];
-
- if ($region_id) {
- $users = UserHasCabang::whereHas('cabang', function ($query) use ($region_id) {
- $query->where('region_id', $region_id);
+ if ($regionContextId) {
+ $users = UserHasCabang::whereHas('cabang', function ($query) use ($regionContextId) {
+ $query->where('region_id', $regionContextId);
})->get();
$userIds = $users->pluck('user_id')->toArray();
$forms = $forms->whereIn('user_id', $userIds);
}
} elseif ($role == 'Area Manager Cabang') {
- $cabang_id = auth()->user()->getMyCabangAndRegionId()['cabang'];
-
- if ($cabang_id) {
- $users = UserHasCabang::where('cabang_id', $cabang_id)->get();
+ if ($cabangContextId) {
+ $users = UserHasCabang::where('cabang_id', $cabangContextId)->get();
$userIds = $users->pluck('user_id')->toArray();
$forms = $forms->whereIn('user_id', $userIds);
- $availableBudget = BudgetHelper::getAvailableBudget($cabang_id, $periodeMonth, $periodeYear);
+ $availableBudget = BudgetHelper::getAvailableBudget($cabangContextId, $periodeMonth, $periodeYear);
}
} elseif ($role == 'Medical Representatif') {
$forms = $forms->where('user_id', auth()->user()->id);
@@ -93,9 +93,16 @@ class FormEntertainmentPresentationController extends Controller
}
}
- $outstandingForms = $forms->filter(function ($form) {
- return is_null($form->final_approved_at) || is_null($form->final_approved_by);
- });
+ $outstandingForms = OutstandingHelper::filterForms(
+ $forms,
+ $role,
+ $currentPeriodStartDate,
+ $currentPeriodClosingDate,
+ [
+ 'region_id' => $regionContextId,
+ 'cabang_id' => $cabangContextId,
+ ]
+ );
session()->put('redirect_url', route('forms.entertainment'));
return view('backend.pages.forms.entertainment.index', [
@@ -103,6 +110,7 @@ class FormEntertainmentPresentationController extends Controller
'availableBudget' => $availableBudget,
'outstandingCount' => $outstandingForms->count(),
'outstandingTotal' => $outstandingForms->sum('total'),
+ 'outstandingIds' => $outstandingForms->pluck('id')->toArray(),
]);
}
diff --git a/app/Http/Controllers/Forms/FormMeetingSeminarController.php b/app/Http/Controllers/Forms/FormMeetingSeminarController.php
index 6b04fda..54a37e1 100644
--- a/app/Http/Controllers/Forms/FormMeetingSeminarController.php
+++ b/app/Http/Controllers/Forms/FormMeetingSeminarController.php
@@ -26,6 +26,7 @@ use App\Rules\FileType;
use App\Models\Admin;
use App\Helpers\BudgetHelper;
use App\Helpers\NotificationHelper;
+use App\Helpers\OutstandingHelper;
use Illuminate\Support\Facades\Log;
use App\Services\BrevoService;
use Carbon\Carbon;
@@ -39,6 +40,9 @@ class FormMeetingSeminarController extends Controller
$role = auth()->user()->getRoleNames()[0];
$startDay = (int) env('STARTING_DATE', 11);
$closingDay = (int) env('CLOSING_DATE', 10);
+ $userRegionData = auth()->user()->getMyCabangAndRegionId();
+ $regionContextId = $userRegionData['region'] !== '-' ? $userRegionData['region'] : null;
+ $cabangContextId = $userRegionData['cabang'] !== '-' ? $userRegionData['cabang'] : null;
// Referensi waktu sekarang
$now = Carbon::now();
@@ -65,25 +69,21 @@ class FormMeetingSeminarController extends Controller
$periodeYear = (int) $currentPeriodStartDate->format('Y');
if ($role == 'Admin Region' || $role == 'Marketing Operational Manager Region') {
- $region_id = auth()->user()->getMyCabangAndRegionId()['region'];
-
- if ($region_id) {
- $users = UserHasCabang::whereHas('cabang', function ($query) use ($region_id) {
- $query->where('region_id', $region_id);
+ if ($regionContextId) {
+ $users = UserHasCabang::whereHas('cabang', function ($query) use ($regionContextId) {
+ $query->where('region_id', $regionContextId);
})->get();
$userIds = $users->pluck('user_id')->toArray();
$forms = $forms->whereIn('user_id', $userIds);
}
} elseif ($role == 'Area Manager Cabang') {
- $cabang_id = auth()->user()->getMyCabangAndRegionId()['cabang'];
-
- if ($cabang_id) {
- $users = UserHasCabang::where('cabang_id', $cabang_id)->get();
+ if ($cabangContextId) {
+ $users = UserHasCabang::where('cabang_id', $cabangContextId)->get();
$userIds = $users->pluck('user_id')->toArray();
$forms = $forms->whereIn('user_id', $userIds);
- $availableBudget = BudgetHelper::getAvailableBudget($cabang_id, $periodeMonth, $periodeYear);
+ $availableBudget = BudgetHelper::getAvailableBudget($cabangContextId, $periodeMonth, $periodeYear);
}
} elseif ($role == 'Medical Representatif') {
$forms = $forms->where('user_id', auth()->user()->id);
@@ -94,9 +94,16 @@ class FormMeetingSeminarController extends Controller
}
}
- $outstandingForms = $forms->filter(function ($form) {
- return is_null($form->final_approved_at) || is_null($form->final_approved_by);
- });
+ $outstandingForms = OutstandingHelper::filterForms(
+ $forms,
+ $role,
+ $currentPeriodStartDate,
+ $currentPeriodClosingDate,
+ [
+ 'region_id' => $regionContextId,
+ 'cabang_id' => $cabangContextId,
+ ]
+ );
session()->put('redirect_url', route('forms.meeting'));
@@ -105,6 +112,7 @@ class FormMeetingSeminarController extends Controller
'availableBudget' => $availableBudget,
'outstandingCount' => $outstandingForms->count(),
'outstandingTotal' => $outstandingForms->sum('total'),
+ 'outstandingIds' => $outstandingForms->pluck('id')->toArray(),
]);
}
diff --git a/app/Http/Controllers/Forms/FormOtherController.php b/app/Http/Controllers/Forms/FormOtherController.php
index 6323cf6..45d9f2b 100644
--- a/app/Http/Controllers/Forms/FormOtherController.php
+++ b/app/Http/Controllers/Forms/FormOtherController.php
@@ -23,6 +23,7 @@ use App\Models\Admin;
use App\Helpers\BudgetHelper;
use App\Helpers\NotificationHelper;
use App\Models\Cabang;
+use App\Helpers\OutstandingHelper;
use Illuminate\Support\Facades\Log;
use App\Services\BrevoService;
use Carbon\Carbon;
@@ -36,6 +37,9 @@ class FormOtherController extends Controller
$role = auth()->user()->getRoleNames()[0];
$startDay = (int) env('STARTING_DATE', 11);
$closingDay = (int) env('CLOSING_DATE', 10);
+ $userRegionData = auth()->user()->getMyCabangAndRegionId();
+ $regionContextId = $userRegionData['region'] !== '-' ? $userRegionData['region'] : null;
+ $cabangContextId = $userRegionData['cabang'] !== '-' ? $userRegionData['cabang'] : null;
// Referensi waktu sekarang
$now = Carbon::now();
@@ -62,25 +66,21 @@ class FormOtherController extends Controller
$periodeYear = (int) $currentPeriodStartDate->format('Y');
if ($role == 'Admin Region' || $role == 'Marketing Operational Manager Region') {
- $region_id = auth()->user()->getMyCabangAndRegionId()['region'];
-
- if ($region_id) {
- $users = UserHasCabang::whereHas('cabang', function ($query) use ($region_id) {
- $query->where('region_id', $region_id);
+ if ($regionContextId) {
+ $users = UserHasCabang::whereHas('cabang', function ($query) use ($regionContextId) {
+ $query->where('region_id', $regionContextId);
})->get();
$userIds = $users->pluck('user_id')->toArray();
$forms = $forms->whereIn('user_id', $userIds);
}
} elseif ($role == 'Area Manager Cabang') {
- $cabang_id = auth()->user()->getMyCabangAndRegionId()['cabang'];
-
- if ($cabang_id) {
- $users = UserHasCabang::where('cabang_id', $cabang_id)->get();
+ if ($cabangContextId) {
+ $users = UserHasCabang::where('cabang_id', $cabangContextId)->get();
$userIds = $users->pluck('user_id')->toArray();
$forms = $forms->whereIn('user_id', $userIds);
- $availableBudget = BudgetHelper::getAvailableBudget($cabang_id, $periodeMonth, $periodeYear);
+ $availableBudget = BudgetHelper::getAvailableBudget($cabangContextId, $periodeMonth, $periodeYear);
}
} elseif ($role == 'Medical Representatif') {
$forms = $forms->where('user_id', auth()->user()->id);
@@ -91,9 +91,16 @@ class FormOtherController extends Controller
}
}
- $outstandingForms = $forms->filter(function ($form) {
- return is_null($form->final_approved_at) || is_null($form->final_approved_by);
- });
+ $outstandingForms = OutstandingHelper::filterForms(
+ $forms,
+ $role,
+ $currentPeriodStartDate,
+ $currentPeriodClosingDate,
+ [
+ 'region_id' => $regionContextId,
+ 'cabang_id' => $cabangContextId,
+ ]
+ );
session()->put('redirect_url', route('forms.other'));
@@ -102,6 +109,7 @@ class FormOtherController extends Controller
'availableBudget' => $availableBudget,
'outstandingCount' => $outstandingForms->count(),
'outstandingTotal' => $outstandingForms->sum('total'),
+ 'outstandingIds' => $outstandingForms->pluck('id')->toArray(),
]);
}
diff --git a/app/Http/Controllers/Forms/FormUpCountryController.php b/app/Http/Controllers/Forms/FormUpCountryController.php
index e9d5902..53e6bfd 100644
--- a/app/Http/Controllers/Forms/FormUpCountryController.php
+++ b/app/Http/Controllers/Forms/FormUpCountryController.php
@@ -26,6 +26,7 @@ use App\Rules\FileType;
use App\Models\Admin;
use App\Helpers\BudgetHelper;
use App\Helpers\NotificationHelper;
+use App\Helpers\OutstandingHelper;
use Illuminate\Support\Facades\Log;
use App\Services\BrevoService;
use Carbon\Carbon;
@@ -62,29 +63,28 @@ class FormUpCountryController extends Controller
->get();
$availableBudget = null;
+ $userRegionData = auth()->user()->getMyCabangAndRegionId();
+ $regionContextId = $userRegionData['region'] !== '-' ? $userRegionData['region'] : null;
+ $cabangContextId = $userRegionData['cabang'] !== '-' ? $userRegionData['cabang'] : null;
$periodeMonth = strtolower($currentPeriodStartDate->format('F'));
$periodeYear = (int) $currentPeriodStartDate->format('Y');
if ($role == 'Admin Region' || $role == 'Marketing Operational Manager Region') {
- $region_id = auth()->user()->getMyCabangAndRegionId()['region'];
-
- if ($region_id) {
- $users = UserHasCabang::whereHas('cabang', function ($query) use ($region_id) {
- $query->where('region_id', $region_id);
+ if ($regionContextId) {
+ $users = UserHasCabang::whereHas('cabang', function ($query) use ($regionContextId) {
+ $query->where('region_id', $regionContextId);
})->get();
$userIds = $users->pluck('user_id')->toArray();
$forms = $forms->whereIn('user_id', $userIds);
}
} else if ($role == 'Area Manager Cabang') {
- $cabang_id = auth()->user()->getMyCabangAndRegionId()['cabang'];
-
- if ($cabang_id) {
- $users = UserHasCabang::where('cabang_id', $cabang_id)->get();
+ if ($cabangContextId) {
+ $users = UserHasCabang::where('cabang_id', $cabangContextId)->get();
$userIds = $users->pluck('user_id')->toArray();
$forms = $forms->whereIn('user_id', $userIds);
- $availableBudget = BudgetHelper::getAvailableBudget($cabang_id, $periodeMonth, $periodeYear);
+ $availableBudget = BudgetHelper::getAvailableBudget($cabangContextId, $periodeMonth, $periodeYear);
}
} else if ($role == 'Medical Representatif') {
$forms = $forms->where('user_id', auth()->user()->id);
@@ -95,9 +95,16 @@ class FormUpCountryController extends Controller
$forms = $forms;
}
- $outstandingForms = $forms->filter(function ($form) {
- return is_null($form->final_approved_at) || is_null($form->final_approved_by);
- });
+ $outstandingForms = OutstandingHelper::filterForms(
+ $forms,
+ $role,
+ $currentPeriodStartDate,
+ $currentPeriodClosingDate,
+ [
+ 'region_id' => $regionContextId,
+ 'cabang_id' => $cabangContextId,
+ ]
+ );
session()->put('redirect_url', route('forms.up-country'));
return view('backend.pages.forms.upcountry.index', [
@@ -105,6 +112,7 @@ class FormUpCountryController extends Controller
'availableBudget' => $availableBudget,
'outstandingCount' => $outstandingForms->count(),
'outstandingTotal' => $outstandingForms->sum('total'),
+ 'outstandingIds' => $outstandingForms->pluck('id')->toArray(),
]);
}
@@ -382,15 +390,21 @@ class FormUpCountryController extends Controller
$regionId = Cabang::where('id', 1)->value('region_id');
$rayonData = Rayon::where('cabang_id', $cabang->id)->get();
- if ($role = "Admin Region" || "Marketing Information System" || "Superadmin") {
+ if ($role == "Admin Region") {
$rayonData = DB::table('rayon')
->join('cabang', 'rayon.cabang_id', '=', 'cabang.id')
->join('region', 'cabang.region_id', '=', 'region.id')
->where('region.id', $regionId)
->select('rayon.*')
->get();
-
- }
+ } elseif ($role == "Marketing Information System" || $role == "Superadmin") {
+ $rayonData = DB::table('rayon')
+ ->join('cabang', 'rayon.cabang_id', '=', 'cabang.id')
+ ->join('region', 'cabang.region_id', '=', 'region.id')
+ ->whereNotNull('region.id')
+ ->select('rayon.*')
+ ->get();
+ }
$form = FormUpCountry::with('rayon')->findOrfail($id);
if (($form->status != 'On Progress' && $form->status != 'Rejected') && $role == 'Medical Representatif') {
diff --git a/app/Http/Controllers/Forms/FormVehicleController.php b/app/Http/Controllers/Forms/FormVehicleController.php
index de2ba55..a29c5e5 100644
--- a/app/Http/Controllers/Forms/FormVehicleController.php
+++ b/app/Http/Controllers/Forms/FormVehicleController.php
@@ -26,6 +26,7 @@ use App\Rules\FileType;
use App\Models\Admin;
use App\Helpers\BudgetHelper;
use App\Helpers\NotificationHelper;
+use App\Helpers\OutstandingHelper;
use Illuminate\Support\Facades\Log;
use App\Services\BrevoService;
use Carbon\Carbon;
@@ -61,29 +62,28 @@ class FormVehicleController extends Controller
->get();
$availableBudget = null;
+ $userRegionData = auth()->user()->getMyCabangAndRegionId();
+ $regionContextId = $userRegionData['region'] !== '-' ? $userRegionData['region'] : null;
+ $cabangContextId = $userRegionData['cabang'] !== '-' ? $userRegionData['cabang'] : null;
$periodeMonth = strtolower($currentPeriodStartDate->format('F'));
$periodeYear = (int) $currentPeriodStartDate->format('Y');
if ($role === 'Admin Region' || $role === 'Marketing Operational Manager Region') {
- $region_id = auth()->user()->getMyCabangAndRegionId()['region'];
-
- if ($region_id) {
- $users = UserHasCabang::whereHas('cabang', function ($query) use ($region_id) {
- $query->where('region_id', $region_id);
+ if ($regionContextId) {
+ $users = UserHasCabang::whereHas('cabang', function ($query) use ($regionContextId) {
+ $query->where('region_id', $regionContextId);
})->get();
$userIds = $users->pluck('user_id')->toArray();
$forms = $forms->whereIn('user_id', $userIds);
}
} elseif ($role === 'Area Manager Cabang') {
- $cabang_id = auth()->user()->getMyCabangAndRegionId()['cabang'];
-
- if ($cabang_id) {
- $users = UserHasCabang::where('cabang_id', $cabang_id)->get();
+ if ($cabangContextId) {
+ $users = UserHasCabang::where('cabang_id', $cabangContextId)->get();
$userIds = $users->pluck('user_id')->toArray();
$forms = $forms->whereIn('user_id', $userIds);
- $availableBudget = BudgetHelper::getAvailableBudget($cabang_id, $periodeMonth, $periodeYear);
+ $availableBudget = BudgetHelper::getAvailableBudget($cabangContextId, $periodeMonth, $periodeYear);
}
} elseif ($role === 'Medical Representatif') {
$forms = $forms->where('user_id', auth()->user()->id);
@@ -94,9 +94,16 @@ class FormVehicleController extends Controller
}
}
- $outstandingForms = $forms->filter(function ($form) {
- return is_null($form->final_approved_at) || is_null($form->final_approved_by);
- });
+ $outstandingForms = OutstandingHelper::filterForms(
+ $forms,
+ $role,
+ $currentPeriodStartDate,
+ $currentPeriodClosingDate,
+ [
+ 'region_id' => $regionContextId,
+ 'cabang_id' => $cabangContextId,
+ ]
+ );
session()->put('redirect_url', route('forms.vehicle'));
@@ -105,6 +112,7 @@ class FormVehicleController extends Controller
'availableBudget' => $availableBudget,
'outstandingCount' => $outstandingForms->count(),
'outstandingTotal' => $outstandingForms->sum('total'),
+ 'outstandingIds' => $outstandingForms->pluck('id')->toArray(),
]);
}
diff --git a/resources/views/backend/pages/forms/entertainment/index.blade.php b/resources/views/backend/pages/forms/entertainment/index.blade.php
index 9d3f282..b7dc394 100644
--- a/resources/views/backend/pages/forms/entertainment/index.blade.php
+++ b/resources/views/backend/pages/forms/entertainment/index.blade.php
@@ -5,6 +5,17 @@
@endsection
@section('admin-content')
+
+ @php
+ $outstandingIdCollection = collect($outstandingIds ?? []);
+ @endphp