|
|
|
<?php
|
|
|
|
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
|
|
|
|
use Illuminate\Http\Request;
|
|
|
|
use App\Models\{
|
|
|
|
User,
|
|
|
|
Project,
|
|
|
|
VersionGantt,
|
|
|
|
ProjectIssues,
|
|
|
|
ProjectRisks
|
|
|
|
};
|
|
|
|
|
|
|
|
class ProjectCarausellController extends Controller
|
|
|
|
{
|
|
|
|
public function invoke(Request $request)
|
|
|
|
{
|
|
|
|
// Master Data
|
|
|
|
$company_id = $request->route('company_id');
|
|
|
|
$all_project = $request->route('all_project');
|
|
|
|
$hierarchy = $request->route('hierarchy');
|
|
|
|
|
|
|
|
$query = Project::query()
|
|
|
|
->select("id", "nama", "kode_sortname", "pm_id", "budget_health", "calculation_status", "mulai_proyek", "akhir_proyek", "rencana_biaya", "company", "scurve");
|
|
|
|
|
|
|
|
if ($all_project) {
|
|
|
|
$query->where('company_id', $company_id);
|
|
|
|
} else {
|
|
|
|
$query->where('created_by_id', $hierarchy);
|
|
|
|
}
|
|
|
|
|
|
|
|
$projectData = $query->get();
|
|
|
|
|
|
|
|
$arr = [];
|
|
|
|
foreach ($projectData as $project) {
|
|
|
|
$projectRisk = ProjectRisks::query()
|
|
|
|
->select('proyek_id', 'description', 'level_risk', 'preventive_risk')
|
|
|
|
->where('proyek_id', $project['id'])
|
|
|
|
->get()
|
|
|
|
->toArray();
|
|
|
|
$projectIssue = ProjectIssues::query()
|
|
|
|
->select('proyek_id', 'description', 'level_issue')
|
|
|
|
->where('proyek_id', $project['id'])
|
|
|
|
->get()
|
|
|
|
->toArray();
|
|
|
|
$ganttData = VersionGantt::query()
|
|
|
|
->select('id', 'name_version', 'hierarchy_ftth_id', 'cost_to_complete', 'proyek_id', 'calculation_type')
|
|
|
|
->where('proyek_id', $project['id'])
|
|
|
|
->orderByDesc('id')
|
|
|
|
->first();
|
|
|
|
$projectManager = User::where('id', $project['pm_id'])->value('name');
|
|
|
|
$arr[] = [
|
|
|
|
"project" => [
|
|
|
|
"id" => $project['id'],
|
|
|
|
"pm_id" => $project['pm_id'],
|
|
|
|
"nama" => $project['nama'],
|
|
|
|
"kode_sortname" => $project['kode_sortname'],
|
|
|
|
"budget_health" => $project['budget_health'],
|
|
|
|
"calculation_status" => $project['calculation_status'],
|
|
|
|
"mulai_proyek" => $project['mulai_proyek'],
|
|
|
|
"akhir_proyek" => $project['akhir_proyek'],
|
|
|
|
"rencana_biaya" => $project['rencana_biaya'],
|
|
|
|
"company" => $project['company'],
|
|
|
|
"scurve" => $project['scurve'],
|
|
|
|
],
|
|
|
|
"project_manager" => $projectManager,
|
|
|
|
"project_risk" => $projectRisk,
|
|
|
|
"project_issue" => $projectIssue,
|
|
|
|
"gantt" => $ganttData
|
|
|
|
];
|
|
|
|
}
|
|
|
|
return response()->json(['status' => 'success', 'code' => 200, 'data' => $arr, "total_project" => count($arr)], 200);
|
|
|
|
}
|
|
|
|
}
|