|
|
|
@ -416,17 +416,21 @@ class ProjectController extends Controller
|
|
|
|
|
$firstReport = ReportActivityMaterial::where('activity_id', $activity_id)->orderBy('report_date')->first(); |
|
|
|
|
$reports[] = ProjectController::setSyncDate($activity_id, $activity, $firstReport); |
|
|
|
|
} |
|
|
|
|
$successor = Link::where('t_activity_id', $activity->id)->first(); |
|
|
|
|
if ($successor) { |
|
|
|
|
$predecessor = Activity::find($successor->s_activity_id); |
|
|
|
|
$activity->start_date = $predecessor->end_date; |
|
|
|
|
$end_date = new DateTime($activity->start_date); |
|
|
|
|
$end_date->modify("+" . $activity->duration . " days"); |
|
|
|
|
$activity->end_date = $end_date->format("Y-m-d H:i:sO"); |
|
|
|
|
} |
|
|
|
|
$activity->save(); |
|
|
|
|
} |
|
|
|
|
/* return response()->json(['status'=>'success','data'=> $reports,'code'=>200], 200); */ |
|
|
|
|
/* return response()->json(['status'=>'success','data'=> $activities,'code'=>200], 200); */ |
|
|
|
|
|
|
|
|
|
for ($i=0; $i < count($reports); $i++) { |
|
|
|
|
$activity = Activity::find($reports[$i]['activity_id']); |
|
|
|
|
$successor = Link::where('t_activity_id', $activity->id)->first(); |
|
|
|
|
if ($successor) { |
|
|
|
|
$predecessor = Activity::find($successor->s_activity_id); |
|
|
|
|
$activity->start_date = $predecessor->end_date; |
|
|
|
|
} |
|
|
|
|
if($reports[$i]['status'] != 'done'){ |
|
|
|
|
$reports[$i]['max_date']->modify('-1 day'); |
|
|
|
|
}else if($reports[$i]['status'] == 'done'){ |
|
|
|
@ -434,22 +438,28 @@ class ProjectController extends Controller
|
|
|
|
|
} |
|
|
|
|
$activity->start_date = $reports[$i]['min_date']; //same early |
|
|
|
|
$activity->end_date = $reports[$i]['max_date']->setTime(23,59,59); // same early |
|
|
|
|
$dayOffs = VersionGantt::where('id', $activity->version_gantt_id)->first()->config_dayoff; |
|
|
|
|
$startDate = new DateTime($activity->start_date); |
|
|
|
|
$endDate = new DateTime($activity->end_date); |
|
|
|
|
$diff = date_diff($startDate, $endDate); |
|
|
|
|
$duration = $diff->days + 1; |
|
|
|
|
$daysRemaining = $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 |
|
|
|
|
$duration--; |
|
|
|
|
} |
|
|
|
|
$daysRemaining--; // Decrease the remaining days by one |
|
|
|
|
} |
|
|
|
|
$activity->duration = $duration; |
|
|
|
|
$activity->actual_start = $reports[$i]['min_date']; |
|
|
|
|
$activity->save(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
foreach($activities as $activity) { |
|
|
|
|
$successor = Link::where('t_activity_id', $activity->id)->first(); |
|
|
|
|
if ($successor) { |
|
|
|
|
$predecessor = Activity::find($successor->s_activity_id); |
|
|
|
|
$activity->start_date = $predecessor->end_date; |
|
|
|
|
$end_date = new DateTime($activity->start_date); |
|
|
|
|
$end_date->modify("+" . $activity->duration . " days"); |
|
|
|
|
$activity->end_date = $end_date->format("Y-m-d H:i:sO"); |
|
|
|
|
} |
|
|
|
|
$activity->save(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return response()->json(['status'=>'success','message'=>'Synchronize to report success!','code'=>200], 200); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|