Browse Source

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

Reviewed-on: ordo/adw-backend#124
pull/3/head
ibnu 1 year ago
parent
commit
d640f7bdf0
  1. 26
      app/Http/Controllers/ActivityController.php
  2. 86
      app/Http/Controllers/MapMonitoringController.php
  3. 48
      app/Http/Controllers/ProjectController.php
  4. 1
      routes/web.php

26
app/Http/Controllers/ActivityController.php

@ -312,6 +312,32 @@ class ActivityController extends Controller
return response()->json(['status' => 'success', 'message' => 'Activity Updated!', 'code' => 200], 200); return response()->json(['status' => 'success', 'message' => 'Activity Updated!', 'code' => 200], 200);
} }
public function batchUpdate(Request $request, $ganttId)
{
$entities = $request->all();
if (empty($ganttId) || !is_int((int) $ganttId))
return response()->json(['status' => 'failed', 'message' => 'id is required!', 'code' => 400], 400);
$activity = Activity::where('version_gantt_id',$ganttId)->get();
$link = Link::where('version_gantt_id', $ganttId)->get();
if (!$activity)
return response()->json(['status' => 'failed', 'message' => 'Activity not found!', 'code' => 404], 404);
if (!$link)
return response()->json(['status' => 'failed', 'message' => 'Link not found!', 'code' => 404], 404);
foreach ($entities as $entity) {
if ($entity['entity'] == "task") {
$activityToUpdate = $activity->firstWhere('id', $entity['data']['id']);
$entity['data']['name'] = $entity['data']['text'];
if(!$activityToUpdate->update($entity['data']))
return response()->json(['status' => 'failed', 'message' => 'Failed to update activity !', 'code' => 500], 500);
} else if ($entity['entity'] == "link"){
$linkToUpdate = $link->firstWhere('id', $entity['data']['id']);
if(!$linkToUpdate->update($entity['data']))
return response()->json(['status' => 'failed', 'message' => 'Failed to update link !', 'code' => 500], 500);
}
}
return response()->json(['status' => 'success', 'message' => 'Activity Updated!', 'code' => 200], 200);
}
public function delete($id) public function delete($id)
{ {
if (!$data = Activity::find($id)) if (!$data = Activity::find($id))

86
app/Http/Controllers/MapMonitoringController.php

@ -19,52 +19,54 @@ class MapMonitoringController extends Controller
$dateNow = Carbon::today()->addHour(7)->format('Y-m-d'); $dateNow = Carbon::today()->addHour(7)->format('Y-m-d');
// get distinct human assign project // get distinct human assign project
$hr_assign_project = DB::table('assign_hr_to_proyek') $hr_assign_project = DB::table('assign_hr_to_proyek')
->select('user_id') ->select('user_id')
->whereIn('proyek_id', $request->project_id) ->whereIn('proyek_id', $request->project_id)
->distinct() ->distinct()
->get(); ->get();
// get position hr in presensi // get position hr in presensi
$tmp = []; $tmp = [];
foreach($hr_assign_project as $key){ foreach ($hr_assign_project as $key) {
$presensi = DB::table('t_clock_in_out as tcio') $presensi = DB::table('t_clock_in_out as tcio')
->select('tcio.id as clock_in_out_id','mu.id as user_id', 'mu.name as fullname', 'tcio.clock_in', 'tcio.clock_out', 'tcio.clock_in_lat', 'tcio.clock_in_lng', ->select(
'tcio.clock_out_lat', 'tcio.clock_out_lng', 'tcio.clock_in_loc', 'tcio.clock_out_loc', 'tcio.clock_in_boundary', 'tcio.id as clock_in_out_id',
'tcio.clock_out_boundary', 'mu.username', 'tcio.date_presence', 'tcio.created_at') 'mu.id as user_id',
->join('m_users as mu', 'mu.id', '=', 'tcio.user_id') 'mu.name as fullname',
->where('mu.id', $key->user_id) 'tcio.clock_in',
->orderBy('tcio.id', 'DESC') 'tcio.clock_out',
->first(); 'tcio.clock_in_lat',
$project = DB::table('assign_hr_to_proyek as ahtp') 'tcio.clock_in_lng',
->select('ahtp.proyek_id as id', 'mp.nama as project_name') 'tcio.clock_in_loc',
->join('m_proyek as mp', 'mp.id', '=', 'ahtp.proyek_id') 'tcio.clock_out_loc',
->whereIn('ahtp.proyek_id', $request->project_id) 'tcio.date_presence',
->where('ahtp.user_id', $key->user_id) )
->get(); ->join('m_users as mu', 'mu.id', '=', 'tcio.user_id')
if($presensi && isset($presensi->user_id)){ ->where('mu.id', $key->user_id)
->orderBy('tcio.id', 'DESC')
->first();
$project = DB::table('assign_hr_to_proyek as ahtp')
->select('ahtp.proyek_id as id', 'mp.nama as project_name')
->join('m_proyek as mp', 'mp.id', '=', 'ahtp.proyek_id')
->whereIn('ahtp.proyek_id', $request->project_id)
->where('ahtp.user_id', $key->user_id)
->get();
if ($presensi && isset($presensi->user_id)) {
$image = DB::table('m_image')->select('image')->where('category', 'presensi')->where('ref_id', $presensi->clock_in_out_id)->first(); $image = DB::table('m_image')->select('image')->where('category', 'presensi')->where('ref_id', $presensi->clock_in_out_id)->first();
$tmp[] = array( $tmp[] = array(
'user_id' => $presensi->user_id, 'user_id' => $presensi->user_id,
'clock_in' => $presensi->clock_in, 'clock_in' => $presensi->clock_in,
'clock_out' => $presensi->clock_out, 'clock_out' => $presensi->clock_out,
'date_presence' => $presensi->date_presence, 'clock_in_lat' => $presensi->clock_in_lat,
'clock_in_lat' => $presensi->clock_in_lat, 'clock_in_lng' => $presensi->clock_in_lng,
'clock_in_lng' => $presensi->clock_in_lng, 'clock_in_loc' => $presensi->clock_in_loc,
'clock_out_lat' => $presensi->clock_out_lat, 'clock_out_loc' => $presensi->clock_out_loc,
'clock_out_lng' => $presensi->clock_out_lng, 'name' => $presensi->fullname,
'clock_in_loc' => $presensi->clock_in_loc, 'image_selfie' => isset($image->image) ? $image->image : '-',
'clock_out_loc' => $presensi->clock_out_loc, 'presence_status' => $presensi->date_presence == $dateNow ? true : false, //true, //status date_presence,
'clock_in_boundary' => $presensi->clock_in_boundary, 'projects' => $project
'clock_out_boundary' => $presensi->clock_out_boundary,
'username' => $presensi->username,
'name' => $presensi->fullname,
'image_selfie' => isset($image->image) ? $image->image : '-',
'created_at' => $presensi->created_at,
'presence_status' => $presensi->date_presence == $dateNow ? true : false,//true, //status date_presence,
'projects' => $project
); );
} }
} }
return response()->json(['status'=>'success','code'=>200, 'data' => $tmp, 'totalRecord'=>count($tmp)], 200); return response()->json(['status' => 'success', 'code' => 200, 'data' => $tmp, 'totalRecord' => count($tmp)], 200);
} }
public function list() public function list()
@ -72,10 +74,10 @@ class MapMonitoringController extends Controller
$data = Presence::all(); $data = Presence::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 presence, please try again later!','code'=>400], 400); return response()->json(['status' => 'failed', 'message' => 'failed get list presence, please try again later!', 'code' => 400], 400);
} }
} }

48
app/Http/Controllers/ProjectController.php

@ -224,54 +224,6 @@ class ProjectController extends Controller
if(!$data) if(!$data)
return response()->json(['status'=>'failed','message'=>'Data not found!','code'=> 404], 404); return response()->json(['status'=>'failed','message'=>'Data not found!','code'=> 404], 404);
$scheduleWarningThreshold = 10;
$scheduleDangerThreshold = 5;
foreach($data as $d){
$progress = $costVariance = $actualCost = 0;
$lastActivity = null;
$scheduleHealth = "on-track";
$rootActivity = Activity::whereNull('parent_id')->where('proyek_id', $d->id)->orderBy('version_gantt_id', 'desc')->first();
if($rootActivity){
$costVariance = (int)$d->rencana_biaya - (int)$rootActivity->biaya_actual;
$actualCost = $rootActivity->biaya_actual ?? 0;
$progress = $rootActivity->persentase_progress ?? 0;
$timeleft = strtotime($d->mulai_proyek) - strtotime($rootActivity->end_date);
$date1 = new \DateTime(date("Y-m-d", strtotime($d->mulai_proyek)));
$date2 = new \DateTime(date("Y-m-d", strtotime($rootActivity->end_date)));
$daysRemaining = $date2->diff($date1);
$daysRemaining = $daysRemaining->d;
if($daysRemaining <= $scheduleDangerThreshold) {
$scheduleHealth = "danger";
} elseif ($daysRemaining <= $scheduleWarningThreshold) {
$scheduleHealth = "warning";
}
$lastActivity = date("d/m/Y", strtotime($rootActivity->end_date));
}
$d->plannedInterval = date("d/m/Y", strtotime($d->mulai_proyek)) . " - " . date("d/m/Y", strtotime($d->akhir_proyek));
$d->plannedCost = $d->rencana_biaya;
$d->actualCost = $actualCost;
$d->lastActivity = $lastActivity ?? "-";
$d->costVariance = $costVariance;
$d->costHealth = $d->budget_health;
$d->scheduleHealth = $scheduleHealth;
$d->progress = $progress;
$d->lastGanttId = VersionGantt::where("proyek_id", $d->id)->orderBy('id', 'desc')->first()->id ?? null;
$d->manpower = UserToProyek::where("proyek_id", $d->id)->count() ?? 0;
$d->projectManager = DB::table('m_proyek')
->join('m_users', 'm_users.id', '=', 'm_proyek.pm_id')
->where('m_proyek.id', $d->id)
->pluck('m_users.name')
->first();
if($d->area_kerja != ''){
$d->geolocation = $this->httpReq($d->area_kerja);
$d->geolocation = [];
} else {
$d->geolocation = [];
}
}
$totalPlannedCost = array_sum(array_map('intval', array_column($data->toArray(), 'plannedCost'))); $totalPlannedCost = array_sum(array_map('intval', array_column($data->toArray(), 'plannedCost')));
$totalActualCost = $data->sum('actualCost'); $totalActualCost = $data->sum('actualCost');
$manpowers = User::count(); $manpowers = User::count();

1
routes/web.php

@ -207,6 +207,7 @@ $router->group(['prefix'=>'api', 'middleware' => 'cors'], function () use ($rout
$router->post('/activity/import', 'ActivityController@import'); $router->post('/activity/import', 'ActivityController@import');
$router->post('/activity/import-update', 'ActivityController@importUpdate'); $router->post('/activity/import-update', 'ActivityController@importUpdate');
$router->post('/activity/import-old', 'ActivityController@importOld'); $router->post('/activity/import-old', 'ActivityController@importOld');
$router->post('/activity/batch-update/{ganttId}', 'ActivityController@batchUpdate');
$router->post('/task', 'ActivityController@add'); $router->post('/task', 'ActivityController@add');
$router->get('/task/edit/{id}', 'ActivityController@edit'); $router->get('/task/edit/{id}', 'ActivityController@edit');
$router->put('/task/{id}', 'ActivityController@update'); $router->put('/task/{id}', 'ActivityController@update');

Loading…
Cancel
Save