Browse Source

Merge pull request 'staging' (#201) from staging into master

Reviewed-on: ordo/adw-backend#201
pull/3/head
ibnu 1 year ago
parent
commit
c868bcca30
  1. 19
      app/Http/Controllers/ActivityController.php
  2. 4
      app/Http/Controllers/ProjectController.php
  3. 2
      app/Http/Controllers/ReportActivityMaterialController.php
  4. 240
      app/Http/Controllers/VersionGanttController.php
  5. 2
      app/Models/ReportActivityMaterial.php

19
app/Http/Controllers/ActivityController.php

@ -3,6 +3,7 @@ namespace App\Http\Controllers;
use App\Helpers\MasterFunctionsHelper; use App\Helpers\MasterFunctionsHelper;
use App\Models\Activity; use App\Models\Activity;
use App\Models\AssignMaterial;
use App\Models\CommentActivity; use App\Models\CommentActivity;
use App\Models\Link; use App\Models\Link;
use App\Models\Project; use App\Models\Project;
@ -422,7 +423,14 @@ class ActivityController extends Controller
return response()->json(['status' => 'failed', 'message' => 'Activities not found!', 'code' => 404], 404); return response()->json(['status' => 'failed', 'message' => 'Activities not found!', 'code' => 404], 404);
$duration = 0; $duration = 0;
foreach ($activities as $key => $activity) { foreach ($activities as $key => $activity) {
if (isset($activity->planned_start) && isset($activity->planned_end)) { $assignMaterial = AssignMaterial::where('activity_id', $activity->id)->first();
if (isset($assignMaterial)) {
$statusActivity = $assignMaterial->status_activity;
} else {
$statusActivity = '';
}
if (isset($activity->planned_start) && isset($activity->planned_end) && $statusActivity != "done") {
// todo check report for no report / progress == 0
$today = new DateTime(); $today = new DateTime();
$endDate = new DateTime($activity->end_date); $endDate = new DateTime($activity->end_date);
$startDate = new DateTime($activity->start_date); $startDate = new DateTime($activity->start_date);
@ -431,11 +439,12 @@ class ActivityController extends Controller
$duration = MasterFunctionsHelper::countDays($ganttId, $plannedStart, $plannedEnd); $duration = MasterFunctionsHelper::countDays($ganttId, $plannedStart, $plannedEnd);
if ($today >= $endDate) { if ($today >= $endDate) {
$endDate = $today; $endDate = $today;
$rerataBobot = $duration > 0 ? $activity->bobot_planning / $duration : 0; $bobotPlanning = (int) $activity->bobot_planning;
$bobotActual = $activity->progress * $activity->bobot_planning; $rerataBobot = $duration > 0 ? $bobotPlanning / $duration : 0;
$sisaBobot = $activity->bobot_planning - $bobotActual; $bobotActual = (int) $activity->persentase_progress/100 * $bobotPlanning;
$sisaBobot = $bobotPlanning - $bobotActual;
$sisaHari = $rerataBobot > 0 ? $sisaBobot / $rerataBobot : 0; $sisaHari = $rerataBobot > 0 ? $sisaBobot / $rerataBobot : 0;
$endDate->modify("+".$sisaHari." Days"); $endDate->modify("+".ceil($sisaHari)." Days");
$actualDuration = MasterFunctionsHelper::countDays($ganttId, $startDate, $endDate); $actualDuration = MasterFunctionsHelper::countDays($ganttId, $startDate, $endDate);
$activity->duration = $actualDuration; $activity->duration = $actualDuration;
$activity->end_date = $endDate; $activity->end_date = $endDate;

4
app/Http/Controllers/ProjectController.php

@ -466,12 +466,16 @@ class ProjectController extends Controller
} }
public function getInvoiceIntegration(Request $request) { public function getInvoiceIntegration(Request $request) {
$ganttCount = VersionGantt::where('proyek_id', $request->id)->count();
$search = urlencode($request->search); $search = urlencode($request->search);
if(empty($search)) if(empty($search))
return response()->json(['status'=>'error', 'message'=>'Empty query string!'], 400); return response()->json(['status'=>'error', 'message'=>'Empty query string!'], 400);
$url = str_replace("SEARCH", $search, config('api.adw').'/project_cost?project_no=SEARCH'); $url = str_replace("SEARCH", $search, config('api.adw').'/project_cost?project_no=SEARCH');
$response = MasterFunctionsHelper::curlReq($url); $response = MasterFunctionsHelper::curlReq($url);
if (isset($request->gantt_id)) {
$response->data->total_cost = $response->data->total_cost / $ganttCount;
}
return response()->json(['status'=>'success', 'data'=> $response, 'code'=>200], 200); return response()->json(['status'=>'success', 'data'=> $response, 'code'=>200], 200);
} }

2
app/Http/Controllers/ReportActivityMaterialController.php

@ -63,6 +63,8 @@ class ReportActivityMaterialController extends Controller
$sumAssignMaterial = AssignMaterial::where('activity_id', $request->activity_id)->sum('qty_planning'); $sumAssignMaterial = AssignMaterial::where('activity_id', $request->activity_id)->sum('qty_planning');
$sumReportActivityMaterial = ReportActivityMaterial::where('activity_id', $request->activity_id)->sum('qty'); $sumReportActivityMaterial = ReportActivityMaterial::where('activity_id', $request->activity_id)->sum('qty');
$dataUpdate = array( $dataUpdate = array(
"actual_start" => null,
"actual_end" => null,
"persentase_progress" => $sumReportActivityMaterial/$sumAssignMaterial*100, "persentase_progress" => $sumReportActivityMaterial/$sumAssignMaterial*100,
"updated_by" => $this->currentName "updated_by" => $this->currentName
); );

240
app/Http/Controllers/VersionGanttController.php

@ -1,120 +1,120 @@
<?php <?php
namespace App\Http\Controllers; namespace App\Http\Controllers;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use App\Models\VersionGantt; use App\Models\VersionGantt;
class VersionGanttController extends Controller class VersionGanttController extends Controller
{ {
public function add(Request $request){ public function add(Request $request){
$this->validate($request, [ $this->validate($request, [
'name_version' => 'required', 'name_version' => 'required',
'proyek_id' => 'required' 'proyek_id' => 'required'
]); ]);
$data = $request->all(); $data = $request->all();
$data['created_by'] = $this->currentName; $data['created_by'] = $this->currentName;
$result = VersionGantt::create($data); $result = VersionGantt::create($data);
if($result){ if($result){
return response()->json(['status'=>'success','message'=>'version gantt Project successfull created','code'=>200]); return response()->json(['status'=>'success','message'=>'version gantt Project successfull created','code'=>200]);
}else{ }else{
return response()->json(['status'=>'failed','message'=>'version gantt Project failed created','code'=>400]); return response()->json(['status'=>'failed','message'=>'version gantt Project failed created','code'=>400]);
} }
} }
public function update(Request $request, $id){ public function update(Request $request, $id){
if(!$id || (int) $id < 0 || $id==""){ if(!$id || (int) $id < 0 || $id==""){
return response()->json(['status'=>'failed','message'=>'id is required!','code'=>400], 400); return response()->json(['status'=>'failed','message'=>'id is required!','code'=>400], 400);
} }
$data = VersionGantt::find($id); $data = VersionGantt::find($id);
if($data){ if($data){
$result = $data->update($request->all()); $result = $data->update($request->all());
}else{ }else{
return response()->json(['status'=>'failed','message'=>'data version gantt Project not found!','code'=>400], 400); return response()->json(['status'=>'failed','message'=>'data version gantt Project not found!','code'=>400], 400);
die(); die();
} }
if($result){ if($result){
return response()->json(['status'=>'success','message'=>'version gantt Project successfully updated!','code'=>200], 200); return response()->json(['status'=>'success','message'=>'version gantt Project successfully updated!','code'=>200], 200);
}else{ }else{
return response()->json(['status'=>'failed','message'=>'version gantt Project failed updated!','code'=>400], 400); return response()->json(['status'=>'failed','message'=>'version gantt Project failed updated!','code'=>400], 400);
} }
} }
public function delete($id) public function delete($id)
{ {
$data = VersionGantt::find($id); $data = VersionGantt::find($id);
if($data){ if($data){
$delete = $data->delete(); $delete = $data->delete();
}else{ }else{
return response()->json(['status'=>'failed','message'=>'data version gantt Project not found!','code'=>400], 400); return response()->json(['status'=>'failed','message'=>'data version gantt Project not found!','code'=>400], 400);
die(); die();
} }
if($delete){ if($delete){
return response()->json(['status'=>'success','message'=>'version gantt Project successfully deleted!','code'=>200], 200); return response()->json(['status'=>'success','message'=>'version gantt Project successfully deleted!','code'=>200], 200);
}else{ }else{
return response()->json(['status'=>'failed','message'=>'version gantt Project failed deleted!','code'=>400], 400); return response()->json(['status'=>'failed','message'=>'version gantt Project failed deleted!','code'=>400], 400);
} }
} }
public function edit($id){ public function edit($id){
if(!$id || (int) $id < 0 || $id==""){ if(!$id || (int) $id < 0 || $id==""){
return response()->json(['status'=>'failed','message'=>'id is required!','code'=>400], 400); return response()->json(['status'=>'failed','message'=>'id is required!','code'=>400], 400);
die(); die();
} }
$result = VersionGantt::find($id); $result = VersionGantt::find($id);
if($result){ if($result){
return response()->json(['status'=>'success','code'=>200,'data'=>$result], 200); return response()->json(['status'=>'success','code'=>200,'data'=>$result], 200);
}else{ }else{
return response()->json(['status'=>'failed','message'=>'failed get data version gantt, please try again later!','code'=>400], 400); return response()->json(['status'=>'failed','message'=>'failed get data version gantt, please try again later!','code'=>400], 400);
} }
} }
public function search(Request $request) public function search(Request $request)
{ {
$payload = $request->all(); $payload = $request->all();
$dataBuilder = $this->setUpPayload($payload, 'm_version_gantt'); $dataBuilder = $this->setUpPayload($payload, 'm_version_gantt');
$builder = $dataBuilder['builder']; $builder = $dataBuilder['builder'];
// $countBuilder = $dataBuilder['count']; // $countBuilder = $dataBuilder['count'];
$this->ganttProgress($request->columns[0]["name"], $request->columns[0]["value"]); $this->ganttProgress($request->columns[0]["name"], $request->columns[0]["value"]);
$dataGet = $builder->get(); $dataGet = $builder->get();
// $totalRecord = $countBuilder->count(); // $totalRecord = $countBuilder->count();
return response()->json(['status'=>'success','code'=>200,'data'=>$dataGet], 200); return response()->json(['status'=>'success','code'=>200,'data'=>$dataGet], 200);
} }
public function ganttProgress($column, $value){ public function ganttProgress($column, $value){
$progress = VersionGantt::select('m_version_gantt.id','m_activity.persentase_progress', 'm_activity.bobot_planning') $progress = VersionGantt::select('m_version_gantt.id','m_activity.persentase_progress', 'm_activity.bobot_planning')
->join('m_activity', 'm_version_gantt.id', '=', 'm_activity.version_gantt_id') ->join('m_activity', 'm_version_gantt.id', '=', 'm_activity.version_gantt_id')
->where("m_version_gantt.".$column, $value) ->where("m_version_gantt.".$column, $value)
// ->where('m_activity.type_activity', "project") // ->where('m_activity.type_activity', "project")
->where('m_activity.parent_id', null) ->where('m_activity.parent_id', null)
->get(); ->get();
foreach($progress as $item) { foreach($progress as $item) {
if($item->persentase_progress){ if($item->persentase_progress){
$item->progress = $item->persentase_progress; $item->progress = $item->persentase_progress;
$item->bobot = $item->bobot_planning; $item->bobot = $item->bobot_planning;
$item->save(); $item->save();
} }
} }
} }
public function list() public function list()
{ {
$data = VersionGantt::all(); $data = VersionGantt::all();
$countData = $data->count(); $countData = $data->count();
if($data){ if($data){
return response()->json(['status'=>'success','code'=>200,'data'=>$data, 'totalRecord'=>$countData], 200); return response()->json(['status'=>'success','code'=>200,'data'=>$data, 'totalRecord'=>$countData], 200);
}else{ }else{
return response()->json(['status'=>'failed','message'=>'failed get list version gantt, please try again later!','code'=>400], 400); return response()->json(['status'=>'failed','message'=>'failed get list version gantt, please try again later!','code'=>400], 400);
} }
} }
} }

2
app/Models/ReportActivityMaterial.php

@ -59,6 +59,8 @@ class ReportActivityMaterial extends Model
$assignedMaterial = AssignMaterial::find($data->assign_material_id); $assignedMaterial = AssignMaterial::find($data->assign_material_id);
$activity->biaya_actual -= floatval($assignedMaterial->budget) * floatval($data->qty); $activity->biaya_actual -= floatval($assignedMaterial->budget) * floatval($data->qty);
$activity->actual_start = null;
$activity->actual_end = null;
$dataPlan = AssignMaterial::where('activity_id', $activity->id)->get(); $dataPlan = AssignMaterial::where('activity_id', $activity->id)->get();
$totalPlan = $dataPlan->sum('qty_planning'); $totalPlan = $dataPlan->sum('qty_planning');

Loading…
Cancel
Save