@extends('adminlte::page') @section('title', 'Project Management') @include('partials.ui-polish') @php $currentSection = $sections[$section] ?? $sections['dashboard']; $money = fn ($value) => number_format((float) $value, 0); $badgeThemes = [ 'Active' => 'success', 'Planning' => 'warning', 'Planned' => 'secondary', 'Scheduled' => 'primary', 'On Track' => 'success', 'Watch' => 'warning', 'In Progress' => 'info', 'Due Soon' => 'warning', 'Open' => 'danger', 'Monitoring' => 'warning', 'Recorded' => 'info', 'Draft' => 'secondary', 'In Review' => 'primary', 'On Hold' => 'warning', 'Completed' => 'success', 'Closed' => 'dark', 'Cancelled' => 'danger', ]; $badge = fn ($status) => $badgeThemes[$status] ?? 'secondary'; $projectStatuses = ['Planning', 'Active', 'On Hold', 'Completed', 'Closed']; $activityStatuses = ['Planned', 'Scheduled', 'Active', 'In Progress', 'Completed', 'On Hold', 'Cancelled']; $donorStatuses = ['Planning', 'Active', 'On Hold', 'Completed', 'Closed']; $workPlanStatuses = ['Planning', 'Planned', 'On Track', 'Watch', 'In Progress', 'Completed', 'On Hold', 'Cancelled']; $editableProjects = $projects->filter(fn ($project) => ! empty($project['id'])); $editableDonors = $donors->filter(fn ($donor) => ! empty($donor['id'])); $editableBudgets = $budgets->filter(fn ($budget) => ! empty($budget['id'])); $editableWorkPlans = $workPlans->filter(fn ($plan) => ! empty($plan['id'])); $editableActivities = $activities->filter(fn ($activity) => ! empty($activity['id'])); @endphp @section('content_header')

Project Management

{{ $currentSection['label'] }} for projects, donors, budgets, activities, M&E, and reports
@can('projects.manage') @if($section === 'projects') @elseif($section === 'donors') @elseif($section === 'budgets') @elseif($section === 'work-plans') @elseif($section === 'activities') @endif @endcan Projects Financial Reports Project Reports
@stop @section('content') @push('css') @endpush @if(session('status')) {{ session('status') }} @endif @if($errors->any()) {{ $errors->first() }} @endif
@foreach($sections as $key => $item) {{ $item['label'] }} @endforeach
@if($section === 'dashboard')
@foreach($projects as $project) @endforeach
Project Donor Manager Status Budget Progress
{{ $project['name'] }}
{{ $project['code'] }}
{{ $project['donor'] }} {{ $project['manager'] }} {{ $project['status'] }} {{ $money($project['budget']) }}
{{ $project['progress'] }}% {{ $money($project['spent']) }} spent
@foreach($activities as $activity)
{{ $activity['activity'] }} {{ $activity['status'] }}
{{ $activity['project'] }} - {{ $activity['location'] }} - {{ \Illuminate\Support\Carbon::parse($activity['date'])->format('M d, Y') }}
@endforeach
@foreach($risks as $risk)
{{ $risk['title'] }} {{ $risk['severity'] }}
{{ $risk['project'] }} - owner: {{ $risk['owner'] }}
@endforeach
@endif @if($section === 'projects') @can('projects.manage')
@csrf
@endcan
@can('projects.manage') @endcan @foreach($projects as $project) @can('projects.manage') @endcan @endforeach
Code Project Donor Manager Duration Status Budget ProgressActions
{{ $project['code'] }} {{ $project['name'] }} {{ $project['donor'] }} {{ $project['manager'] }} {{ \Illuminate\Support\Carbon::parse($project['start_date'])->format('M d, Y') }} - {{ \Illuminate\Support\Carbon::parse($project['end_date'])->format('M d, Y') }} {{ $project['status'] }} {{ $money($project['budget']) }}
{{ $project['progress'] }}%
@if(! empty($project['id']))
@csrf @method('DELETE')
@else Demo @endif
@can('projects.manage') @foreach($editableProjects as $project) @endforeach @endcan @endif @if($section === 'donors') @can('projects.manage')
@csrf
@endcan
@can('projects.manage')@endcan @foreach($donors as $donor) @can('projects.manage') @endcan @endforeach
DonorPortfolioProjectsCommitmentStatusAction
{{ $donor['name'] }} {{ $donor['portfolio'] }} {{ $donor['projects'] }} {{ $money($donor['commitment']) }} {{ $donor['status'] }} @if(! empty($donor['id'])) @else Demo @endif
@can('projects.manage') @foreach($editableDonors as $donor) @endforeach @endcan @endif @if($section === 'budgets') @can('projects.manage')
@if($editableProjects->isEmpty())
Create a saved project first, then budget lines can be assigned to it.
@else
@csrf
@endif
@endcan
@can('projects.manage')@endcan @foreach($budgets as $budget) @php($balance = max((float) $budget['budget'] - (float) $budget['committed'] - (float) $budget['spent'], 0)) @can('projects.manage') @endcan @endforeach
ProjectBudget LineBudgetCommittedSpentBalanceAction
{{ $budget['project'] }} {{ $budget['line'] }} {{ $money($budget['budget']) }} {{ $money($budget['committed']) }} {{ $money($budget['spent']) }} {{ $money($balance) }} @if(! empty($budget['id'])) @else Demo @endif
@can('projects.manage') @foreach($editableBudgets as $budget) @endforeach @endcan @endif @if($section === 'work-plans') @can('projects.manage')
@if($editableProjects->isEmpty())
Create a saved project first, then work plan milestones can be assigned to it.
@else
@csrf
@endif
@endcan
@can('projects.manage')@endcan @foreach($workPlans as $plan) @can('projects.manage') @endcan @endforeach
ProjectPeriodMilestoneOwnerStatusProgressAction
{{ $plan['project'] }} {{ $plan['period'] }} {{ $plan['milestone'] }} {{ $plan['owner'] }} {{ $plan['status'] }}
{{ $plan['progress'] }}%
@if(! empty($plan['id'])) @else Demo @endif
@can('projects.manage') @foreach($editableWorkPlans as $plan) @endforeach @endcan @endif @if($section === 'activities') @can('projects.manage')
@if($editableProjects->isEmpty())
Create a saved project first, then activities can be assigned to it.
@else
@csrf
@endif
@endcan
@can('projects.manage') @endcan @foreach($activities as $activity) @can('projects.manage') @endcan @endforeach
Date Project Activity Location Budget Line Owner StatusActions
{{ \Illuminate\Support\Carbon::parse($activity['date'])->format('M d, Y') }} {{ $activity['project'] }} {{ $activity['activity'] }} {{ $activity['location'] }} {{ $activity['budget_line'] }} {{ $activity['owner'] }} {{ $activity['status'] }} @if(! empty($activity['id']))
@csrf @method('DELETE')
@else Demo @endif
@can('projects.manage') @foreach($editableActivities as $activity) @endforeach @endcan @endif @if($section === 'team-members')
@foreach($teamMembers as $member) @endforeach
StaffProjectRoleDepartmentAllocation
{{ $member['name'] }}
{{ $member['code'] }}
{{ $member['project'] }} {{ $member['role'] }} {{ $member['department'] }} {{ $member['allocation'] }}%
@endif @if($section === 'timesheets')
@foreach($timesheetSummary as $row) @endforeach
ProjectStaff Charging TimeHours RecordedStatus
{{ $row['project'] }} {{ $row['staff_count'] }} {{ number_format((float) $row['hours'], 2) }} {{ $row['status'] }}
@can('hrm.timesheets.manage') Open Timesheet Module @endcan
@endif @if($section === 'risks-issues')
@foreach($risks as $risk) @endforeach
ProjectTypeTitleOwnerSeverityStatusDue Date
{{ $risk['project'] }} {{ $risk['type'] }} {{ $risk['title'] }} {{ $risk['owner'] }} {{ $risk['severity'] }} {{ $risk['status'] }} {{ \Illuminate\Support\Carbon::parse($risk['due_date'])->format('M d, Y') }}
@endif @if($section === 'deliverables')
@foreach($deliverables as $deliverable) @endforeach
ProjectDeliverableOwnerDue DateStatus
{{ $deliverable['project'] }} {{ $deliverable['deliverable'] }} {{ $deliverable['owner'] }} {{ \Illuminate\Support\Carbon::parse($deliverable['due_date'])->format('M d, Y') }} {{ $deliverable['status'] }}
@endif @if($section === 'documents')
@foreach($documents as $document) @endforeach
ProjectDocumentTypeOwnerLast Updated
{{ $document['project'] }} {{ $document['document'] }} {{ $document['type'] }} {{ $document['owner'] }} {{ \Illuminate\Support\Carbon::parse($document['updated_at'])->format('M d, Y') }}
@endif @if($section === 'indicators')
@foreach($indicators as $indicator) @php($achievement = $indicator['target'] > 0 ? min(($indicator['actual'] / $indicator['target']) * 100, 100) : 0) @endforeach
ProjectIndicatorTargetActualUnitStatus
{{ $indicator['project'] }} {{ $indicator['indicator'] }} {{ number_format((float) $indicator['target']) }} {{ number_format((float) $indicator['actual']) }} {{ $indicator['unit'] }} {{ $indicator['status'] }}
@endif @if($section === 'financial-reports')
@foreach($financialReports as $report) @endforeach
ProjectBudgetSpentCommittedBalanceOpen Advances
{{ $report['project'] }} {{ $money($report['budget']) }} {{ $money($report['spent']) }} {{ $money($report['committed']) }} {{ $money($report['balance']) }} {{ $money($report['advances_open']) }}
@endif @if($section === 'project-reports')
@foreach($projectReports as $report) @endforeach
ReportScopePeriodOwnerStatus
{{ $report['name'] }} {{ $report['scope'] }} {{ $report['period'] }} {{ $report['owner'] }} {{ $report['status'] }}
@endif @stop