@extends('layouts.employee') @section('title', 'Patroller Job') @section('content')

[PATROLLER] {{ $schedule->route->name }}

Duty #{{ $schedule->duty_number }}

{{ $schedule->from_time->format('h:i A') }} - {{ $schedule->to_time->format('h:i A') }}

View Report
{{-- Job Stats --}} @php $totalTickets = $schedule->jobSites->sum(fn($js) => $js->issueTickets->count()); $uniqueVisitedSites = $schedule->jobSites->where('status', '!=', 'pending')->unique('site_id')->count(); $totalSites = $schedule->route->sites->count(); @endphp

Progress

{{ $uniqueVisitedSites }} / {{ $totalSites }} Sites

Total Issues

{{ $totalTickets }} Tickets

Gas Allowance

${{ $schedule->gas ?? '0.00' }}

Reference

{{ $schedule->customer_reference ?? 'N/A' }}

@if($schedule->comments)

Comments

"{{ $schedule->comments }}"

@endif
{{-- Patroller Team Status --}}

Team Status

@foreach($schedule->employees as $emp) @php $isFinished = $emp->pivot->actual_end_at !== null; $isMe = $emp->id === auth('employee')->id(); @endphp
{{ substr($emp->first_name, 0, 1) }}

{{ $emp->first_name }} {{ $emp->last_name }} @if($isMe) You @endif

{{ $isFinished ? 'Completed at ' . \Carbon\Carbon::parse($emp->pivot->actual_end_at)->format('h:i A') : 'Active on Patrol' }}

@if($isFinished) @else
@endif
@endforeach
{{-- Timeline --}} @php $timelineEvents = $schedule->jobSites ->where('status', '!=', 'pending') ->sortBy('checked_in_at'); // Check if current user has ended shift $currentUserPivot = $schedule->employees->find(auth('employee')->id())->pivot; $hasEndedShift = $currentUserPivot->actual_end_at !== null; @endphp @if($timelineEvents->isNotEmpty())

Patrol Timeline

@foreach($timelineEvents as $event)
{{ $event->checked_in_at ? $event->checked_in_at->format('h:i A') : '' }} @if($event->status === 'checked_in') Active @else {{ $event->checked_out_at ? $event->checked_out_at->format('h:i A') : '' }} @endif

{{ $event->site->name }}

@if($event->status === 'checked_out' && $event->checked_in_at && $event->checked_out_at)

Duration: {{ $event->checked_in_at->diffInMinutes($event->checked_out_at) }} mins

@endif @if($event->issueTickets->count() > 0)
{{ $event->issueTickets->count() }} Issues
@endif
@endforeach
@endif {{-- Sites List --}}
@foreach($schedule->route->sites as $site) @php // Get all visits for this site, ordered by latest first $visits = $schedule->jobSites->where('site_id', $site->id)->sortByDesc('created_at'); $currentVisit = $visits->first(); $status = $currentVisit ? $currentVisit->status : 'pending'; $canCheckIn = ($status === 'pending' || $status === 'checked_out'); $isCheckedIn = ($status === 'checked_in'); $hasPriorImages = $visits->whereNotNull('checkin_images')->isNotEmpty(); @endphp

{{ $site->name }}

{{ $site->address_line_1 }}

@if($canCheckIn) @if(isset($activeCheckIn) && $activeCheckIn->site_id !== $site->id)

Checkout from
{{ Str::limit($activeCheckIn->site->name, 20) }} first

@else @if($schedule->job_status === 'in_progress') @else Job Not Started @endif @endif @else {{ $status === 'checked_out' ? 'Visited' : $status }} @endif
@if($isCheckedIn)

Currently Checked In

Since {{ $currentVisit->checked_in_at->format('h:i A') }}

@endif {{-- Visit History & Tickets --}} @if($visits->count() > 0)

Activity Log

@foreach($visits as $visit) @if($visit->status !== 'pending')

Check In

{{ $visit->checked_in_at ? $visit->checked_in_at->format('h:i A') : '-' }}

Check Out

{{ $visit->checked_out_at ? $visit->checked_out_at->format('h:i A') : 'Active' }}

{{-- Tickets for this visit --}} @if($visit->issueTickets->count() > 0)

{{ $visit->issueTickets->count() }} Issue Ticket(s)

@foreach($visit->issueTickets as $ticket)
{{ $ticket->ticket_number }} {{ strtoupper($ticket->status) }} @if(!empty($ticket->images)) @endif

{{ $ticket->description }}

@endforeach
@else
No issues reported
@endif
@endif @endforeach
@endif
@endforeach
{{-- End Job Button --}} {{-- Job Actions --}}
@if($schedule->job_status === 'pending') @php $startTime = $schedule->from_time->copy()->subMinutes($visibilityMinutes ?? 0); $canStart = now()->greaterThanOrEqualTo($startTime); $isMissed = $schedule->scheduled_date->lt(now()->startOfDay()); @endphp @if($isMissed)
Job Missed
@elseif($canStart) @else

Job starts at {{ $schedule->from_time->format('h:i A') }}

You can start this job {{ $startTime->diffForHumans() }}

@endif @elseif($schedule->job_status === 'in_progress') @if(!$hasEndedShift)

Only ends your shift. Job completes when all patrollers finish.

@else

You have ended your shift.

Job status: In Progress (Waiting for others)

@endif @endif
{{-- Reliever Modal --}} {{-- Check-in Modal --}} {{-- Ticket Modal --}}
@endsection