diff --git a/app/Http/Controllers/DashboardBoDController.php b/app/Http/Controllers/DashboardBoDController.php index 4c32b41..bf47cf8 100644 --- a/app/Http/Controllers/DashboardBoDController.php +++ b/app/Http/Controllers/DashboardBoDController.php @@ -32,51 +32,48 @@ class DashboardBoDController extends Controller { $totalExpenditure = $totalInvoice = $totalPaidInvoice = 0; - $totalBudgets = null; - $role = urldecode($role_name); - if (!empty($all_project) || $role === "Super Admin") { - $totalBudgets = Project::sum(DB::raw('CAST("rencana_biaya" AS DOUBLE PRECISION)')); - } else { - $totalBudgets = Project::where('created_by_id', $hierarchy) - ->sum(DB::raw('CAST("rencana_biaya" AS DOUBLE PRECISION)')); - } - $totalBudgets = Project::sum(DB::raw('CAST("rencana_biaya" AS DOUBLE PRECISION)')); - $projects = null; - - if (!empty($all_project) || $role === "Super Admin") { - $projects = Project::get(); - } else { - $projects = Project::where('created_by_id', $hierarchy) - ->get(); - } - - foreach ($projects as $project) { - $project->expenses = 0; - $resp = null; - if ($project->kode_sortname != "") { - - // $resp = $this->getInvoiceIntegration($project->kode_sortname); - // $cost = $resp->data->total_cost ?? 0; - // $cost = substr($cost, 0, strpos($cost, ".")); - $cost = 0; - $totalExpenditure = 0; - $totalInvoice = 0; - $totalPaidInvoice = 0; - - // $totalExpenditure += (int) $cost; - // $totalInvoice += $resp->data->total_invoice_amount ?? 0; - // $totalPaidInvoice += $resp->data->total_invoice_paid_amount ?? 0; - } - } - - return response()->json([ - 'data' => [ - 'total_budget' => (int) $totalBudgets ?? 0, - 'total_expenditure' => $totalExpenditure, - 'total_invoice' => $totalInvoice, - 'total_paid_invoice' => $totalPaidInvoice, - ] - ], 200); + $totalBudgets = []; + $projects = []; + $role = urldecode($role_name); + + if ($all_project) { + $totalBudgets = Project::select( + DB::raw('SUM(CAST(COALESCE(NULLIF(REPLACE(rencana_biaya, \'.\', \'\'), \'\'), \'0\') AS DOUBLE PRECISION)) AS total_rencana_biaya'), + DB::raw('SUM(CAST(COALESCE(NULLIF(REPLACE(value_proyek, \'.\', \'\'), \'\'), \'0\') AS DOUBLE PRECISION)) AS total_value_proyek'), + DB::raw('SUM(CAST(COALESCE(NULLIF(REPLACE(income_year, \'.\', \'\'), \'\'), \'0\') AS DOUBLE PRECISION)) AS total_income_year') + )->first(); + $projects = Project::get(); + Log::info(['dataTotal' => $totalBudgets]); + } else { + $totalBudgets = Project::where('created_by_id', $hierarchy) + ->select( + DB::raw('SUM(CAST(COALESCE(NULLIF(REPLACE(rencana_biaya, \'.\', \'\'), \'\'), \'0\') AS DOUBLE PRECISION)) AS total_rencana_biaya'), + DB::raw('SUM(CAST(COALESCE(NULLIF(REPLACE(value_proyek, \'.\', \'\'), \'\'), \'0\') AS DOUBLE PRECISION)) AS total_value_proyek'), + DB::raw('SUM(CAST(COALESCE(NULLIF(REPLACE(income_year, \'.\', \'\'), \'\'), \'0\') AS DOUBLE PRECISION)) AS total_income_year') + )->first(); + $projects = Project::where('created_by_id', $hierarchy)->get(); + } + + foreach ($projects as $project) { + $project->expenses = 0; + if ($project->kode_sortname != "") { + $cost = 0; + $totalExpenditure = 0; + $totalInvoice = 0; + $totalPaidInvoice = 0; + } + } + + return response()->json([ + 'data' => [ + 'total_budget' => (int) ($totalBudgets->total_rencana_biaya ?? 0), + 'total_expenditure' => $totalExpenditure, + 'total_invoice' => $totalInvoice, + 'total_paid_invoice' => $totalPaidInvoice, + 'total_value_proyek' => $totalBudgets->total_value_proyek ?? 0, + 'total_income_year' => $totalBudgets->total_income_year ?? 0 + ] + ], 200); } public function getDetailExpenditureColor($role_name) @@ -460,8 +457,7 @@ class DashboardBoDController extends Controller public function getDetailExpenditure($all_project, $hierarchy, $role_name) { - // $year = $this->interpolateYear($year); - $projects = null; + $projects = []; if ($all_project) { $projects = Project::orderBy('id', 'desc') ->get(); diff --git a/app/Http/Controllers/ProjectController.php b/app/Http/Controllers/ProjectController.php index 0dc108e..916c81e 100644 --- a/app/Http/Controllers/ProjectController.php +++ b/app/Http/Controllers/ProjectController.php @@ -292,7 +292,6 @@ class ProjectController extends Controller $countBuilder = $dataBuilder['count']; $dataGet = $builder->get(); $totalRecord = $countBuilder->count(); - Artisan::call('calculate:ActualProgressProject'); return response()->json(['status' => 'success', 'code' => 200, 'data' => $dataGet, 'totalRecord' => $totalRecord], 200); } @@ -415,7 +414,22 @@ class ProjectController extends Controller public function calculateSCurve(Request $request) { $sCurve = Project::select('scurve')->where('id', $request->project_id)->first(); - return response()->json(['status' => 'success', 'code' => 200, 'data' => json_decode($sCurve->scurve)], 200); + $dcdScurve = json_decode($sCurve['scurve'],true); + $dataScurve = $dcdScurve[0]['data']; + $today = date('Y-m-d'); + $progressPlanBar = 0; + foreach($dataScurve['date'] as $index => $dateArray) { + if (isset($dateArray[0])) { + $date = $dateArray[0]; + if($date <= $today) { + if (isset($dataScurve['percentagePlan'][$index])) { + $progressPlanBar = round($dataScurve['percentagePlan'][$index], 2); + } + } + } + } + $dcdScurve[0]['data']['progressPlanToDay'] = round($progressPlanBar,2); + return response()->json(['status' => 'success', 'code' => 200, 'data' => $dcdScurve], 200); } public function sCurveCommand(Request $request) @@ -423,17 +437,12 @@ class ProjectController extends Controller Artisan::call('calculate:scurve', [ 'project_id' => $request->project_id ]); - // $project = Project::find($request->project_id); - - // if ($project) { - // dispatch(new ProcessSCurve($project)); - - // return response()->json(['message' => 'S Curve calculation queued']); - // } - - // return response()->json(['message' => 'Project not found'], 404); } + public function ActualProgressProjectCommand() { + Artisan::call('calculate:ActualProgressProject'); + } + public function getLinearSCurve(Request $request) { $data = MasterFunctionsHelper::getLinearSCurve($request); diff --git a/routes/web.php b/routes/web.php index b5fcde2..5165f44 100644 --- a/routes/web.php +++ b/routes/web.php @@ -93,6 +93,7 @@ $router->group(['prefix' => 'api', 'middleware' => 'cors'], function () use ($ro $router->post('/project/get-s-curve', 'ProjectController@getSCurve'); $router->post('/project/calculate-s-curve', 'ProjectController@calculateSCurve'); $router->post('/project/s-curve-command', 'ProjectController@sCurveCommand'); + $router->get('/project/actual-progress-project-command', 'ProjectController@ActualProgressProjectCommand'); $router->post('/project/s-curve-command-test', 'ProjectController@calculateSCurvetest'); $router->post('/project/get-linear-s-curve', 'ProjectController@getLinearSCurve'); $router->post('/project/get-overdue-activities', 'ProjectController@getOverdueActivities');