@extends('dashboard.layouts.app') @section('content') @include('components.alert') @php $authStaffId = Auth::user()?->staff?->id; $isHolidayAutomaticRequest = optional($request->type)->name === 'Holiday Automatic Request'; $canEditRequestStatus = $authStaffId == $request->request_for; // $canEditRequestStatus = auth() // ->user() // ->hasAnyRole(['Super admin', 'HR']); $canApproveHolidayRows = $isHolidayAutomaticRequest && $authStaffId == $request->created_by; $showGenericStatusSelect = $canEditRequestStatus && !$isHolidayAutomaticRequest && !in_array($request->status, ['approved', 'rejected']); $statusLabels = [ 'pending' => 'Pending', 'approved' => 'Approved', 'rejected' => 'Rejected', ]; $statusClass = str_replace('-', '_', $request->status ?? 'pending'); $currentStatusLabel = $statusLabels[$request->status] ?? ucfirst((string) $request->status); $currentReason = $request->reject_reason ?? ($request->notes ?? ''); $normalizedRequestType = strtolower(trim((string) optional($request->type)->name)); $isLeaveLikeRequest = str_contains($normalizedRequestType, 'leave') || str_contains($normalizedRequestType, 'vacation'); $leaveReference = $request->reference instanceof \App\Models\HrRequestLeave ? $request->reference : null; @endphp
Back {{-- Status Card --}}
Current Status
{{ $currentStatusLabel }}
@if ($showGenericStatusSelect)
{{-- --}}
@endif
@if ($request->status == 'rejected' && $currentReason)
Rejection Reason: {{ $currentReason }}
@else @endif
@if ($showGenericStatusSelect) @endif @if ($canManageRecruitmentAssignee)
Recruitment Task Assignment

This recruitment request lands with the HR manager first. You can assign it to any active HR employee and change it later when needed.

@csrf
Current Assignee
{{ trim(($request->requestFor->first_name ?? '') . ' ' . ($request->requestFor->last_name ?? '')) ?: 'N/A' }}
@endif @if (optional($request->type)->name == 'retest' && $authStaffId == $request->request_for)
Retest Scheduling

This student needs a new demo scheduled.

Schedule Demo
@endif {{-- Request Information --}}
Request Information

Main request details, ownership, department data, related student info, and submission metadata.

Requisition Type
{{ $request->type->name ?? 'N/A' }}
@if ($isLeaveLikeRequest && $leaveReference)
From Date
{{ $leaveReference->leave_from ?: 'N/A' }}
To Date
{{ $leaveReference->leave_to ?: 'N/A' }}
@endif
Priority
{{ $request->priority ?? 'N/A' }}
Deadline
{{ $request->deadline ?: 'N/A' }}
Task Owner
{{ $request->creator->first_name ?? '' }} {{ $request->creator->last_name ?? '' }}
Task For
{{ $request->requestFor->first_name ?? '' }} {{ $request->requestFor->last_name ?? '' }}
Department
{{ $request->department->name ?? 'N/A' }}
@if ($request->student_id != null) @php $student = \DB::table('sm_students') ->where('id', $request->student_id) ->select('id', 'student_code', 'full_name', 'first_name', 'last_name') ->first(); @endphp
Student Name
{{ $student->first_name ?? '' }} {{ $student->last_name ?? '' }}
Student Code
{{ $student->student_code ?? 'N/A' }}
@endif @if ($request->level_id != null) @php $level = \DB::table('track_levels')->where('id', $request->level_id)->first(); @endphp
Level
{{ $level->name_en ?? 'N/A' }}
@endif
Date Of Submission
{{ $request->created_at }}
Requisition Details
{{ $request->details ?? 'No details provided' }}
Attachments
@if ($request->attachments && count($request->attachments) > 0)
@foreach ($request->attachments as $file) @php $extension = strtolower( pathinfo($file->file_path, PATHINFO_EXTENSION), ); $imageExtensions = ['jpg', 'jpeg', 'png', 'gif', 'webp']; @endphp @if (in_array($extension, $imageExtensions)) {{ $file->original_name }} @else
{{ $file->original_name }}
@endif @endforeach
@else
No attachment provided.
@endif
@if ($request->requestRecruitments->isNotEmpty())
Recruitment Details

Position requirements, vacancy data, expected start date, and hiring-related configuration.

Job Title
{{ old('job_title_id', optional($request->requestRecruitments->first())->jobTitles->name ?? '') }}
Number of Vacancies
{{ old('number_of_vacancies', optional($request->requestRecruitments->first())->number_of_vacancies) }}
Expected Start Date
{{ old('expected_start_date', optional($request->requestRecruitments->first())->expected_start_date) }}
Role Description
{{ old('role_description', optional($request->requestRecruitments->first())->role_description) }}
Required Qualifications & Skills
{{ old('required_qualifications_skills', optional($request->requestRecruitments->first())->required_qualifications_skills) }}
Justification / Reason
{{ old('justification_reason', optional($request->requestRecruitments->first())->justification_reason) }}
@if (optional($request->requestRecruitments->first())->category)
Category
{{ $request->requestRecruitments->first()->category->name_en }}
@endif @php $trackTypeIds = optional($request->requestRecruitments->first())->track_type_ids; $trackTypes = $trackTypeIds ? \App\Models\TrackType::whereIn('id', $trackTypeIds) ->pluck('name') ->implode(', ') : null; $trackIds = optional($request->requestRecruitments->first())->track_ids; $tracks = $trackIds ? \App\Models\Track::whereIn('id', $trackIds)->pluck('name_en')->implode(', ') : null; $shiftTimeIds = optional($request->requestRecruitments->first())->shift_time_ids; $shifts = $shiftTimeIds ? \App\Models\ShiftEmp::whereIn('id', $shiftTimeIds) ->pluck('name') ->implode(', ') : null; @endphp @if ($trackTypes)
Track Types
{{ $trackTypes }}
@endif @if ($tracks)
Programs
{{ $tracks }}
@endif @if ($shifts)
Proposed Shifts
{{ $shifts }}
@endif @if (optional($request->requestRecruitments->first())->shift_time)
Shift Time
{{ $request->requestRecruitments->first()->shift_time }}
@endif
@endif @if (isset($departmentStaff) && $request->type->name == 'Holiday Automatic Request')
Holiday Planning

Assign staff to holiday or working lists and save the plan for this request before HR approval.

@php $canEditHoliday = $authStaffId == $request->request_for; @endphp @if ($canEditHoliday)

The manager can prepare the holiday plan here. HR approval is handled row by row after the plan is saved.

@elseif($canApproveHolidayRows)

Use the approval dropdown next to each employee. The rejection reason field only appears for rejected rows.

@else

Only the manager can edit the holiday staffing plan, and HR reviews each employee row separately after the plan is prepared.

@endif
@csrf
Staff On Holiday
@if ($canEditHoliday) @endif
Staff Working (Double Pay)
@if ($canEditHoliday) @endif
@if ($canEditHoliday) @endif
@endif {{-- Reply --}}
Reply

Send a reply for this request and attach supporting files if needed.

@csrf
Supported files: JPG, PNG, PDF, DOC, DOCX.
Cancel
{{-- Reply History --}}
Reply History

Review previous replies, attached files, timestamps, and response authors.

@if ($request->replies->count() > 0)
@foreach ($request->replies as $reply)
{{ $reply->created_at->format('h:i A - M d, Y') }}
By: {{ $reply->staff->first_name . ' ' . $reply->staff->last_name }}
{{ $reply->reply_text }}
@if ($reply->attachments && count($reply->attachments) > 0)
@foreach ($reply->attachments as $file) @php $extension = pathinfo($file->file_path, PATHINFO_EXTENSION); $imageExtensions = ['jpg', 'jpeg', 'png', 'gif', 'webp']; @endphp @if (in_array(strtolower($extension), $imageExtensions)) {{ $file->original_name }} @else
{{ $file->original_name }}
@endif @endforeach
@endif
@endforeach
@else
No replies yet.
@endif
@endsection @push('styles') @endpush @push('scripts') @endpush