@extends('layouts.user') @section('title', 'Patroller Schedule Details') @section('content')

Patroller Schedule Details

Details for Duty #{{ $patrollerSchedule->duty_number }}

@if(!$patrollerSchedule->isJobStarted() && $patrollerSchedule->job_status !== 'cancelled') Edit Duty
@csrf @method('PATCH')
@endif Back to List

Duty Information

Status
{{ $patrollerSchedule->calculated_status }}
Schedule Date
{{ $patrollerSchedule->scheduled_date->format('M d, Y') }}
Scheduled Start
{{ $patrollerSchedule->from_time->format('h:i A') }}
Scheduled End
{{ $patrollerSchedule->to_time->format('h:i A') }}
@if($patrollerSchedule->job_started_at)
Actual Start
{{ $patrollerSchedule->job_started_at->format('M d, h:i A') }}
@endif @if($patrollerSchedule->job_ended_at)
Actual End
{{ $patrollerSchedule->job_ended_at->format('M d, h:i A') }}
@endif
Duration
@php $duration = $patrollerSchedule->from_time->diffInMinutes($patrollerSchedule->to_time) / 60; $h = floor($duration); $m = round(($duration - $h) * 60); @endphp {{ $h }}h {{ $m }}m ({{ number_format($duration, 2) }} hrs)

Billing Details

Route Rate
${{ number_format($patrollerSchedule->route_rate, 2) }} /hr
Total Billing (Est.)
${{ number_format($duration * $patrollerSchedule->route_rate, 2) }}
Customer Ref
{{ $patrollerSchedule->customer_reference ?: 'None' }}

Sites Visited ({{ $patrollerSchedule->jobSites->where('status', '!=', 'pending')->count() }})

@forelse($patrollerSchedule->jobSites->where('status', '!=', 'pending') as $jobSite)
@if($jobSite->status == 'checked_in')
@endif
{{ optional($jobSite->site)->name ?? 'Unknown Site' }}
IN: {{ $jobSite->checked_in_at ? $jobSite->checked_in_at->format('h:i A') : '--' }}
OUT: {{ $jobSite->checked_out_at ? $jobSite->checked_out_at->format('h:i A') : '--' }}
@if($jobSite->checked_in_at && $jobSite->checked_out_at)
{{ number_format($jobSite->checked_in_at->floatDiffInMinutes($jobSite->checked_out_at), 2) }} min
@endif
@empty

No sites visited yet.

@endforelse

Tickets Issued ({{ $patrollerSchedule->issueTickets->count() }})

@forelse($patrollerSchedule->issueTickets as $ticket)

Ticket #{{ $ticket->ticket_number ?? $ticket->id }}

{{ $ticket->created_at->format('h:i A') }}
Site: {{ optional($ticket->site)->name ?? 'Unknown Site' }}
@if($ticket->description)
"{{ $ticket->description }}"
@endif @if(!empty($ticket->images) && is_array($ticket->images))
Evidence Images
@foreach($ticket->images as $image) @endforeach
@endif
@empty

No tickets issued.

@endforelse

Assigned Patrollers & Rates

@foreach($patrollerSchedule->employees as $employee)
@if($employee->profile_picture) @else
{{ substr($employee->first_name, 0, 1) }}{{ substr($employee->last_name, 0, 1) }}
@endif
{{ $employee->first_name }} {{ $employee->last_name }}
{{ $employee->employee_id }}
@php $employeeWageTypes = json_decode($employee->pivot->wage_types, true) ?: []; $totalPatrollerPayout = 0; foreach($employeeWageTypes as $ewt) { $totalPatrollerPayout += ($ewt['rate'] ?? 0) * ($ewt['allocated_hours'] ?? 0); } $totalPatrollerPayout += ($employee->pivot->gas_rate ?? 0); $totalPatrollerPayout += ($employee->pivot->allowance ?? 0); $totalPatrollerPayout += ($employee->pivot->other_expense ?? 0); @endphp
Total Payout
${{ number_format($totalPatrollerPayout, 2) }}
@if($employee->pivot->gas_rate)
GAS Rate
${{ number_format($employee->pivot->gas_rate, 2) }}
@endif @if($employee->pivot->allowance)
Allowance
${{ number_format($employee->pivot->allowance, 2) }}
@endif
@if(!empty($employeeWageTypes))
Active Components
@foreach($employeeWageTypes as $ewt)
{{ $ewt['name'] ?? 'Wage Component' }} ${{ number_format($ewt['rate'], 2) }}/hr
Allocation {{ $ewt['allocated_hours'] ?? 0 }} hrs
@endforeach
@endif
@endforeach
@if($patrollerSchedule->comments)

Instructions / Comments

"{{ $patrollerSchedule->comments }}"
@endif
Route Information
{{ substr($patrollerSchedule->route->name, 0, 1) }}

{{ $patrollerSchedule->route->name }}

@php $description = $patrollerSchedule->route->description ?? ''; $isPlaceholder = empty($description) || stripos($description, 'lorem') !== false || stripos($description, 'ipsum') !== false || stripos($description, 'dolor') !== false; @endphp @if(!$isPlaceholder)

{{ $description }}

@endif @if($patrollerSchedule->route->route_id)
Route ID {{ $patrollerSchedule->route->route_id }}
@endif @if($patrollerSchedule->route->sites && $patrollerSchedule->route->sites->count() > 0)
Sites on Route ({{ $patrollerSchedule->route->sites->count() }})
@foreach($patrollerSchedule->route->sites as $site)
{{ substr($site->name, 0, 1) }}
{{ $site->name }}
@if($site->address_line_1 || $site->city)
{{ $site->address_line_1 }}{{ $site->city ? ', ' . $site->city : '' }}
@endif
@endforeach
@endif
@endsection