@extends('dashboard.layouts.app') @section('content') @include('components.alert') @php $studentName = data_get($refundRequest, 'student.full_name') ?: trim((data_get($refundRequest, 'student.first_name') ?? '') . ' ' . (data_get($refundRequest, 'student.last_name') ?? '')); $courseName = data_get($refundRequest, 'course.course_name_en') ?: data_get($refundRequest, 'course.course_name_ar') ?: '--'; $courseStartDate = data_get($refundRequest, 'course.start_date'); $statusChangedBy = $refundRequest->status_changed_by_name ?: $refundRequest->status_changed_by ?: '--'; $hasCourse = filled($courseName) && $courseName !== '--'; $refundInvoiceAmount = is_numeric($refundRequest->refund_invoice_amount ?? null) ? number_format((float) $refundRequest->refund_invoice_amount, 2) : '--'; $packageLevelDeductionAmount = (float) ($refundRequest->package_level_deduction_amount ?? 0); $adminBaseAmount = max(0, (float) ($refundRequest->refund_invoice_amount ?? 0) - $packageLevelDeductionAmount); $adminExpensesDeduction = ($refundRequest->deduct_admin_expenses && is_numeric($refundRequest->refund_invoice_amount ?? null)) ? number_format($adminBaseAmount * 0.10, 2) : '0.00'; $packageLevelDeduction = number_format($packageLevelDeductionAmount, 2); $refundPackageName = $refundRequest->refund_package_name ?: '--'; $refundAmount = is_numeric($refundRequest->refund_amount ?? null) ? number_format((float) $refundRequest->refund_amount, 2) : '--'; $isCeoApproved = ($context['role'] ?? null) === 'ceo' && ($refundRequest->status ?? null) === config('refunds.review_status'); $isApproved = ($refundRequest->status ?? null) === config('refunds.approved_status') || $isCeoApproved; $isFinanceReviewRequest = ($refundRequest->status ?? null) === config('refunds.review_status'); $canActOnRequest = ($refundRequest->status ?? null) === ($context['action_status'] ?? config('refunds.review_status')); $canEditCeoReview = ($context['role'] ?? null) === 'ceo' && $canActOnRequest; $showFinanceApprovalForm = ($context['role'] ?? null) === 'finance' && $isFinanceReviewRequest; $showApprovalActions = $canEditCeoReview || $showFinanceApprovalForm; $statusLabel = $isCeoApproved ? 'approved' : ($refundRequest->status ?? '--'); $statusClass = $isApproved ? 'bg-success text-white' : 'bg-warning text-dark'; @endphp

Refund Request #{{ $refundRequest->id }}

{{ $statusLabel }}
{{ $studentName ?: '--' }} - {{ $hasCourse ? $courseName : 'No course selected' }}
@if($showFinanceApprovalForm)
@csrf
@endif
Request Details
Student
{{ $studentName ?: '--' }}
Course
{{ $hasCourse ? $courseName : 'No course selected' }}
Type
{{ $refundRequest->type ?? '--' }}
Refund Type
{{ $refundRequest->refund_type ?: 'Not selected' }}
Requested At
{{ optional($refundRequest->created_at)->format('Y-m-d H:i') ?? '--' }}
Course Start Date
{{ $courseStartDate ? \Carbon\Carbon::parse($courseStartDate)->format('Y-m-d') : '--' }}
Refund Invoice Amount
{{ $refundInvoiceAmount }}
Package
{{ $refundPackageName }}
Started Level Deduction
{{ $packageLevelDeduction }}
Refund Amount
{{ $refundAmount }}
Description
{{ $refundRequest->description ?: 'No description' }}
@if($canEditCeoReview)
@csrf @endif
Review Details
Status
{{ $refundRequest->status ?? '--' }}
Status Changed By
{{ $statusChangedBy }}
@if($canEditCeoReview) @error('refund_type')
{{ $message }}
@enderror @else
{{ $refundRequest->refund_type ?: 'Not selected' }}
@endif
@if($canEditCeoReview)
deduct_admin_expenses)) >
@else
{{ $refundRequest->deduct_admin_expenses ? 'Yes' : 'No' }}
@endif
Admin Expenses Deduction
{{ $adminExpensesDeduction }}
@if($canEditCeoReview) @error('additional_refund_amount')
{{ $message }}
@enderror @else
{{ $refundRequest->additional_amount }}
@endif
@if($canEditCeoReview) @error('manual_refund_note')
{{ $message }}
@enderror @else
{{ $refundRequest->status_note ?: 'No status note' }}
@endif
@if($canEditCeoReview)
@endif
Audit Trail
@forelse($refundRequest->histories as $history) @empty @endforelse
From To Status Note Status Changed By Deduct Admin Additional Performed By At
{{ $history->from_status ?? '--' }} {{ $history->to_status }} {{ $history->status_note ?? '--' }} {{ $history->status_changed_by_name ?: ($history->status_changed_by ?? '--') }} {{ $history->deduct_admin_expenses ? 'Yes' : 'No' }} {{ $history->additional_amount }} {{ data_get($history, 'performedBy.staff.full_name', data_get($history, 'performedBy.id', $history->performed_by_user_id ?? '--')) }} {{ optional($history->created_at)->format('Y-m-d H:i') ?? '--' }}
No audit trail entries yet.
{{ $showFinanceApprovalForm ? 'Finance Approval' : ($context['review_heading'] ?? 'Approval') }}
Refund amount: {{ $refundAmount }}
{{ $statusLabel }}
@if($showFinanceApprovalForm)
{{ $context['ready_title'] ?? 'Ready for approval' }}
Invoice {{ $refundInvoiceAmount }} · Admin deduction {{ $adminExpensesDeduction }} · Additional {{ $refundRequest->additional_amount }} @if($packageLevelDeductionAmount > 0) · Started level deduction {{ $packageLevelDeduction }} @endif
@csrf
@error('manual_refund_note')
{{ $message }}
@enderror
@elseif($canEditCeoReview)
{{ $context['ready_title'] ?? 'Ready for approval' }}
Invoice {{ $refundInvoiceAmount }} · Admin deduction {{ $adminExpensesDeduction }} · Additional {{ $refundRequest->additional_amount }}
@else
{{ $isApproved ? 'Approved refund request' : 'Review action closed' }}
{{ $isApproved ? 'This request is visible for CEO and finance manager review.' : 'This request is no longer waiting for your approval.' }}
@endif
@endsection