From 519136114fbe3dcccc5947a937845dbd3efc5da0 Mon Sep 17 00:00:00 2001 From: farhantock Date: Thu, 15 Feb 2024 10:23:46 +0700 Subject: [PATCH] report analysis user group update --- .../Controllers/UserToActivityController.php | 227 ++++++++++-------- 1 file changed, 125 insertions(+), 102 deletions(-) diff --git a/app/Http/Controllers/UserToActivityController.php b/app/Http/Controllers/UserToActivityController.php index bfe4f22..b6f9926 100644 --- a/app/Http/Controllers/UserToActivityController.php +++ b/app/Http/Controllers/UserToActivityController.php @@ -11,7 +11,8 @@ use Datatables; class UserToActivityController extends Controller { - public function add(Request $request){ + public function add(Request $request) + { $this->validate($request, [ 'activity_id' => 'required', 'user_id' => 'required' @@ -20,24 +21,25 @@ class UserToActivityController extends Controller $data = $request->all(); $data['created_by'] = $this->currentName; - if(!UserToActivity::create($data)) - return response()->json(['status'=>'failed','message'=>'Failed to add data!','code'=> 500]); + if (!UserToActivity::create($data)) + return response()->json(['status' => 'failed', 'message' => 'Failed to add data!', 'code' => 500]); - return response()->json(['status'=>'success','message'=>'Data added!', 'code'=> 200]); + return response()->json(['status' => 'success', 'message' => 'Data added!', 'code' => 200]); } - public function addMultiple(Request $request){ + public function addMultiple(Request $request) + { $users_id = $request->user_id; - $users_role = $request->role_proyek_id; + $users_role = $request->role_proyek_id; // $data = UserToActivity::where("activity_id", $request->activity_id); // if($data){ // $data->delete(); // } - if(is_array($users_id) && count($users_id) > 0){ + if (is_array($users_id) && count($users_id) > 0) { $countRes = 0; - foreach($users_id as $index => $item){ + foreach ($users_id as $index => $item) { $dataInsert = array( "user_id" => $item, "activity_id" => $request->activity_id, @@ -45,89 +47,91 @@ class UserToActivityController extends Controller "proyek_id" => $request->proyek_id, "start_date" => $request->start_date, "end_date" => $request->end_date, - "created_by" => $this->currentName, - "version_gantt_id" => $request->version_gantt_id + "created_by" => $this->currentName, + "version_gantt_id" => $request->version_gantt_id ); $result = UserToActivity::create($dataInsert); - if($result){ + if ($result) { $countRes++; - }else{ + } else { $countRes--; } } - if($countRes == 0) - return response()->json(['status'=>'failed' ,'message'=>'Failed to add data!','code'=> 500]); + if ($countRes == 0) + return response()->json(['status' => 'failed', 'message' => 'Failed to add data!', 'code' => 500]); $allCost = $this->calculateAllCost($request->activity_id, $request->proyek_id); $dataUpdateCost = array( - "rencana_biaya"=>$allCost, - "updated_by"=> $this->currentName + "rencana_biaya" => $allCost, + "updated_by" => $this->currentName ); $actUpdate = Activity::find($request->activity_id); - if($actUpdate){ + if ($actUpdate) { $actUpdate->update($dataUpdateCost); - if($actUpdate->parent_id){ + if ($actUpdate->parent_id) { $this->updatedCostPlanning($actUpdate->parent_id); } } - return response()->json(['status'=>'success' ,'message'=>'Data added!','code'=>200]); - }else{ - return response()->json(['status'=>'success' ,'message'=>'Data added!','code'=>200]); + return response()->json(['status' => 'success', 'message' => 'Data added!', 'code' => 200]); + } else { + return response()->json(['status' => 'success', 'message' => 'Data added!', 'code' => 200]); } - } - private function updatedCostPlanning($parent_id) { + private function updatedCostPlanning($parent_id) + { $sumBiaya = Activity::selectRaw('sum(cast(rencana_biaya as double precision))') ->where("parent_id", $parent_id) ->first(); - if($parent = Activity::find($parent_id)){ + if ($parent = Activity::find($parent_id)) { $parent->update([ "rencana_biaya" => $sumBiaya->sum, ]); } - } + } - public function update(Request $request, $id){ - if(empty($id) || !is_int((int)$id)) - return response()->json(['status'=>'failed','message'=>'id is required!','code'=>400], 400); + public function update(Request $request, $id) + { + if (empty($id) || !is_int((int)$id)) + return response()->json(['status' => 'failed', 'message' => 'id is required!', 'code' => 400], 400); $data = UserToActivity::find($id); - if(!$data) - return response()->json(['status'=>'failed','message'=>'Data not found!','code'=> 404], 404); + if (!$data) + return response()->json(['status' => 'failed', 'message' => 'Data not found!', 'code' => 404], 404); - if(!$data->update($request->all())); - return response()->json(['status'=>'failed','message'=>'Failed to update!','code'=> 500], 500); + if (!$data->update($request->all())); + return response()->json(['status' => 'failed', 'message' => 'Failed to update!', 'code' => 500], 500); - return response()->json(['status'=>'success','message'=>'Data updated!','code'=>200], 200); + return response()->json(['status' => 'success', 'message' => 'Data updated!', 'code' => 200], 200); } public function delete($id) { $data = UserToActivity::find($id); - if(!$data) - return response()->json(['status'=>'failed','message'=>'data user to activity gantt Project not found!','code'=>400], 400); + if (!$data) + return response()->json(['status' => 'failed', 'message' => 'data user to activity gantt Project not found!', 'code' => 400], 400); - if($data->delete()){ - return response()->json(['status'=>'success','message'=>'Data deleted!','code'=>200], 200); + if ($data->delete()) { + return response()->json(['status' => 'success', 'message' => 'Data deleted!', 'code' => 200], 200); } - return response()->json(['status'=>'failed','message'=>'Failed to delete!','code'=> 500], 500); + return response()->json(['status' => 'failed', 'message' => 'Failed to delete!', 'code' => 500], 500); } - public function edit($id){ - if(!$id || (int) $id < 0 || $id==""){ - return response()->json(['status'=>'failed','message'=>'id is required!','code'=>400], 400); + public function edit($id) + { + if (!$id || (int) $id < 0 || $id == "") { + return response()->json(['status' => 'failed', 'message' => 'id is required!', 'code' => 400], 400); die(); } $result = UserToActivity::find($id); - if(!$result) - return response()->json(['status'=>'failed','message'=>'failed get data tools resource, please try again later!','code'=>400], 400); + if (!$result) + return response()->json(['status' => 'failed', 'message' => 'failed get data tools resource, please try again later!', 'code' => 400], 400); - return response()->json(['status'=>'success','code'=>200,'data'=>$result], 200); + return response()->json(['status' => 'success', 'code' => 200, 'data' => $result], 200); } public function searchAnalysis(Request $request) @@ -135,14 +139,21 @@ class UserToActivityController extends Controller $dataBuilder = $this->setUpPayload($request->all(), 'assign_hr_to_activity'); $builder = $dataBuilder['builder']; $countBuilder = $dataBuilder['count']; - $builder->addSelect(DB::raw('SUM(report_activity_material.qty) as volume_actual')); - $builder->groupBy("m_activity.id"); - $builder->groupBy("selfTable.id"); - $builder->groupBy("selfTable.start_date"); - $builder->groupBy("selfTable.end_date"); - $builder->groupBy("m_users.name"); - $builder->groupBy("assign_material_to_activity.id"); - $builder->groupBy("m_version_gantt.name_version"); + $builder->addSelect(DB::raw('SUM(report_activity_material.qty) as volume_actual')); + $builder->groupBy("m_activity.name"); + $builder->groupBy("m_activity.persentase_progress"); + $builder->groupBy("m_activity.actual_start"); + $builder->groupBy("m_activity.actual_end"); + $builder->groupBy("m_activity.planned_start"); + $builder->groupBy("m_activity.planned_end"); + $builder->groupBy("m_activity.start_date"); + $builder->groupBy("m_activity.end_date"); + $builder->groupBy("m_activity.duration"); + $builder->groupBy("selfTable.id"); + $builder->groupBy("selfTable.start_date"); + $builder->groupBy("selfTable.end_date"); + $builder->groupBy("assign_material_to_activity.qty_planning"); + $builder->groupBy("m_version_gantt.name_version"); $dataGet = $builder->get(); $totalRecord = $countBuilder->count(); return response()->json(['status' => 'success', 'code' => 200, 'data' => $dataGet, 'totalRecord' => $totalRecord], 200); @@ -165,7 +176,7 @@ class UserToActivityController extends Controller $status = $join_column['status']; $startDate = date("Y-m-d H:i:sO", strtotime($startDate)); $endDate = date("Y-m-d H:i:sO", strtotime($endDate)); - $builder->where(function ($query) use ($startDate, $endDate) { + $builder->where(function ($query) use ($startDate, $endDate) { $query ->where('m_proyek.mulai_proyek', '>=', $startDate) ->where('m_proyek.akhir_proyek', '<=', $endDate) @@ -188,22 +199,33 @@ class UserToActivityController extends Controller $dataGet = $filteredData; } // $totalRecord = $countBuilder->count(); - return response()->json(['status'=>'success','code'=>200,'data'=>$dataGet, 'totalRecord'=>count($dataGet)], 200); + return response()->json(['status' => 'success', 'code' => 200, 'data' => $dataGet, 'totalRecord' => count($dataGet)], 200); } - public function activityUser(Request $request){ + public function activityUser(Request $request) + { $payload = $request->all(); $activity = DB::table('m_activity as ma') - ->select('ahta.id', 'ma.id as activity_id', 'ma.proyek_id', 'ma.name as join_second_name', 'ma.start_date as join_second_start_date', - 'ma.end_date as join_second_end_date', 'ma.persentase_progress', 'mvg.name_version', 'mp.nama as nama_proyek', 'mp.type_proyek_id') - ->join('assign_hr_to_activity as ahta', 'ahta.activity_id', '=', 'ma.id') - ->join('m_version_gantt as mvg', 'mvg.id', '=', 'ma.version_gantt_id') - ->join('m_proyek as mp', 'mp.id', '=', 'ma.proyek_id') - ->where('ahta.user_id', $payload['user_id']) - ->where('ma.start_date', '<=', $payload['end_date']) - ->where('ma.end_date', '>=', $payload['start_date']) - ->where('ma.proyek_id', $payload['proyek_id']) - ->get(); + ->select( + 'ahta.id', + 'ma.id as activity_id', + 'ma.proyek_id', + 'ma.name as join_second_name', + 'ma.start_date as join_second_start_date', + 'ma.end_date as join_second_end_date', + 'ma.persentase_progress', + 'mvg.name_version', + 'mp.nama as nama_proyek', + 'mp.type_proyek_id' + ) + ->join('assign_hr_to_activity as ahta', 'ahta.activity_id', '=', 'ma.id') + ->join('m_version_gantt as mvg', 'mvg.id', '=', 'ma.version_gantt_id') + ->join('m_proyek as mp', 'mp.id', '=', 'ma.proyek_id') + ->where('ahta.user_id', $payload['user_id']) + ->where('ma.start_date', '<=', $payload['end_date']) + ->where('ma.end_date', '>=', $payload['start_date']) + ->where('ma.proyek_id', $payload['proyek_id']) + ->get(); if ($payload['status'] != "") { $filteredData = []; @@ -215,7 +237,7 @@ class UserToActivityController extends Controller } $activity = $filteredData; } - return response()->json(['status'=>'success','code'=>200,'data'=>$activity, 'totalRecord'=>count($activity)], 200); + return response()->json(['status' => 'success', 'code' => 200, 'data' => $activity, 'totalRecord' => count($activity)], 200); } public function list() @@ -223,46 +245,47 @@ class UserToActivityController extends Controller $data = UserToActivity::all(); $countData = $data->count(); - if($data){ - return response()->json(['status'=>'success','code'=>200,'data'=>$data, 'totalRecord'=>$countData], 200); - }else{ - return response()->json(['status'=>'failed','message'=>'failed get list user to activity gantt, please try again later!','code'=>400], 400); + if ($data) { + return response()->json(['status' => 'success', 'code' => 200, 'data' => $data, 'totalRecord' => $countData], 200); + } else { + return response()->json(['status' => 'failed', 'message' => 'failed get list user to activity gantt, please try again later!', 'code' => 400], 400); } - } + } - public function listFiltered(Request $request) + public function listFiltered(Request $request) { - $startDate = $request->start_date; - $endDate = $request->end_date; - $userId = $request->user_id; - $proyekId = $request->proyek_id; - - if (isset($proyekId)) { - $data = UserToActivity::select('assign_hr_to_activity.id', 'assign_hr_to_activity.activity_id', 'm_activity.name', 'm_activity.kode_sortname', 'm_activity.start_date', 'm_activity.end_date') - ->join('m_activity', 'assign_hr_to_activity.activity_id', '=', 'm_activity.id') - ->where('m_activity.start_date', '=', $startDate) - ->where('m_activity.end_date', '=', $endDate) - ->where('assign_hr_to_activity.user_id', '=', $userId) - ->where('assign_hr_to_activity.proyek_id', '=', $proyekId) - ->get(); - }else { - $data = UserToActivity::select('assign_hr_to_activity.id', 'assign_hr_to_activity.activity_id', 'm_activity.name', 'm_activity.kode_sortname', 'm_activity.start_date', 'm_activity.end_date') - ->join('m_activity', 'assign_hr_to_activity.activity_id', '=', 'm_activity.id') - ->where('m_activity.start_date', '=', $startDate) - ->where('m_activity.end_date', '=', $endDate) - ->where('assign_hr_to_activity.user_id', '=', $userId) - ->get(); - } - $countData = $data->count(); - - if($data){ - return response()->json(['status'=>'success','code'=>200,'data'=>$data, 'totalRecord'=>$countData], 200); - }else{ - return response()->json(['status'=>'failed','message'=>'failed get list user to activity gantt, please try again later!','code'=>400], 400); + $startDate = $request->start_date; + $endDate = $request->end_date; + $userId = $request->user_id; + $proyekId = $request->proyek_id; + + if (isset($proyekId)) { + $data = UserToActivity::select('assign_hr_to_activity.id', 'assign_hr_to_activity.activity_id', 'm_activity.name', 'm_activity.kode_sortname', 'm_activity.start_date', 'm_activity.end_date') + ->join('m_activity', 'assign_hr_to_activity.activity_id', '=', 'm_activity.id') + ->where('m_activity.start_date', '=', $startDate) + ->where('m_activity.end_date', '=', $endDate) + ->where('assign_hr_to_activity.user_id', '=', $userId) + ->where('assign_hr_to_activity.proyek_id', '=', $proyekId) + ->get(); + } else { + $data = UserToActivity::select('assign_hr_to_activity.id', 'assign_hr_to_activity.activity_id', 'm_activity.name', 'm_activity.kode_sortname', 'm_activity.start_date', 'm_activity.end_date') + ->join('m_activity', 'assign_hr_to_activity.activity_id', '=', 'm_activity.id') + ->where('m_activity.start_date', '=', $startDate) + ->where('m_activity.end_date', '=', $endDate) + ->where('assign_hr_to_activity.user_id', '=', $userId) + ->get(); + } + $countData = $data->count(); + + if ($data) { + return response()->json(['status' => 'success', 'code' => 200, 'data' => $data, 'totalRecord' => $countData], 200); + } else { + return response()->json(['status' => 'failed', 'message' => 'failed get list user to activity gantt, please try again later!', 'code' => 400], 400); } } - public function datatables(Request $request){ + public function datatables(Request $request) + { $id_activity = $request->query('idact'); $data = UserToActivity::select("assign_hr_to_activity.id as id", "assign_hr_to_activity.start_date", "assign_hr_to_activity.end_date", "u.name as user_name", "mrp.name as role_name") ->join("m_role_proyek as mrp", "mrp.id", "=", "assign_hr_to_activity.role_proyek_id") @@ -271,8 +294,8 @@ class UserToActivityController extends Controller ->get(); return Datatables::of($data) ->addIndexColumn() - ->addColumn('action', function($row){ - $actionBtn = ''; + ->addColumn('action', function ($row) { + $actionBtn = ''; return $actionBtn; }) ->rawColumns(['action'])->make(true);