@php $currentDate = new DateTime(); $projectOverdue = false; $anyMilestoneOverdue = false; $totalWeight = 0; $totalProgress = 0; foreach ($project['mile_stones'] as $milestone) { $milestoneProgress = array_sum(array_column($milestone['project_progresses'], 'progress')); $totalWeight += $milestone['weight']; $totalProgress += $milestoneProgress; $targetDate = DateTime::createFromFormat('Y-m-d', $milestone['target_doc']); if ($currentDate > $targetDate && !$milestone['completed']) { $anyMilestoneOverdue = true; } } if ($totalWeight > 0) { $overallProgress = $totalProgress / $totalWeight * 100; } else { $overallProgress = 0; } $projectTargetDate = DateTime::createFromFormat('Y-m-d', $project['target_doc']); if ($currentDate > $projectTargetDate) { $projectOverdue = true; } @endphp

Dear {{$project["custodian"]["projectowner"]["name"]}}

Note that the project: {{ $project['name'] }}

Described as: {{ $project['description'] }} is @if ($projectOverdue) now overdue @else on course, but some milestones are overdue @endif

@if ($projectOverdue)

I write to you notifying you that the aforementioned project which had a target date of completion: {{ $project['target_doc'] }} is now overdue. Please act on it as soon as possible.

@endif

Project Summary and Overdue Milestones

@foreach ($project['mile_stones'] as $milestone) @php $milestoneProgress = array_sum(array_column($milestone['project_progresses'], 'progress')); $targetDate = DateTime::createFromFormat('Y-m-d', $milestone['target_doc']); $isMilestoneOverdue = $currentDate > $targetDate && !$milestone['completed']; @endphp

{{ $milestone['name'] }} with a weight of {{$milestone['weight']}} %

Description: {{ $milestone['description'] }}

Target Date: {{ $milestone['target_doc'] }}

Completed: {{ $milestone['completed'] ? 'Yes' : 'No' }}

Progress update Audit

@foreach ($milestone['project_progresses'] as $progress)

Progress Contribution: {{ $progress['progress'] }}% (Date: {{ date('d/m/Y', strtotime($progress['created_at'])) }})

@endforeach
@if ($isMilestoneOverdue && !$milestone['completed'])

This milestone is overdue!

@elseif(!$isMilestoneOverdue && !$milestone['completed'])

We have not witnessed significant movement towards the completion of this milestone. Please put in more effort to ensure timely completion.

@else

Milstone completed.

@endif
@endforeach

Overall Project Completion: {{ round($overallProgress, 2) }}%

{{ generateRandomComment($projectOverdue, $anyMilestoneOverdue) }}

© Office of the Vice President

@php function generateRandomComment($projectOverdue, $anyMilestoneOverdue) { $overdueComments = [ "The project is behind schedule. Let's put in extra effort to complete it.", "We need to accelerate our efforts to catch up with the project timeline.", "This project is critical and behind schedule. Please prioritize its completion.", "Additional resources and focus are needed to bring this project back on track.", "Your immediate attention and increased effort are required to meet the project goals." ]; $notOverdueComments = [ "The project is on course, but some milestones are overdue. Please focus on completing these milestones promptly.", "Keep up the good work, but ensure that all milestones are completed on time.", "Progress is being made, but timely completion of milestones is crucial.", "The project is progressing well, but attention to overdue milestones is necessary.", "Continue with your efforts, but prioritize completing overdue milestones." ]; if ($projectOverdue || $anyMilestoneOverdue) { return $overdueComments[array_rand($overdueComments)]; } else { return $notOverdueComments[array_rand($notOverdueComments)]; } } @endphp