@extends('layouts.app') @section('title', 'View Reseller Ticket') @section('content') @php use Illuminate\Support\Facades\Storage; use Illuminate\Support\Facades\DB; @endphp
| # | Employee Name | Phone | Department | Assigned By | Issue | Assigned At | Status | Notes | Created At | Updated At | Solved by |
|---|---|---|---|---|---|---|---|---|---|---|---|
| {{ $index + 1 }} | {{ $assignment->employee_name ?? 'N/A' }} | {{ $assignment->employee_phone ?? 'N/A' }} | @if($assignment->department_name) {{ $assignment->department_name }} @else N/A @endif | {{ $assignment->assigned_by_name ?? 'N/A' }} | @php $restrictedStatuses = ['upstream_issues', 'pop_issues', 'transmission_issues']; $statusLabels = [ 'upstream_issues' => 'Upstream Issues', 'pop_issues' => 'POP Issues', 'transmission_issues' => 'Transmission Issues' ]; $statusColors = [ 'upstream_issues' => '#007bff', 'pop_issues' => '#fd7e14', 'transmission_issues' => '#6f42c1' ]; @endphp @if(in_array($resellerTicket->status, $restrictedStatuses)) @php $issueLabel = $statusLabels[$resellerTicket->status] ?? ucfirst(str_replace('_', ' ', $resellerTicket->status)); $popName = $resellerTicket->isp && $resellerTicket->isp->name ? $resellerTicket->isp->name : null; $displayText = $popName ? $issueLabel . ' (' . $popName . ')' : $issueLabel; @endphp {{ $displayText }} @else N/A @endif | @if($assignment->assigned_at) @php $assignedAt = \Carbon\Carbon::parse($assignment->assigned_at); $isResolvedOrClosed = in_array($resellerTicket->status, ['resolved', 'closed']); $isActive = $assignment->is_active ?? false; if ($isResolvedOrClosed && ($resellerTicket->resolved_at || $resellerTicket->closed_at)) { // For resolved/closed tickets, show duration from assigned_at to resolved/closed time $endAt = \Carbon\Carbon::parse($resellerTicket->resolved_at ?? $resellerTicket->closed_at); $diff = $assignedAt->diff($endAt); $duration = sprintf('%dd:%dh:%dm:%ds', $diff->days, $diff->h, $diff->i, $diff->s ); $isLive = false; } elseif ($isActive) { // For active assignments, calculate duration from assigned_at to now (will be updated by JavaScript) $now = now(); $diff = $assignedAt->diff($now); $duration = sprintf('%dd:%dh:%dm:%ds', $diff->days, $diff->h, $diff->i, $diff->s ); $isLive = true; } else { // For inactive assignments, show static duration from assigned_at to updated_at (when it became inactive) $updatedAt = \Carbon\Carbon::parse($assignment->updated_at); $diff = $assignedAt->diff($updatedAt); $duration = sprintf('%dd:%dh:%dm:%ds', $diff->days, $diff->h, $diff->i, $diff->s ); $isLive = false; } @endphp {{ $duration }} @else N/A @endif | @php $isResolvedOrClosed = in_array($resellerTicket->status, ['resolved', 'closed']); $isActive = $assignment->is_active ?? false; @endphp @if($isResolvedOrClosed && $isActive) Solved @elseif($isActive) Active @else Inactive @endif | @if($assignment->notes) {{ Str::limit($assignment->notes, 50) }} @else - @endif | @if($assignment->created_at) {{ \Carbon\Carbon::parse($assignment->created_at)->format('Y-m-d H:i:s') }} @else N/A @endif | @if($assignment->updated_at) {{ \Carbon\Carbon::parse($assignment->updated_at)->format('Y-m-d H:i:s') }} @else N/A @endif | @php $isSolved = $resellerTicket->resolved_at || $resellerTicket->status === 'resolved' || $resellerTicket->status === 'closed'; $isActive = $assignment->is_active ?? false; // Check if this assignment was the one that solved the ticket // If ticket is solved and this assignment was active when solved, or was the last active assignment $solvedByEmployee = null; if ($isSolved) { // If this assignment is active and ticket is solved, this employee solved it if ($isActive) { $solvedByEmployee = $assignment->employee_name ?? 'N/A'; } else { // Check if this was the last active assignment before ticket was solved $resolvedAt = $resellerTicket->resolved_at ?? ($resellerTicket->closed_at ?? now()); $assignmentUpdatedAt = $assignment->updated_at ? \Carbon\Carbon::parse($assignment->updated_at) : null; // If assignment was deactivated around the time ticket was solved, this employee likely solved it if ($assignmentUpdatedAt && $assignmentUpdatedAt->diffInMinutes($resolvedAt) <= 5) { $solvedByEmployee = $assignment->employee_name ?? 'N/A'; } } } @endphp @if($solvedByEmployee) {{ $solvedByEmployee }} @else - @endif |
{{ $resellerTicket->description }}
@if($resellerTicket->resolution_notes){{ $resellerTicket->resolution_notes }}
{{ $resellerTicket->notes }}
| Ticket Number: | {{ $resellerTicket->ticket_number }} |
|---|---|
| Ticket Created Duration: | @php $createdAt = \Carbon\Carbon::parse($resellerTicket->created_at); $isResolvedOrClosed = in_array($resellerTicket->status, ['resolved', 'closed']); if ($isResolvedOrClosed && ($resellerTicket->resolved_at || $resellerTicket->closed_at)) { // For resolved/closed tickets, show duration from creation to resolved/closed time $endAt = \Carbon\Carbon::parse($resellerTicket->resolved_at ?? $resellerTicket->closed_at); $diff = $createdAt->diff($endAt); $duration = sprintf('%dd:%dh:%dm:%ds', $diff->days, $diff->h, $diff->i, $diff->s ); $isLive = false; } else { // For active tickets, calculate duration from creation to now (will be updated by JavaScript) $now = now(); $diff = $createdAt->diff($now); $duration = sprintf('%dd:%dh:%dm:%ds', $diff->days, $diff->h, $diff->i, $diff->s ); $isLive = true; } @endphp {{ $duration }} |
| Status: | {{ ucfirst(str_replace('_', ' ', $resellerTicket->status)) }} |
| Priority: | {{ ucfirst($resellerTicket->priority) }} |
| Category: | {{ $resellerTicket->category->name ?? 'N/A' }} |
| Sub Category: | {{ $resellerTicket->subcategory->name ?? 'N/A' }} |
| Reseller: | @if($resellerTicket->user->reseller && $resellerTicket->user->reseller->name) {{ $resellerTicket->user->reseller->name }} @elseif($resellerTicket->user->company_name) {{ $resellerTicket->user->company_name }} @else {{ $resellerTicket->user->name ?? 'N/A' }} @endif |
| Name: | {{ $resellerTicket->user->name ?? 'N/A' }} |
| Phone Number: | {{ $resellerTicket->user->phone ?? 'N/A' }} |
| Complained Number: | {{ $resellerTicket->complained_number ?? 'N/A' }} |
| Level: | @if($resellerTicket->assignedEmployees && $resellerTicket->assignedEmployees->count() > 0) @foreach($resellerTicket->assignedEmployees as $employee) {{ $employee->name }} ({{ $employee->employee_id ?? 'N/A' }}) @endforeach @else Unassigned @endif |
| Created By: | {{ $resellerTicket->createdBy->name ?? 'N/A' }} |
| Created At: | {{ $resellerTicket->created_at->format('Y-m-d H:i:s') }} |
| Resolved At: | {{ $resellerTicket->resolved_at->format('Y-m-d H:i:s') }} |
| Closed At: | {{ $resellerTicket->closed_at->format('Y-m-d H:i:s') }} |
| Solved/Closed by: | @if($solvedByEmployee) {{ $solvedByEmployee }} @else N/A @endif |
| Last Updated: | {{ $resellerTicket->updated_at->format('Y-m-d H:i:s') }} |