@if (count($onboardingTasks) > 0) @push('styles') @endpush @php $showBoarding = false; $manageOnboardingPermission = user()->permission('manage_employee_onboarding'); // Improved logic for determining when to show onboarding if ($employee->employeeDetail) { $onboardingStatus = $employee->employeeDetail->onboarding_status; $onboardCompleted = $employee->employeeDetail->onboard_completed; // Show onboarding if: // 1. Employee is new (onboarding_status = 'new') // 2. Onboarding is not completed (onboard_completed = 0) // 3. Admin viewing profile page // 4. User has manage permission if ($onboardingStatus === 'new' || $onboardCompleted === 0 || (in_array('admin', user_roles()) && $type === 'profile') || $manageOnboardingPermission === 'all') { $showBoarding = true; } } // Count tasks for progress tracking $totalOnboardTasks = count($onboardingTasks); $onBoardCompleteTasks = 0; if ($employee->employeeDetail) { $onBoardCompleteTasks = \Modules\Onboarding\Entities\OnboardingCompletedTask::where('employee_id', $employee->id) ->where('type', 'onboard') ->where('status', 'completed') ->count(); } @endphp @if ($showBoarding && $totalOnboardTasks > 0) @php $action = ''; // Calculate pending counts $pendingEmployeeOnboard = \Modules\Onboarding\Entities\OnboardingCompletedTask::where('employee_id', $employee->id) ->where('type', 'onboard') ->where('status', 'pending') ->whereHas('onboardingTask', function($q){ $q->where('task_for','employee'); }) ->count(); $pendingAnyOnboard = \Modules\Onboarding\Entities\OnboardingCompletedTask::where('employee_id', $employee->id) ->where('type', 'onboard') ->where('status', 'pending') ->count(); // Show action buttons only if onboarding is in progress if ($employee->employeeDetail && $employee->employeeDetail->onboard_completed == 0) { $showMarkAll = in_array('admin', user_roles()) ? ($pendingAnyOnboard > 0) : ($pendingEmployeeOnboard > 0); if ($showMarkAll) { $action = ' '; } } // Show cancel button if user has manage permission OR if admin (even when completed) if ($manageOnboardingPermission === 'all' || in_array('admin', user_roles())) { $action .= ''; } @endphp
@foreach ($onboardingTasks as $task) @php // Determine task visibility and status $hideTask = false; // Hide company tasks from employees unless they can see them if (in_array('employee', user_roles()) && $task->task_for == 'company' && !$task->employee_can_see) { $hideTask = true; } // Admins can see all tasks on profile page if (in_array('admin', user_roles()) && $type === 'profile') { $hideTask = false; } // Users with manage permission can see all tasks if ($manageOnboardingPermission === 'all') { $hideTask = false; } // Determine if task is disabled for completion $isDisabled = false; if ($task->completedTask && $task->completedTask->status === 'completed') { $isDisabled = true; // Already completed } elseif ($task->task_for === 'company' && $task->employee_can_see && !in_array('admin', user_roles())) { $isDisabled = true; // Company task, employee can't complete } elseif ($task->task_for === 'employee' && $task->employee_can_see && in_array('admin', user_roles())) { $isDisabled = true; // Employee task, admin can't complete } // Override for users with manage permission if ($manageOnboardingPermission === 'all') { $isDisabled = false; } $isChecked = $task->completedTask && $task->completedTask->status === 'completed'; @endphp @if (!$hideTask)
{{ $task['title'] }}
@if ($task->completedTask) @php $submissionStatus = $task->completedTask->submission_status ?? 'pending'; $isSubmitted = $submissionStatus === 'submitted'; $isApproved = $submissionStatus === 'approved'; $isRejected = $submissionStatus === 'rejected'; $isPending = $submissionStatus === 'pending'; @endphp @if ($task->completedTask->status == 'pending') @if ($task->task_for == 'company' && $manageOnboardingPermission !== 'all' && !in_array('admin', user_roles())) Company Task @elseif ($manageOnboardingPermission === 'all' || in_array('admin', user_roles()) || (!$isDisabled && $task->task_for == 'employee')) @if ($isPending) {{-- Employee completes via modal (same flow as admin) --}} @if ($task->completedTask->employee_id == user()->id) Complete Task @endif {{-- Admin/Manager can mark as complete directly --}} @if ($manageOnboardingPermission === 'all' || in_array('admin', user_roles())) @lang('modules.tasks.markComplete') @endif @elseif ($isSubmitted) {{-- Admin/Manager can approve/reject --}} @if ($manageOnboardingPermission === 'all' || in_array('admin', user_roles())) Approve Reject @else Pending Approval @endif @elseif ($isApproved) Approved @if ($manageOnboardingPermission === 'all' || in_array('admin', user_roles())) Cancel @endif @elseif ($isRejected) @if ($task->completedTask->rejection_reason) @endif {{-- Show Complete Task button for rejected tasks --}} @if ($task->completedTask->employee_id == user()->id) Complete Task @endif @if ($manageOnboardingPermission === 'all' || in_array('admin', user_roles())) Cancel @endif @endif @endif @endif @endif {{-- Show Cancel button for completed tasks (not in approval workflow) --}} @if ($task->completedTask && $task->completedTask->status === 'completed' && ($manageOnboardingPermission === 'all' || in_array('admin', user_roles()))) Cancel @endif {{-- Show View File button for any task with a file --}} @if ($task->completedTask && $task->completedTask->file) {{-- Admin/Manager can view any file --}} @if (in_array('admin', user_roles()) || $manageOnboardingPermission === 'all') {{ __('onboarding::clan.viewFile') }} {{-- Employee can view their own submitted files or company files with employee_can_see --}} @elseif ($task->completedTask->employee_id == user()->id || ($task->task_for == 'company' && $task->employee_can_see)) {{ __('onboarding::clan.viewFile') }} @endif @endif
@if ($task->completedTask && $task->completedTask['user_id']) @if ($task->completedTask->submission_status === 'submitted') @lang('onboarding::clan.submittedOn') @lang('app.on') @if ($task->completedTask['submitted_on']) {{ \Carbon\Carbon::parse($task->completedTask['submitted_on'])->translatedFormat(company()->date_format) }} @elseif ($task->completedTask['completed_on']) {{ \Carbon\Carbon::parse($task->completedTask['completed_on'])->translatedFormat(company()->date_format) }} @else {{ \Carbon\Carbon::parse($task->completedTask['updated_at'])->translatedFormat(company()->date_format) }} @endif Pending Approval @elseif ($task->completedTask->submission_status === 'rejected') @lang('app.rejected') @lang('app.on') @if ($task->completedTask['rejected_on']) {{ \Carbon\Carbon::parse($task->completedTask['rejected_on'])->translatedFormat(company()->date_format) }} @elseif ($task->completedTask['updated_at']) {{ \Carbon\Carbon::parse($task->completedTask['updated_at'])->translatedFormat(company()->date_format) }} @endif @lang('app.by') {{ $task->completedTask->rejectedBy->name ?? 'Admin' }} @elseif ($task->completedTask['completed_on'] || $task->completedTask->status === 'completed') @lang('app.completed') @lang('app.on') @if ($task->completedTask['completed_on']) {{ \Carbon\Carbon::parse($task->completedTask['completed_on'])->translatedFormat(company()->date_format) }} @elseif ($task->completedTask['approved_on']) {{ \Carbon\Carbon::parse($task->completedTask['approved_on'])->translatedFormat(company()->date_format) }} @else {{ \Carbon\Carbon::parse($task->completedTask['updated_at'])->translatedFormat(company()->date_format) }} @endif @lang('app.by') {{ $task->completedTask->user->name }} @elseif ($task->completedTask['updated_at']) @lang('app.added') @lang('app.on') {{ \Carbon\Carbon::parse($task->completedTask['updated_at'])->translatedFormat(company()->date_format) }} @lang('app.pending') @endif @elseif ($task->completedTask && $task->completedTask['updated_at']) @lang('app.added') @lang('app.on') {{ \Carbon\Carbon::parse($task->completedTask['updated_at'])->translatedFormat(company()->date_format) }} @lang('app.pending') @endif @if ($task->task_for == 'company') Company Task @elseif ($task->task_for == 'employee') Employee Task @else Company Task @endif
@endif @endforeach
@endif @push('scripts') @endpush @endif