From e5ce9156b4d2eb66a921e5302c13234ec2ac020b Mon Sep 17 00:00:00 2001 From: Wahyu Ramadhan Date: Mon, 12 Jun 2023 13:33:32 +0700 Subject: [PATCH 1/4] Fix jobs done --- app/Models/Activity.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/Models/Activity.php b/app/Models/Activity.php index ce49289..29ab815 100644 --- a/app/Models/Activity.php +++ b/app/Models/Activity.php @@ -188,6 +188,8 @@ class Activity extends Model return 0; if(!$dataPlan = AssignMaterial::where('activity_id', $this->id)->get()) return 0; + if($dataPlan->isEmpty()) + return 0; if($dataPlan[0]->status_activity == 'done') return 100; return $this->persentase_progress; From 5a7a2690690bf283765d3146073ddbb514d07ac3 Mon Sep 17 00:00:00 2001 From: Wahyu Ramadhan Date: Tue, 13 Jun 2023 15:11:47 +0700 Subject: [PATCH 2/4] Fix import WIP --- app/Http/Controllers/ActivityController.php | 40 ++++++++++++++++++++- app/Models/Activity.php | 10 ++++++ 2 files changed, 49 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/ActivityController.php b/app/Http/Controllers/ActivityController.php index 23ef012..35615b2 100644 --- a/app/Http/Controllers/ActivityController.php +++ b/app/Http/Controllers/ActivityController.php @@ -348,6 +348,7 @@ class ActivityController extends Controller Activity::where('version_gantt_id', $data['ganttId'])->delete(); $projectId = VersionGantt::where('id', $data['ganttId'])->first()->proyek_id; + $dayOffs = VersionGantt::find($data['ganttId'])->first()->config_dayoff; $activityStack = []; @@ -400,7 +401,23 @@ class ActivityController extends Controller foreach ($data['activities'] as $i => $activity_row) { $startDate = \DateTime::createFromFormat('Y-m-d H:i:s.uP', $projectStart->mulai_proyek); $endDate = clone $startDate; - $endDate->modify('+'.$activity_row['duration'].' days'); + // $endDate->modify('+'.$activity_row['duration'].' days'); + + $daysRemaining = $activity_row['duration']; + + // Loop until the remaining days become zero + while ($daysRemaining > 0) { + $endDate->modify('+1 day'); + + // Check if the current day is a day off (Sunday or Saturday) + $currentDayOfWeek = (int)$endDate->format('w'); + if (strpos($dayOffs, (string)$currentDayOfWeek) !== false) { + continue; // Skip the day off and continue to the next day + } + + $daysRemaining--; // Decrease the remaining days by one + } + Log::info('create ', [$activity_row['duration'], $startDate, $endDate]); $endDate->setTime(23, 59, 59); $input['name'] = $activity_row['name']; $input['proyek_id'] = $projectId; @@ -494,6 +511,27 @@ class ActivityController extends Controller $predecessorFinishDate = new \DateTime($predecessorActivity->end_date); $interval = $predecessorFinishDate->diff(new \DateTime($activity->start_date)); $diff = $interval->days; + unset($activity->level); + $successorStartDate = $predecessorFinishDate; + $successorEndDate = clone $successorStartDate; + $daysRemaining = $activity->duration; + + // Loop until the remaining days become zero + while ($daysRemaining > 1) { + $successorEndDate->modify('+1 day'); + + // Check if the current day is a day off (Sunday or Saturday) + $currentDayOfWeek = (int)$successorEndDate->format('w'); + if (strpos($dayOffs, (string)$currentDayOfWeek) !== false) { + continue; // Skip the day off and continue to the next day + } + + $daysRemaining--; // Decrease the remaining days by one + } + Log::info('update ', [$activity->id, $activity->duration, $successorStartDate, $successorEndDate]); + $activity->start_date = $successorStartDate; + $activity->end_date = $successorEndDate; + $activity->save(); Link::create([ 'created_by' => $this->currentName, diff --git a/app/Models/Activity.php b/app/Models/Activity.php index 29ab815..1b98d03 100644 --- a/app/Models/Activity.php +++ b/app/Models/Activity.php @@ -36,6 +36,11 @@ class Activity extends Model public function getStartDateAttribute($value) { + if ($value instanceof \DateTime) { + return Carbon::instance($value) + ->timezone(env('APP_TIMEZONE')) + ->toDateTimeString(); + } return Carbon::createFromTimestamp(strtotime($value)) ->timezone(env('APP_TIMEZONE')) ->toDateTimeString(); @@ -43,6 +48,11 @@ class Activity extends Model public function getEndDateAttribute($value) { + if ($value instanceof \DateTime) { + return Carbon::instance($value) + ->timezone(env('APP_TIMEZONE')) + ->toDateTimeString(); + } return Carbon::createFromTimestamp(strtotime($value)) ->timezone(env('APP_TIMEZONE')) ->toDateTimeString(); From 8ee23fdcf5a57b77bf284c62fc9d4ece77699597 Mon Sep 17 00:00:00 2001 From: Wahyu Ramadhan Date: Wed, 14 Jun 2023 17:06:21 +0700 Subject: [PATCH 3/4] Import update date --- app/Http/Controllers/ActivityController.php | 11 +++++++++++ routes/web.php | 1 + 2 files changed, 12 insertions(+) diff --git a/app/Http/Controllers/ActivityController.php b/app/Http/Controllers/ActivityController.php index 35615b2..c879a1c 100644 --- a/app/Http/Controllers/ActivityController.php +++ b/app/Http/Controllers/ActivityController.php @@ -776,4 +776,15 @@ class ActivityController extends Controller } return response()->json(['status'=>'failed','message'=>'File is required!','code'=>400], 400); } + + public function importUpdate(Request $request) { + $data = $request->all(); + foreach ($data as $value) { + $activity = Activity::find($value['id']); + $activity->start_date = $value['start_date']; + $activity->end_date = $value['end_date']; + $activity->save(); + } + return response()->json(['status'=>'success','data'=>$request,'message'=>'Update successful!','code'=>200], 200); + } } diff --git a/routes/web.php b/routes/web.php index d2861e8..7eacf60 100644 --- a/routes/web.php +++ b/routes/web.php @@ -202,6 +202,7 @@ $router->group(['prefix'=>'api', 'middleware' => 'cors'], function () use ($rout $router->get('/activity/{id}/{proyek_id}/get', 'ActivityController@getByGanttId'); $router->get('/activity/search', 'ActivityController@search'); $router->post('/activity/import', 'ActivityController@import'); + $router->post('/activity/import-update', 'ActivityController@importUpdate'); $router->post('/activity/import-old', 'ActivityController@importOld'); $router->post('/task', 'ActivityController@add'); $router->get('/task/edit/{id}', 'ActivityController@edit'); From e39192b54d69a4134a31557c3d5d8b6442eddbf8 Mon Sep 17 00:00:00 2001 From: Wahyu Ramadhan Date: Thu, 15 Jun 2023 09:31:21 +0700 Subject: [PATCH 4/4] Remove duration modifiers --- app/Http/Controllers/ActivityController.php | 39 +-------------------- 1 file changed, 1 insertion(+), 38 deletions(-) diff --git a/app/Http/Controllers/ActivityController.php b/app/Http/Controllers/ActivityController.php index c879a1c..13dca16 100644 --- a/app/Http/Controllers/ActivityController.php +++ b/app/Http/Controllers/ActivityController.php @@ -401,23 +401,7 @@ class ActivityController extends Controller foreach ($data['activities'] as $i => $activity_row) { $startDate = \DateTime::createFromFormat('Y-m-d H:i:s.uP', $projectStart->mulai_proyek); $endDate = clone $startDate; - // $endDate->modify('+'.$activity_row['duration'].' days'); - - $daysRemaining = $activity_row['duration']; - - // Loop until the remaining days become zero - while ($daysRemaining > 0) { - $endDate->modify('+1 day'); - - // Check if the current day is a day off (Sunday or Saturday) - $currentDayOfWeek = (int)$endDate->format('w'); - if (strpos($dayOffs, (string)$currentDayOfWeek) !== false) { - continue; // Skip the day off and continue to the next day - } - - $daysRemaining--; // Decrease the remaining days by one - } - Log::info('create ', [$activity_row['duration'], $startDate, $endDate]); + $endDate->modify('+'.$activity_row['duration'].' days'); $endDate->setTime(23, 59, 59); $input['name'] = $activity_row['name']; $input['proyek_id'] = $projectId; @@ -511,27 +495,6 @@ class ActivityController extends Controller $predecessorFinishDate = new \DateTime($predecessorActivity->end_date); $interval = $predecessorFinishDate->diff(new \DateTime($activity->start_date)); $diff = $interval->days; - unset($activity->level); - $successorStartDate = $predecessorFinishDate; - $successorEndDate = clone $successorStartDate; - $daysRemaining = $activity->duration; - - // Loop until the remaining days become zero - while ($daysRemaining > 1) { - $successorEndDate->modify('+1 day'); - - // Check if the current day is a day off (Sunday or Saturday) - $currentDayOfWeek = (int)$successorEndDate->format('w'); - if (strpos($dayOffs, (string)$currentDayOfWeek) !== false) { - continue; // Skip the day off and continue to the next day - } - - $daysRemaining--; // Decrease the remaining days by one - } - Log::info('update ', [$activity->id, $activity->duration, $successorStartDate, $successorEndDate]); - $activity->start_date = $successorStartDate; - $activity->end_date = $successorEndDate; - $activity->save(); Link::create([ 'created_by' => $this->currentName,