@extends('layouts.dashboard') @section('title', 'Proj Mgr - Dashboard') @section('content')

Project Manager

{{ auth()->user()->name }} @if(!empty($authRoleName)) ({{ $authRoleName }}) @endif
@csrf

Dashboard

Sprint Overview

New Sprint
@if($dashboardSprints->isNotEmpty())
@foreach($dashboardSprints as $dSprint) @php $dsTaskCount = $dSprint->tasks_count; $dsDoneCount = $dSprint->tasks->where('task_status', 'approved')->count(); $dsProgress = $dsTaskCount > 0 ? round(($dsDoneCount / $dsTaskCount) * 100) : 0; $dsStatusColor = match($dSprint->status) { 'active' => 'bg-green-100 text-green-800 border-green-200', 'completed' => 'bg-blue-100 text-blue-800 border-blue-200', default => 'bg-yellow-100 text-yellow-800 border-yellow-200', }; @endphp
{{ $dSprint->name }} {{ ucfirst($dSprint->status) }}
{{ $dsTaskCount }} {{ Str::plural('task', $dsTaskCount) }}
{{ $dSprint->start_date->format('M d') }} – {{ $dSprint->end_date->format('M d, Y') }}
{{ $dsDoneCount }} / {{ $dsTaskCount }} done {{ $dsProgress }}%
View sprint
@endforeach
@else

No sprints yet

Create a sprint to track work in time-boxed iterations.

Create Sprint
@endif

Projects

@if($projects->count() > 0)
@foreach($projects as $project)

{{ $project->name }}

{{ $project->status }}

{{ $project->description }}

Progress {{ $project->completed_tasks ?? 0 }}/{{ $project->tasks_count ?? 0 }}
{{ $project->progress_percentage ?? 0 }}% complete
@endforeach
@else

No Projects Yet

Get started by creating your first project

Create Your First Project
@endif
@php // Get all tasks from all projects grouped by status $allTasks = collect(); foreach($projects as $project) { foreach($project->taskLists as $taskList) { foreach($taskList->tasks as $task) { $allTasks->push([ 'task' => $task, 'project' => $project, 'taskList' => $taskList ]); } } } $tasksByStatus = [ 'pending' => $allTasks->where('task.task_status', 'pending'), 'in_progress' => $allTasks->where('task.task_status', 'in_progress'), 'review' => $allTasks->where('task.task_status', 'completed_pending_review'), 'unapproved' => $allTasks->whereIn('task.task_status', ['rejected', 'unapproved']), 'approved' => $allTasks->where('task.task_status', 'approved'), ]; @endphp @if($allTasks->count() > 0)

Filter by Project:

@foreach($projects as $project) @endforeach
@foreach(['pending', 'in_progress', 'review', 'unapproved', 'approved'] as $status)
@if($tasksByStatus[$status]->count() > 0) @php // Sort by project name (A-Z), then group by project $tasksGroupedByProject = $tasksByStatus[$status] ->sortBy(fn($i) => strtolower($i['project']->name ?? '')) ->groupBy(fn($i) => $i['project']->id); $priorityColors = [ 'urgent' => 'bg-red-100 text-red-800', 'high' => 'bg-orange-100 text-orange-800', 'medium' => 'bg-yellow-100 text-yellow-800', 'low' => 'bg-green-100 text-green-800', ]; $statusColors = [ 'pending' => 'bg-gray-500 text-white', 'in_progress' => 'bg-blue-600 text-white', 'review' => 'bg-yellow-500 text-white', 'unapproved' => 'bg-red-600 text-white', 'approved' => 'bg-green-600 text-white', ]; @endphp @foreach($tasksGroupedByProject as $projectId => $projectTasks) @php $projectName = $projectTasks->first()['project']->name ?? 'Project'; // Sort tasks within each project (A-Z by task title) $projectTasks = $projectTasks->sortBy(fn($i) => strtolower($i['task']->title ?? '')); @endphp
{{ $projectName }}
{{ $projectTasks->count() }} {{ $projectTasks->count() === 1 ? 'task' : 'tasks' }}
@foreach($projectTasks as $item)
Task: {{ $item['task']->title }}
Task List: {{ $item['taskList']->name }}
@php $p = $item['task']->priority ?? 'medium'; $priorityClass = $priorityColors[$p] ?? $priorityColors['medium']; $statusClass = $statusColors[$status] ?? 'bg-gray-100 text-gray-800'; $statusLabel = $status === 'review' ? 'Review' : ucfirst(str_replace('_', ' ', $item['task']->task_status ?? $status)); @endphp {{ ucfirst($p) }}
@php $lastComment = $item['task']->comments->sortByDesc('created_at')->first(); @endphp @if($lastComment)
Last Comment: {{ $lastComment->user->name ?? 'Unknown' }}
{{ $lastComment->created_at->format('m/d/Y, h:i A') }}

{{ $lastComment->content }}

@endif
@if($status === 'pending') Created By: {{ $item['task']->creator->name ?? 'Unknown' }} Created: {{ $item['task']->created_at->format('m/d/Y, h:i A') }} @else Updated By: {{ $item['task']->creator->name ?? 'Unknown' }} Updated: {{ $item['task']->updated_at->format('m/d/Y, h:i A') }} @endif
@if($status === 'review' || $status === 'approved' || $status === 'unapproved') @php $projectSettings = $item['project']->settings ?? []; $requireApproval = $projectSettings['requireApproval'] ?? false; $canApprove = !$requireApproval || (auth()->id() === $item['project']->project_manager_id); @endphp @if($status === 'review') @if($canApprove)
@csrf @method('PATCH')
@endif
@csrf @method('PATCH')
@elseif($status === 'approved')
@csrf @method('PATCH')
@elseif($status === 'unapproved') @if($canApprove)
@csrf @method('PATCH')
@endif @endif @endif View Task
@endforeach
@endforeach @else

No tasks in this status

@endif
@endforeach
@endif
@push('scripts') @endpush @endsection