From a19d0ea5cdd4e5b9077340f9d7f015fde4b70d5c Mon Sep 17 00:00:00 2001 From: wahyu Date: Thu, 26 Oct 2023 18:56:29 +0700 Subject: [PATCH] fix dashboard bod --- .../Controllers/DashboardBoDController.php | 37 ++++++++++++++----- 1 file changed, 27 insertions(+), 10 deletions(-) diff --git a/app/Http/Controllers/DashboardBoDController.php b/app/Http/Controllers/DashboardBoDController.php index ebdf8a3..2de808e 100644 --- a/app/Http/Controllers/DashboardBoDController.php +++ b/app/Http/Controllers/DashboardBoDController.php @@ -133,7 +133,7 @@ class DashboardBoDController extends Controller ]; $projects = Project::where('mulai_proyek', 'like', $year)->get(); - foreach ($projects as $project) { + foreach ($projects as $index => $project) { $project->scurve = MasterFunctionsHelper::getSCurve($project->id); $selisihProgress = 0; if ($project->scurve && $project->scurve[0]) { @@ -144,12 +144,18 @@ class DashboardBoDController extends Controller } $selisihProgress = $planningProgress - $actualProgress; try { - if ($selisihProgress > 0 && $selisihProgress <= 5) + if ($selisihProgress > 0 && $selisihProgress <= 5){ $return['warning'] += 1; - elseif ($selisihProgress == 0) + $projects[$index]->status = 'warning'; + } + elseif ($selisihProgress == 0){ $return['on-schedule'] += 1; - else + $projects[$index]->status = 'on-schedule'; + } + else { $return['behind-schedule'] += 1; + $projects[$index]->status = 'behind-schedule'; + } } catch (\Error $e) { return response()->json(['msg' => $e->getMessage(), 'data' => $project], 200); } @@ -163,7 +169,7 @@ class DashboardBoDController extends Controller $year = $this->interpolateYear($year); $divisions = Divisi::whereNull('parent')->get(); - foreach ($divisions as $division) { + foreach ($divisions as $index => $division) { $scheduleData = new Collection(); $behindSchedule = $warning = $onSchedule = 0; @@ -171,18 +177,29 @@ class DashboardBoDController extends Controller $projects = Project::where('mulai_proyek', 'like', $year)->where('divisi_id', $division->id)->get(); foreach ($projects as $project) { $project->scurve = MasterFunctionsHelper::getSCurve($project->id); - if (@$project->scurve['difference'] > 0 && @$project->scurve['difference'] <= 5) + $selisihProgress = 0; + if ($project->scurve && $project->scurve[0]) { + $planningArray = $project->scurve[0]['data']['percentagePlan']; + $actualArray = $project->scurve[0]['data']['percentageReal']; + $planningProgress = !empty($planningArray) ? $planningArray[count($planningArray) - 1] : 0; + $actualProgress = !empty($actualArray) ? $actualArray[count($actualArray) - 1] : 0; + } + $selisihProgress = $planningProgress - $actualProgress; + if ($selisihProgress > 0 && $selisihProgress <= 5){ $warning++; - elseif (@$project->scurve['difference'] > 5 && @$project->scurve['difference'] <= 100) - $behindSchedule++; - elseif (@$project->scurve['difference'] == 0) + } + elseif ($selisihProgress == 0){ $onSchedule++; + } + else { + $behindSchedule++; + } } $scheduleData->prepend($behindSchedule, 'behindSchedule'); $scheduleData->prepend($warning, 'warning'); $scheduleData->prepend($onSchedule, 'onSchedule'); - $division->scheduleData = $scheduleData; + $divisions[$index]->scheduleData = $scheduleData; } return response()->json([ 'data' => [