Browse Source

update filter by_company

pull/1/head
farhantock 1 year ago
parent
commit
f2a88dd792
  1. 153
      app/Http/Controllers/DashboardBoDController.php

153
app/Http/Controllers/DashboardBoDController.php

@ -54,48 +54,6 @@ class DashboardBoDController extends Controller
return $response; return $response;
} }
// OLD
// public function getCompanyCashFlow($year = '%')
// {
// $year = $this->interpolateYear($year);
// $totalExpenditure = $totalInvoice = $totalPaidInvoice = 0;
// $totalBudgets = Project::select(DB::raw('SUM(CAST("rencana_biaya" AS DOUBLE PRECISION))'))
// ->where('mulai_proyek', 'like', $year)
// /* ->orWhere('akhir_proyek', 'like', $year) */
// ->pluck('sum')
// ->first();
// $projects = Project::where('mulai_proyek', 'like', $year)
// /* ->orWhere('akhir_proyek', 'like', $year) */
// ->get();
// foreach ($projects as $project) {
// $project->expenses = 0;
// $resp = null;
// if ($project->kode_sortname != "") {
// $resp = $this->getInvoiceIntegration($project->kode_sortname);
// /* $resp = $project->kode_sortname; */
// $cost = $resp->data->total_cost ?? 0;
// $cost = substr($cost, 0, strpos($cost, "."));
// $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);
// }
public function getCompanyCashFlow($year = '%', $company_id, $all_project, $hierarchy) public function getCompanyCashFlow($year = '%', $company_id, $all_project, $hierarchy)
{ {
$year = $this->interpolateYear($year); $year = $this->interpolateYear($year);
@ -128,9 +86,9 @@ class DashboardBoDController extends Controller
$resp = null; $resp = null;
if ($project->kode_sortname != "") { if ($project->kode_sortname != "") {
$resp = $this->getInvoiceIntegration($project->kode_sortname); // $resp = $this->getInvoiceIntegration($project->kode_sortname);
$cost = $resp->data->total_cost ?? 0; // $cost = $resp->data->total_cost ?? 0;
$cost = substr($cost, 0, strpos($cost, ".")); // $cost = substr($cost, 0, strpos($cost, "."));
$cost = 0; $cost = 0;
$totalExpenditure = 0; $totalExpenditure = 0;
$totalInvoice = 0; $totalInvoice = 0;
@ -152,7 +110,7 @@ class DashboardBoDController extends Controller
], 200); ], 200);
} }
// integrasi
public function getInvoiceOutstanding($year = '%') public function getInvoiceOutstanding($year = '%')
{ {
$year = $this->interpolateYear($year); $year = $this->interpolateYear($year);
@ -232,9 +190,13 @@ class DashboardBoDController extends Controller
return response()->json(['data' => $return, 'q' => $projects], 200); return response()->json(['data' => $return, 'q' => $projects], 200);
} }
public function getTotalProjectScheduleHealthPerDivision($year = '%') public function getTotalProjectScheduleHealthPerDivision($year = '%', $company_id)
{ {
$year = $this->interpolateYear($year); $year = $this->interpolateYear($year);
$divisions = Divisi::whereNull('parent')
->where('company_id', $company_id)
->get();
$divisions = Divisi::whereNull('parent')->get(); $divisions = Divisi::whereNull('parent')->get();
foreach ($divisions as $index => $division) { foreach ($divisions as $index => $division) {
@ -277,16 +239,62 @@ class DashboardBoDController extends Controller
], 200); ], 200);
} }
public function getTotalProjectPerBudgetHealth($year = '%') public function getTotalProjectPerBudgetHealth($year = '%', $company_id, $all_project, $hierarchy)
{ {
$year = $this->interpolateYear($year); $year = $this->interpolateYear($year);
return response()->json([ $response = [
'data' => [ 'data' => [
'overrun' => Project::where('mulai_proyek', 'like', $year)->where('budget_health', 'overrun')->count(), 'overrun' => 0,
'warning' => Project::where('mulai_proyek', 'like', $year)->where('budget_health', 'warning')->count(), 'warning' => 0,
'on-budget' => Project::where('mulai_proyek', 'like', $year)->where('budget_health', 'on-budget')->count(), 'on-budget' => 0,
] ]
], 200); ];
if ($all_project) {
$response['data']['overrun'] = Project::where('mulai_proyek', 'like', $year)
->where('budget_health', 'overrun')
->where('company_id', $company_id)
->count();
} else {
$response['data']['overrun'] = Project::where('mulai_proyek', 'like', $year)
->where('budget_health', 'overrun')
->where('created_by_id', $hierarchy)
->count();
}
if ($all_project) {
$response['data']['overrun'] = Project::where('mulai_proyek', 'like', $year)
->where('budget_health', 'overrun')
->where('company_id', $company_id)
->count();
} else {
$response['data']['overrun'] = Project::where('mulai_proyek', 'like', $year)
->where('budget_health', 'overrun')
->where('created_by_id', $hierarchy)
->count();
}
if ($all_project) {
$response['data']['warning'] = Project::where('mulai_proyek', 'like', $year)
->where('budget_health', 'warning')
->where('company_id', $company_id)
->count();
} else {
$response['data']['warning'] = Project::where('mulai_proyek', 'like', $year)
->where('budget_health', 'warning')
->where('created_by_id', $hierarchy)
->count();
}
if ($all_project) {
$response['data']['on-budget'] = Project::where('mulai_proyek', 'like', $year)
->where('budget_health', 'on-budget')
->where('company_id', $company_id)
->count();
} else {
$response['data']['on-budget'] = Project::where('mulai_proyek', 'like', $year)
->where('budget_health', 'on-budget')
->where('created_by_id', $hierarchy)
->count();
}
return response()->json($response, 200);
} }
private function countTotalProjectByBudgetHealthInDivision($divisi, $year, $health) private function countTotalProjectByBudgetHealthInDivision($divisi, $year, $health)
@ -299,12 +307,13 @@ class DashboardBoDController extends Controller
} }
public function getTotalProjectBudgetHealthPerDivision($year = '%') public function getTotalProjectBudgetHealthPerDivision($year = '%', $company_id)
{ {
$year = $this->interpolateYear($year); $year = $this->interpolateYear($year);
$divisions = Divisi::select('id', 'name') $divisions = Divisi::select('id', 'name')
->with('children') ->with('children')
->whereNull('parent') ->whereNull('parent')
->where('company_id', $company_id)
->get(); ->get();
// to do : count in more than 1 level child // to do : count in more than 1 level child
foreach ($divisions as $division) { foreach ($divisions as $division) {
@ -332,7 +341,7 @@ class DashboardBoDController extends Controller
public function getTotalProjectPerPhase($year = '%', $company_id, $all_project, $hierarchy) public function getTotalProjectPerPhase($year = '%', $company_id, $all_project, $hierarchy)
{ {
$year = $this->interpolateYear($year); $year = $this->interpolateYear($year);
$projectPhases = ProjectPhase::orderBy('order')->get(); $projectPhases = ProjectPhase::where('company_id', $company_id)->orderBy('order')->get();
foreach ($projectPhases as $phase) { foreach ($projectPhases as $phase) {
if ($all_project) { if ($all_project) {
@ -361,15 +370,17 @@ class DashboardBoDController extends Controller
->count(); ->count();
} }
public function getTotalProjectPerDivision($year = '%') public function getTotalProjectPerDivision($year = '%', $company_id)
{ {
$year = $this->interpolateYear($year); $year = $this->interpolateYear($year);
$divisions = Divisi::select('id', 'name', 'parent', 'color') $divisions = Divisi::select('id', 'name', 'parent', 'color')
->with('children') ->with('children')
->whereNull('parent') ->whereNull('parent')
->where('company_id', $company_id)
->get(); ->get();
// to do : count in more than 1 level child // to do : count in more than 1 level child
foreach ($divisions as $v) { foreach ($divisions as $v) {
$v->total = $this->countTotalProjectInDivision($v->id, $year); $v->total = $this->countTotalProjectInDivision($v->id, $year);
@ -394,16 +405,16 @@ class DashboardBoDController extends Controller
->first(); ->first();
} }
public function getTotalProjectValuePerDivision($year = '%') public function getTotalProjectValuePerDivision($year = '%', $company_id)
{ {
$year = $this->interpolateYear($year); $year = $this->interpolateYear($year);
$divisions = Divisi::select('id', 'name', 'color') $divisions = Divisi::select('id', 'name', 'color')
->with('children') ->with('children')
->whereNull('parent') ->whereNull('parent')
->where('company_id', $company_id)
->get(); ->get();
// to do : count in more than 1 level child
foreach ($divisions as $v) { foreach ($divisions as $v) {
$v->total = $this->countTotalProjectValueInDivision($v->id, $year); $v->total = $this->countTotalProjectValueInDivision($v->id, $year);
foreach ($v->children as $d) { foreach ($v->children as $d) {
@ -418,21 +429,29 @@ class DashboardBoDController extends Controller
} }
public function getDetailExpenditure($year = '%') public function getDetailExpenditure($year = '%', $company_id, $all_project, $hierarchy)
{ {
$year = $this->interpolateYear($year); $year = $this->interpolateYear($year);
$projects = Project::where('mulai_proyek', 'like', $year) $projects = null;
/* ->orWhere('akhir_proyek', 'like', $year) */ if ($all_project) {
->orderBy('id', 'desc') $projects = Project::where('mulai_proyek', 'like', $year)
->get(); ->where('company_id', $company_id)
->orderBy('id', 'desc')
->get();
} else {
$projects = Project::where('mulai_proyek', 'like', $year)
->where('created_by_id', $hierarchy)
->orderBy('id', 'desc')
->get();
}
foreach ($projects as $project) { foreach ($projects as $project) {
$lastGantt = MasterFunctionsHelper::getLatestGantt($project->id); $lastGantt = MasterFunctionsHelper::getLatestGantt($project->id);
if ($project->kode_sortname != "") { if ($project->kode_sortname != "") {
$resp = $this->getInvoiceIntegration($project->kode_sortname);
$project->invoice = [ $project->invoice = [
'invoiced' => $resp->data->total_invoice_amount ?? 0, 'invoiced' => 0,
'paid' => $resp->data->total_invoice_paid_amount ?? 0, 'paid' => 0,
]; ];
} }

Loading…
Cancel
Save