@extends('layouts.app')
@section('title', 'Dashboard - ' . config('app.name'))
@section('header-left')
Dashboard
@if(in_array(auth()->user()->role, ['owner', 'admin']))
@endif
@endsection
@section('content')
@php
$hour = (int) now()->format('G');
$greeting = $hour < 12 ? 'morning' : ($hour < 17 ? 'afternoon' : 'evening');
@endphp
{{-- Welcome --}}
Good {{ $greeting }}, {{ $user->name }}
{{ now()->format('l, F j, Y') }}
{{-- Stats cards --}}
{{-- Today's Tasks --}}
@if ($tasksDueToday->isEmpty())
No tasks due today.
@else
@foreach ($tasksDueToday as $task)
@include('dashboard.partials.task-row', ['task' => $task])
@endforeach
@endif
{{-- Overdue --}}
Overdue
@if ($overdueTasks->isNotEmpty())
View all
@endif
@if ($overdueTasks->isEmpty())
No overdue tasks.
@else
@foreach ($overdueTasks as $task)
@php
$dueMoment = \Carbon\Carbon::parse($task->due_date);
if ($task->due_time) {
$dueMoment->setTimeFromTimeString(is_string($task->due_time) ? $task->due_time : $task->due_time->format('H:i'));
} else {
$dueMoment->endOfDay();
}
$hoursOverdue = (int) now()->diffInHours($dueMoment, false);
$days = (int) floor($hoursOverdue / 24);
$overdueLabel = $days >= 1 ? $days . ' ' . Str::plural('day', $days) . ' overdue' : $hoursOverdue . ' ' . Str::plural('hour', $hoursOverdue) . ' overdue';
@endphp
@include('dashboard.partials.task-row', ['task' => $task, 'overdueLabel' => $overdueLabel])
@endforeach
@endif
{{-- Recent Activity --}}
Recent Activity
@if ($recentActivity->isEmpty())
No recent activity.
@else
@foreach ($recentActivity as $activity)
-
@if ($activity->user)
@if ($activity->user->avatar_url)
@else
{{ Str::limit($activity->user->name, 1) }}
@endif
@else
?
@endif
{{ $activity->user?->name ?? 'Someone' }}
{{ str_replace('_', ' ', $activity->action) }}
@if ($activity->task)
on
@if ($activity->task->project)
in {{ $activity->task->project->name }}
@endif
@endif
— {{ $activity->created_at->diffForHumans() }}
@endforeach
@endif
{{-- Team Overview (supervisors) --}}
@if (!empty($teamOverview))
@foreach ($teamOverview as $entry)
-
@if ($entry['overdue_tasks']->isEmpty())
No overdue tasks.
@else
@foreach ($entry['overdue_tasks'] as $task)
@php
$dueMoment = \Carbon\Carbon::parse($task->due_date);
if ($task->due_time) {
$dueMoment->setTimeFromTimeString(is_string($task->due_time) ? $task->due_time : $task->due_time->format('H:i'));
} else {
$dueMoment->endOfDay();
}
$hoursOverdue = (int) now()->diffInHours($dueMoment, false);
$label = $hoursOverdue >= 24 ? (int) floor($hoursOverdue / 24) . 'd' : $hoursOverdue . 'h';
@endphp
-
{{ $label }} overdue
@if ($task->project)
{{ $task->project->name }}
@endif
@endforeach
@endif
@endforeach
@endif
@include('partials.task-panel', ['projectId' => null])
@if(in_array(auth()->user()->role, ['owner', 'admin']))
@include('partials.create-task-modal', [
'apiBase' => url('/api/v1'),
'csrf' => csrf_token(),
])
@endif
@endsection
@push('scripts')
@include('partials.task-panel-script')
@endpush