@extends('layouts.app') @section('title', $meeting->title) @section('contents')
@php $mwsLifecycleBadgeClasses = [ 'draft' => 'badge-secondary', 'scheduled' => 'badge-info', 'confirmed' => 'badge-primary', 'ongoing' => 'badge-warning', 'completed' => 'badge-success', 'rescheduled' => 'badge-dark', 'missed' => 'badge-danger', 'cancelled' => 'badge-secondary', ]; $mwsPriorityBadgeClasses = [ 'low' => 'badge-secondary', 'normal' => 'badge-info', 'high' => 'badge-warning', 'critical' => 'badge-danger', ]; @endphp
@php $mwsTitleFull = trim((string) $meeting->title); $mwsTitleWords = $mwsTitleFull === '' ? [] : preg_split('/\s+/u', $mwsTitleFull, -1, PREG_SPLIT_NO_EMPTY); $mwsTitleWordLimit = 15; $mwsTitleNeedsTruncate = count($mwsTitleWords) > $mwsTitleWordLimit; $mwsTitleTruncated = $mwsTitleNeedsTruncate ? implode(' ', array_slice($mwsTitleWords, 0, $mwsTitleWordLimit)).'...' : $mwsTitleFull; @endphp

@if ($mwsTitleNeedsTruncate) {{ $mwsTitleTruncated }} {{ $mwsTitleFull }} @else {{ $mwsTitleFull }} @endif

@php $mwsMeetStartDisplay = \Carbon\Carbon::parse((string) $meeting->start_time)->format('g:i A'); $mwsMeetEndDisplay = \Carbon\Carbon::parse((string) $meeting->end_time)->format('g:i A'); $mwsMeetDurationNote = null; $mwsMeetTimingLabel = null; $mwsMeetSkewLabel = null; $mwsHumanizeMeetingMinutes = static function (int $minutes): string { $minutes = max(1, $minutes); if ($minutes < 60) { return $minutes.' min'; } if ($minutes < 1440) { $h = intdiv($minutes, 60); $m = $minutes % 60; $hWord = $h === 1 ? 'hour' : 'hours'; return $m === 0 ? $h.' '.$hWord : $h.' '.$hWord.' '.$m.' min'; } $days = intdiv($minutes, 1440); $rem = $minutes % 1440; $dWord = $days === 1 ? 'day' : 'days'; if ($rem === 0) { return $days.' '.$dWord; } $h = intdiv($rem, 60); $m = $rem % 60; $parts = [$days.' '.$dWord]; if ($h > 0) { $parts[] = $h.($h === 1 ? ' hour' : ' hours'); } if ($m > 0) { $parts[] = $m.' min'; } return implode(' ', $parts); }; try { $mwsMeetTz = config('app.meeting_timezone', config('app.timezone')); $mwsMeetNow = \Carbon\Carbon::now($mwsMeetTz); $mwsMeetDay = $meeting->meeting_date->format('Y-m-d'); $mwsMeetStartAt = \Carbon\Carbon::parse($mwsMeetDay.' '.trim((string) $meeting->start_time), $mwsMeetTz); $mwsMeetEndFromDuration = $meeting->duration_minutes ? $mwsMeetStartAt->copy()->addMinutes((int) $meeting->duration_minutes) : null; $mwsMeetEndAt = $mwsMeetEndFromDuration ?? \Carbon\Carbon::parse($mwsMeetDay.' '.trim((string) $meeting->end_time), $mwsMeetTz); if ($meeting->duration_minutes) { $mwsMeetEndDisplay = $mwsMeetEndFromDuration->format('g:i A'); } $mwsMeetPlannedMin = $meeting->duration_minutes ? (int) $meeting->duration_minutes : max(0, (int) round($mwsMeetStartAt->diffInSeconds($mwsMeetEndAt) / 60)); $mwsMeetTerminalStatus = in_array($meeting->status, [ \App\MeetingWorkspace\MeetingLifecycleStatus::Draft, \App\MeetingWorkspace\MeetingLifecycleStatus::Cancelled, \App\MeetingWorkspace\MeetingLifecycleStatus::Completed, \App\MeetingWorkspace\MeetingLifecycleStatus::Missed, ], true); if (! $mwsMeetTerminalStatus && ! $meeting->duration_minutes && $mwsMeetPlannedMin > 0 && $mwsMeetNow->lt($mwsMeetStartAt)) { $mwsMeetDurationNote = $mwsHumanizeMeetingMinutes($mwsMeetPlannedMin).' scheduled'; } if (! $mwsMeetTerminalStatus) { if ($mwsMeetNow->lt($mwsMeetStartAt)) { $mwsSecsToStart = $mwsMeetStartAt->getTimestamp() - $mwsMeetNow->getTimestamp(); if ($mwsSecsToStart > 0) { // Relative only: date and start time already appear as "Friday, May 8, 2026 · 22:41 – …" $mwsMeetTimingLabel = 'Starts in '.$mwsHumanizeMeetingMinutes((int) ceil($mwsSecsToStart / 60)); } } elseif ($mwsMeetNow->lt($mwsMeetEndAt)) { $mwsSecsLeft = $mwsMeetEndAt->getTimestamp() - $mwsMeetNow->getTimestamp(); $mwsMeetTimingLabel = 'Ends in '.$mwsHumanizeMeetingMinutes((int) ceil($mwsSecsLeft / 60)); } elseif ($mwsMeetNow->gte($mwsMeetEndAt)) { $mwsSecsOver = $mwsMeetNow->getTimestamp() - $mwsMeetEndAt->getTimestamp(); if ($mwsSecsOver >= 60) { $mwsMeetTimingLabel = 'Over by '.$mwsHumanizeMeetingMinutes((int) floor($mwsSecsOver / 60)); } } } if ($meeting->duration_minutes && $mwsMeetEndFromDuration) { $mwsMeetDbEndAt = \Carbon\Carbon::parse($mwsMeetDay.' '.trim((string) $meeting->end_time), $mwsMeetTz); $mwsSkewMin = abs((int) round($mwsMeetDbEndAt->diffInSeconds($mwsMeetEndFromDuration) / 60)); if ($mwsSkewMin >= 2) { $mwsSkewTxt = $mwsHumanizeMeetingMinutes($mwsSkewMin); $mwsMeetSkewLabel = $mwsMeetDbEndAt->gt($mwsMeetEndFromDuration) ? 'Saved end '.$mwsSkewTxt.' later than duration' : 'Saved end '.$mwsSkewTxt.' earlier than duration'; } } } catch (\Throwable) { // keep display times from columns; optional segments stay null } @endphp
{{ $meeting->reference_id }} · {{ $meeting->meeting_date->format('l, F j, Y') }} · {{ $mwsMeetStartDisplay }} – {{ $mwsMeetEndDisplay }}@if ($mwsMeetDurationNote !== null) · {{ $mwsMeetDurationNote }}@endif @if ($mwsMeetTimingLabel !== null) · {{ $mwsMeetTimingLabel }}@endif @if ($mwsMeetSkewLabel !== null) · {{ $mwsMeetSkewLabel }}@endif
@php $mwsMayManageMeetingActions = $mwsMayManageMeetingActions ?? false; $mwsShowCancelMeeting = auth()->check() && can('meeting_workspace', 'edit') && $mwsMayManageMeetingActions && $meeting->status !== \App\MeetingWorkspace\MeetingLifecycleStatus::Draft && $meeting->status !== \App\MeetingWorkspace\MeetingLifecycleStatus::Cancelled && $meeting->status !== \App\MeetingWorkspace\MeetingLifecycleStatus::Completed; @endphp
Planner @if ($mwsMayAddAdditionalAgenda ?? false) Add Additional Agenda Item @endif @if (can('meeting_workspace', 'edit') && $mwsMayManageMeetingActions && $meeting->status !== \App\MeetingWorkspace\MeetingLifecycleStatus::Completed) @if ($meeting->status === \App\MeetingWorkspace\MeetingLifecycleStatus::Scheduled) @else Edit @endif @endif @if ($mwsShowCancelMeeting) @endif @if (can('meeting_workspace', 'delete') && $mwsMayManageMeetingActions)
@csrf @method('DELETE')
@endif

Overview

Status
{{ $meeting->status->label() }}
@if ($meeting->status === \App\MeetingWorkspace\MeetingLifecycleStatus::Cancelled && filled($meeting->cancellation_reason))
Cancellation reason
{{ $meeting->cancellation_reason }}
@endif
Priority
{{ $meeting->priority->label() }}
Type
{{ $meeting->meeting_type ?: '—' }}
Organizer
{{ $meeting->organizer->name ?? '—' }}
Location
{{ $meeting->location ?: '—' }}
Online
@if ($meeting->online_meeting_link) Join link @else — @endif
@if ($meeting->relationLoaded('subjectLinks') && $meeting->subjectLinks->isNotEmpty())
Scheme / UID
    @foreach ($meeting->subjectLinks as $link)
  • @php $mwsSchemeUid = mws_scheme_uid_display($link->project); $mwsOverviewPcnId = (int) ($link->project_concept_note_id ?? 0); $mwsOverviewPcFormId = (int) ($link->pc_form_id ?? 0); $mwsOverviewPcnRef = ''; $mwsOverviewPcnName = trim((string) ($link->project?->name ?? '')); $mwsOverviewKindMark = ''; if ($mwsOverviewPcFormId > 0 && $link->pcForm) { $mwsOverviewKindMark = \App\Models\PC\PcForm::kindLabel((string) ($link->pcForm->pc_form_kind ?? '')); } if ($mwsOverviewPcnId > 0 && $mwsOverviewPcFormId <= 0) { $mwsOverviewPcn = $link->projectConceptNote; $mwsOverviewKindMark = \App\Services\PC\MeetingWorkspaceSubjectCatalog::PCN_SCHEME_KIND_MARK; if ($mwsOverviewPcn) { $mwsOverviewPcnRef = trim((string) ($mwsOverviewPcn->reference_number ?? '')); if ($mwsOverviewPcnRef === '') { $mwsOverviewPcnRef = trim((string) ($mwsOverviewPcn->pcn_uid ?? '')); } if ($mwsOverviewPcnRef === '') { $mwsOverviewPcnRef = 'PCN #'.$mwsOverviewPcnId; } if ($mwsOverviewPcnName === '') { $mwsOverviewPcnName = trim((string) ($mwsOverviewPcn->project_name ?? '')); } if ($mwsOverviewPcnName === '') { $mwsOverviewPcnName = $mwsOverviewPcnRef; } } elseif ($mwsOverviewPcnName === '') { $mwsOverviewPcnRef = 'PCN #'.$mwsOverviewPcnId; $mwsOverviewPcnName = $mwsOverviewPcnRef; } } @endphp {{ $mwsOverviewPcnName !== '' ? $mwsOverviewPcnName : ($mwsOverviewPcnRef !== '' ? $mwsOverviewPcnRef : '—') }} @if ($mwsOverviewKindMark !== '') {{ $mwsOverviewKindMark }} @endif @if ($link->project && $link->project->adp_number !== null && $link->project->adp_number !== '') · ADP {{ $link->project->adp_number }} @endif @if ($mwsSchemeUid !== '—') · {{ $mwsSchemeUid }} @endif @if ($mwsOverviewPcnRef !== '' && $mwsOverviewPcnName !== '' && $mwsOverviewPcnRef !== $mwsOverviewPcnName) · {{ $mwsOverviewPcnRef }} @endif @if (! empty($link->is_additional_agenda)) {{ mws_additional_agenda_label_suffix() }} @endif
  • @endforeach
@endif
@if ($meeting->description)
Instructions

{{ $meeting->description }}

@endif
@php $mwsMeetingTypeNormalized = mb_strtolower(preg_replace('/\s+/u', ' ', trim((string) ($meeting->meeting_type ?? ''))), 'UTF-8'); $mwsIsGeneralMeetingType = in_array($mwsMeetingTypeNormalized, ['general', 'rrc'], true); @endphp @unless (is_mec_role())

Documents & Actions

    @unless ($mwsIsGeneralMeetingType)
  • @php $mwsWpSchemes = ($mwsWorkingPaper['eligible'] ?? false) ? ($mwsWorkingPaper['schemes'] ?? []) : []; $mwsWpSchemeCount = count($mwsWpSchemes); @endphp @if ($mwsWpSchemeCount <= 1) @php $mwsWpScheme = $mwsWpSchemeCount === 1 ? $mwsWpSchemes[0] : null; $mwsWpSchTitle = ''; $mwsWpSchViewUrl = ''; $mwsWpSchGenerateUrl = ''; $mwsWpSchDocPreviewUrl = ''; if (is_array($mwsWpScheme)) { $mwsWpSchTitle = trim((string) ($mwsWpScheme['scheme_title'] ?? '')); if ($mwsWpSchTitle === '') { $mwsWpSchTitle = (int) ($mwsWpScheme['project_concept_note_id'] ?? 0) > 0 ? 'PCN #'.(int) $mwsWpScheme['project_concept_note_id'] : 'PC #'.(int) ($mwsWpScheme['pc_form_id'] ?? 0); } $mwsWpSchViewUrl = (string) ($mwsWpScheme['view_url'] ?? ''); $mwsWpSchGenerateUrl = (string) ($mwsWpScheme['generate_url'] ?? ''); $mwsWpSchDocPreviewUrl = (string) ($mwsWpScheme['document_preview_url'] ?? ''); } @endphp
    @if ($mwsWpSchTitle !== '') {{ $mwsWpSchTitle }} @endif
    @if ($mwsWpSchViewUrl !== '') View @elseif ($mwsWpSchGenerateUrl !== '' && is_array($mwsWpScheme) && ! empty($mwsWpScheme['can_generate_working_paper'])) Generate @endif @if ($mwsWpSchDocPreviewUrl !== '') View document @elseif ($mwsWpSchViewUrl === '' && ! ($mwsWpSchGenerateUrl !== '' && is_array($mwsWpScheme) && ! empty($mwsWpScheme['can_generate_working_paper']))) @endif
    @else @foreach ($mwsWpSchemes as $mwsWpScheme) @php $mwsWpSchTitle = trim((string) ($mwsWpScheme['scheme_title'] ?? '')); if ($mwsWpSchTitle === '') { $mwsWpSchTitle = (int) ($mwsWpScheme['project_concept_note_id'] ?? 0) > 0 ? 'PCN #'.(int) $mwsWpScheme['project_concept_note_id'] : 'PC #'.(int) ($mwsWpScheme['pc_form_id'] ?? 0); } $mwsWpSchViewUrl = (string) ($mwsWpScheme['view_url'] ?? ''); $mwsWpSchGenerateUrl = (string) ($mwsWpScheme['generate_url'] ?? ''); $mwsWpSchDocPreviewUrl = (string) ($mwsWpScheme['document_preview_url'] ?? ''); @endphp
    {{ $mwsWpSchTitle }}
    @if ($mwsWpSchViewUrl !== '') View @elseif ($mwsWpSchGenerateUrl !== '' && ! empty($mwsWpScheme['can_generate_working_paper'])) Generate @endif @if ($mwsWpSchDocPreviewUrl !== '') View document @elseif ($mwsWpSchViewUrl === '' && ! ($mwsWpSchGenerateUrl !== '' && ! empty($mwsWpScheme['can_generate_working_paper']))) @endif
    @endforeach @endif
  • @endunless
  • @if ($meeting->meetingNoticeIsViewable()) View @elseif ($mwsMayGenerateMeetingNotice ?? false) Generate @else @endif
  • @if ($mwsSchemeMom['eligible'] ?? false)
  • @php $mwsMomSchemes = $mwsSchemeMom['schemes'] ?? []; $mwsMomSchemeCount = (int) ($mwsSchemeMom['linked_scheme_count'] ?? count($mwsMomSchemes)); @endphp @forelse ($mwsMomSchemes as $mwsMomScheme) @include('meeting-workspace.meetings.partials.mom-docs-scheme-card', [ 'mwsMomScheme' => $mwsMomScheme, 'meeting' => $meeting, 'showTitle' => $mwsMomSchemeCount > 1 || trim((string) ($mwsMomScheme['scheme_title'] ?? '')) !== '', ]) @empty @endforelse
  • @endif @unless ($mwsIsGeneralMeetingType) {{-- Schedule PDWP: explicit Can Create PDWP + add + scope; completed Pre-PDWP and Hold-ON off --}} @if ($mwsSchedulePdwp['eligible'] ?? false)
  • Schedule PDWP Schedule PDWP
  • @endif {{-- Schedule DDWP: same pattern as Schedule PDWP (DDWP always; Pre-PDWP when Completed) --}} @if (($mwsScheduleDdwp['eligible'] ?? false) && can('meeting_workspace', 'add') && $mwsMayManageMeetingActions)
  • Schedule DDWP Schedule DDWP
  • @endif {{-- Forward for Advice (PDWP) / Concurrence (DDWP): Completed + MoM saved + MoM co-signatures complete (or already forwarded for View). DDWP also requires PC approved. --}} @if (($mwsAdviseLetter['eligible'] ?? false))
  • {{ $mwsAdviseLetter['title'] ?? 'Issue Advice for AA Letter' }}
      @foreach (($mwsAdviseLetter['schemes'] ?? []) as $mwsAlScheme) @php $mwsAlSchTitle = trim((string) ($mwsAlScheme['scheme_title'] ?? '')); if ($mwsAlSchTitle === '') { $mwsAlSchTitle = 'PC #'.(int) ($mwsAlScheme['pc_form_id'] ?? 0); } $mwsAlSchUrl = (string) ($mwsAlScheme['url'] ?? ''); $mwsAlSchForwarded = ! empty($mwsAlScheme['is_forwarded']); $mwsAlSchCanDecide = ! empty($mwsAdviseLetter['is_ddwp']) ? ! empty($mwsAlScheme['can_decide_concurrence']) : ! empty($mwsAlScheme['can_decide_advice']); $mwsAlSchChairmanPreview = ! empty($mwsAlScheme['can_chairman_advice_preview']); $mwsAlSchCanEditContent = ! empty($mwsAlScheme['can_edit_advice_content']); $mwsAlSchCanIssue = ! empty($mwsAlScheme['can_issue_advice']); $mwsAlSchConcApproved = ! empty($mwsAdviseLetter['is_ddwp']) ? ! empty($mwsAlScheme['concurrence_approved']) : ! empty($mwsAlScheme['advice_approved']); $mwsAlSchConcReturned = ! empty($mwsAdviseLetter['is_ddwp']) ? ! empty($mwsAlScheme['concurrence_returned']) : ! empty($mwsAlScheme['advice_returned']); $mwsAlSchReturnRemarks = trim((string) ($mwsAlScheme['return_remarks'] ?? '')); $mwsAlSchReturnBy = trim((string) ($mwsAlScheme['return_remarks_by'] ?? '')); $mwsAlSchReturnAt = trim((string) ($mwsAlScheme['return_remarks_at'] ?? '')); $mwsAlSchPcFormId = (int) ($mwsAlScheme['pc_form_id'] ?? 0); @endphp
    • {{ $mwsAlSchTitle }} @if ($mwsAlSchConcApproved) Approved @elseif ($mwsAlSchConcReturned) Returned @endif
      @if ($mwsAlSchForwarded) @if ($mwsAlSchChairmanPreview) Advice @elseif ($mwsAlSchCanIssue) Sign & Issue View @else View @endif @if ($mwsAlSchCanDecide) @if (! empty($mwsAdviseLetter['is_ddwp'])) @else @endif @endif @elseif (! empty($mwsAdviseLetter['is_ddwp']) ? ! empty($mwsAlScheme['can_generate_concurrence']) : (! empty($mwsAlScheme['can_generate_advice']) || $mwsAlSchCanEditContent)) @if (! empty($mwsAdviseLetter['is_ddwp']) ? ! empty($mwsAlScheme['can_generate_concurrence']) : ! empty($mwsAlScheme['can_generate_advice'])) Generate @endif @if ($mwsAlSchCanEditContent) Edit content @endif @endif
      @if ($mwsAlSchConcReturned && $mwsAlSchReturnRemarks !== '')
      Return remarks
      {{ $mwsAlSchReturnRemarks }}
      @if ($mwsAlSchReturnBy !== '' || $mwsAlSchReturnAt !== '')
      @if ($mwsAlSchReturnBy !== '') By {{ $mwsAlSchReturnBy }} @endif @if ($mwsAlSchReturnAt !== '') @if ($mwsAlSchReturnBy !== '') · @endif{{ $mwsAlSchReturnAt }} @endif
      @endif
      @endif
    • @endforeach
  • @endif {{-- AA (Administrative Approval): PDWP after Forward for Advice + PC approved; DDWP after Concurrence approved + PC approved; FD sees View after AA received --}} @if (($mwsAa['eligible'] ?? false))
  • AA (Administrative Approval)
      @foreach (($mwsAa['schemes'] ?? []) as $mwsAaScheme) @php $mwsAaSchTitle = trim((string) ($mwsAaScheme['scheme_title'] ?? '')); if ($mwsAaSchTitle === '') { $mwsAaSchTitle = 'PC #'.(int) ($mwsAaScheme['pc_form_id'] ?? 0); } $mwsAaSchUrl = (string) ($mwsAaScheme['url'] ?? ''); $mwsAaSchForwarded = ! empty($mwsAaScheme['is_forwarded']); $mwsAaSchCanGenerate = ! empty($mwsAaScheme['can_generate']); $mwsAaSchCanRequest = ! empty($mwsAaScheme['can_request']); $mwsAaSchAlready = ! empty($mwsAaScheme['already_requested']); @endphp
    • {{ $mwsAaSchTitle }} @if ($mwsAaSchForwarded) View @elseif ($mwsAaSchCanGenerate) Generate @elseif ($mwsAaSchCanRequest) @elseif ($mwsAaSchAlready) Already Requested @if ($mwsAaSchUrl !== '') View @endif @elseif ($mwsAaSchUrl !== '') View @endif
    • @endforeach
  • @endif {{-- Authentication of AA: FD generate/view after AA received; department approvers view after Finance returns auth letter --}} @if (($mwsAaAuth['eligible'] ?? false))
  • Authentication of AA
      @foreach (($mwsAaAuth['schemes'] ?? []) as $mwsAaAuthScheme) @php $mwsAaAuthSchTitle = trim((string) ($mwsAaAuthScheme['scheme_title'] ?? '')); if ($mwsAaAuthSchTitle === '') { $mwsAaAuthSchTitle = 'PC #'.(int) ($mwsAaAuthScheme['pc_form_id'] ?? 0); } $mwsAaAuthSchUrl = (string) ($mwsAaAuthScheme['url'] ?? ''); $mwsAaAuthSchForwarded = ! empty($mwsAaAuthScheme['is_forwarded']); $mwsAaAuthSchCanGenerate = ! empty($mwsAaAuthScheme['can_generate']); @endphp
    • {{ $mwsAaAuthSchTitle }} @if ($mwsAaAuthSchForwarded) View @elseif ($mwsAaAuthSchCanGenerate) Generate @elseif ($mwsAaAuthSchUrl !== '') View @endif
    • @endforeach
  • @endif @endunless
@endunless {{-- ===== WORKFLOW DEBUG TRIGGER (PMS_WORKFLOW_DEBUG=true) — hidden, placed at page bottom via JS ===== --}} @if (!empty($workflowDebug)) @endif {{-- ===== END WORKFLOW DEBUG TRIGGER ===== --}} @php // PC Review & Decision: scheme forum meetings (Pre-PDWP / PDWP / DDWP). PC-I PDWP chairman card // needs advise-forward; PCN PDWP uses MoM co-signatures complete instead (no Forward for Advice step). $mwsPcDecisionCardSchemeForum = in_array( \App\Services\PC\MwsSchemeMeetingWorkflowHelper::normalizeWorkflowType((string) ($meeting->meeting_type ?? '')), ['pre-pdwp', 'pdwp', 'ddwp'], true ); $mwsPcDecisions = isset($mwsLinkedPcFormDecisions) && is_array($mwsLinkedPcFormDecisions) ? $mwsLinkedPcFormDecisions : []; $mwsHasAnyPcDecision = count($mwsPcDecisions) > 0; $mwsAnyAdviseForwardedScheme = (bool) $meeting->mws_advise_forwarded_at; foreach ($mwsPcDecisions as $_mwsPcRow) { if (! empty($_mwsPcRow['advise_forwarded'])) { $mwsAnyAdviseForwardedScheme = true; break; } if (! empty($_mwsPcRow['chairman_decision_ready'])) { $mwsAnyAdviseForwardedScheme = true; break; } } // Forwarded-advise “chairman-style” card: matches MeetingWorkspaceMeetingController::viewerIsMwsForwardedChairmanPcDecision() (can_approve, not mailbox). $mwsShowPcFormDecisionCard = $mwsPcDecisionCardSchemeForum && $mwsHasAnyPcDecision && $mwsAnyAdviseForwardedScheme && auth()->check() && ! empty($mwsViewerMaySeeChairmanPcDecisionCard); // PC Approver card (no can_approve): visible ONLY to the meeting organizer. PnD organizer sees it while // Forward for Advice is still pending, and keeps it visible after forwarding so each linked scheme/PC // form remains listed. Chairman / can_approve card is untouched. $mwsIsPndRoleViewerBlade = auth()->check() && strtolower((string) (optional(auth()->user()->role)->slug ?? '')) === 'pnd'; $mwsIsMeetingOrganizerForApproverPcCard = auth()->check() && (int) auth()->id() === (int) ($meeting->organizer_user_id ?? 0); $mwsAdviseForwardBtnVisibleForApproverPcCard = ($mwsAdviseLetter['eligible'] ?? false) && $mwsMayManageMeetingActions; if ($mwsAdviseForwardBtnVisibleForApproverPcCard) { $mwsAdviseForwardBtnVisibleForApproverPcCard = false; foreach (($mwsAdviseLetter['schemes'] ?? []) as $_mwsAlSch) { if (empty($_mwsAlSch['is_forwarded'])) { $mwsAdviseForwardBtnVisibleForApproverPcCard = true; break; } } } $mwsPndHasForwardedSchemeForOrganizer = false; if ($mwsIsPndRoleViewerBlade && $mwsIsMeetingOrganizerForApproverPcCard) { foreach ($mwsPcDecisions as $_mwsPcRow) { if (! empty($_mwsPcRow['advise_forwarded'])) { $mwsPndHasForwardedSchemeForOrganizer = true; break; } } if (! $mwsPndHasForwardedSchemeForOrganizer) { foreach (($mwsAdviseLetter['schemes'] ?? []) as $_mwsAlSch) { if (! empty($_mwsAlSch['is_forwarded'])) { $mwsPndHasForwardedSchemeForOrganizer = true; break; } } } } $mwsPdwpMomReadyForForumCard = false; if ($mwsPcDecisionCardSchemeForum && \App\Services\PC\MwsSchemeMeetingWorkflowHelper::normalizeWorkflowType((string) ($meeting->meeting_type ?? '')) === 'pdwp' ) { foreach ($mwsPcDecisions as $_r) { if (! empty($_r['mom_signatures_complete']) && (! empty($_r['show_defer']) || ! empty($_r['show_approve']))) { $mwsPdwpMomReadyForForumCard = true; break; } } } $mwsPndApproverPcCardGate = $mwsIsPndRoleViewerBlade && $mwsIsMeetingOrganizerForApproverPcCard && ($mwsAdviseForwardBtnVisibleForApproverPcCard || $mwsPndHasForwardedSchemeForOrganizer || $mwsPdwpMomReadyForForumCard); $mwsWpGeneratedForApproverPcCard = ($mwsWorkingPaper['eligible'] ?? false) && ! empty($mwsWorkingPaper['is_finalized']); $mwsNoticeGeneratedForApproverPcCard = $meeting->meetingNoticeIsViewable(); $mwsAnySchemeMomSavedForApproverPcCard = false; foreach (($mwsSchemeMom['schemes'] ?? []) as $_mwsMomSchRow) { if (! empty($_mwsMomSchRow['is_finalized'])) { $mwsAnySchemeMomSavedForApproverPcCard = true; break; } } $mwsMomGeneratedForApproverPcCard = ($mwsSchemeMom['eligible'] ?? false) && $mwsAnySchemeMomSavedForApproverPcCard; $mwsApproverPcCardArtifactGate = ($meeting->status === \App\MeetingWorkspace\MeetingLifecycleStatus::Completed) && $mwsWpGeneratedForApproverPcCard && $mwsNoticeGeneratedForApproverPcCard && $mwsMomGeneratedForApproverPcCard; // Per scheme: decision / Forward rows appear when that scheme's MoM co-signatures are complete (or already forwarded). $mwsPcDecisionRowMomReady = static function (array $row): bool { return ! empty($row['mom_signatures_complete']) || ! empty($row['advise_forwarded']) || ! empty($row['chairman_decision_ready']); }; $mwsHasPcDecisionRowMomReady = false; foreach ($mwsPcDecisions as $_r) { if ($mwsPcDecisionRowMomReady($_r) && (! empty($_r['show_approve']) || ! empty($_r['show_advise_approve']) || ! empty($_r['show_defer']) || ! empty($_r['show_return']))) { $mwsHasPcDecisionRowMomReady = true; break; } } $mwsApproverPcFormDecisionCard = $mwsPcDecisionCardSchemeForum && auth()->check() && ! can('pc-forms', 'can_approve') && empty($mwsViewerMaySeeChairmanPcDecisionCard) && $mwsHasAnyPcDecision && $mwsIsMeetingOrganizerForApproverPcCard && ($mwsApproverPcCardArtifactGate || $mwsPndApproverPcCardGate) && $mwsHasPcDecisionRowMomReady; // DDWP: can_department_approve (not chairman / can_approve) gets chairman-style Approve + Defer. // Checkers must already be complete; department/approve counts enforced on submit. $mwsIsDdwpMeetingBlade = \App\Services\PC\MwsSchemeMeetingWorkflowHelper::normalizeWorkflowType((string) ($meeting->meeting_type ?? '')) === 'ddwp'; $mwsMayDdwpDepartmentPcDecision = can('pc-forms', 'can_department_approve') || ( can('project-concept-notes', \App\Support\PcnWorkflowAction::CAN_APPROVE) && ! can('project-concept-notes', \App\Support\PcnWorkflowAction::CAN_APPROVE_WITHOUT_DEPARTMENT_SCOPE) ); $mwsShowDdwpDepartmentPcFormDecisionCard = $mwsPcDecisionCardSchemeForum && $mwsIsDdwpMeetingBlade && auth()->check() && $mwsMayDdwpDepartmentPcDecision && ! can('pc-forms', 'can_approve') && ! can('project-concept-notes', \App\Support\PcnWorkflowAction::CAN_APPROVE_WITHOUT_DEPARTMENT_SCOPE) && ! $mwsIsPndRoleViewerBlade && $mwsHasAnyPcDecision && $mwsApproverPcCardArtifactGate && $mwsHasPcDecisionRowMomReady; $mwsPcDecisionRowShowsChairmanCard = static function (array $row) use ($mwsShowDdwpDepartmentPcFormDecisionCard): bool { if (! empty($mwsShowDdwpDepartmentPcFormDecisionCard)) { return true; } if (! empty($row['is_pcn'])) { return ! empty($row['chairman_decision_ready']); } return ! empty($row['advise_forwarded']); }; if ($mwsShowDdwpDepartmentPcFormDecisionCard) { $mwsShowPcFormDecisionCard = true; // Keep chairman-style Approve (final scheme) + Hold/modify path; do not use organizer-only card. $mwsApproverPcFormDecisionCard = false; } // Decision strip visibility: any scheme still has approve/defer UI (after per-scheme MoM gate). $mwsApproverPcShowDecisionActions = false; foreach ($mwsPcDecisions as $_r) { if ($mwsPcDecisionRowMomReady($_r) && (! empty($_r['show_approve']) || ! empty($_r['show_advise_approve']) || ! empty($_r['show_defer']) || ! empty($_r['show_return']))) { $mwsApproverPcShowDecisionActions = true; break; } } $mwsAnyRowShowDefer = false; foreach ($mwsPcDecisions as $_r) { if ($mwsPcDecisionRowMomReady($_r) && ! empty($_r['show_defer'])) { $mwsAnyRowShowDefer = true; break; } } $mwsDeferWorkflowType = \App\Services\PC\MwsSchemeMeetingWorkflowHelper::normalizeWorkflowType((string) ($meeting->meeting_type ?? '')); $mwsPdwpForumOrganizerActions = in_array($mwsDeferWorkflowType, ['pre-pdwp', 'pdwp', 'ddwp'], true) && ! empty($mwsApproverPcFormDecisionCard) && $mwsHasAnyPcDecision; $mwsShowPcFormApproveModal = false; if ($mwsShowPcFormDecisionCard && $mwsHasAnyPcDecision) { foreach ($mwsPcDecisions as $_r) { if (! empty($_r['show_approve'])) { $mwsShowPcFormApproveModal = true; break; } } } if (! empty($mwsPdwpForumOrganizerActions)) { $mwsShowPcFormApproveModal = true; } $mwsShowPcFormDeferModal = $mwsHasAnyPcDecision && $mwsAnyRowShowDefer && ($mwsShowPcFormDecisionCard || $mwsApproverPcFormDecisionCard); $mwsDeferRemarksMeetingTypeLabel = trim((string) ($meeting->meeting_type ?? '')); if ($mwsDeferRemarksMeetingTypeLabel === '') { $mwsDeferRemarksMeetingTypeLabel = 'meeting'; } $mwsPcDeferDefaultRemarks = 'Approved with the direction to submit modified PC as per '.$mwsDeferRemarksMeetingTypeLabel.' minutes'; // Defer modal: chairman opens empty; PnD organizer + DDWP department Hold mode autofill modify remarks. // Hold OFF (default) → Approve with modification remarks; Hold ON → clear remarks + Defer. // Pre-PDWP / DDWP: organizer (PnD) uses the same Approve button + modal as Hold mode. PDWP uses three forum actions. $mwsDeferApproveHoldMode = false; $mwsShowDeferHoldSwitch = false; $mwsDeferHoldDefaultOn = false; $mwsPcDeferModalPrefillRemarks = $mwsDeferApproveHoldMode ? $mwsPcDeferDefaultRemarks : ($mwsShowPcFormDecisionCard && empty($mwsShowDdwpDepartmentPcFormDecisionCard) ? '' : $mwsPcDeferDefaultRemarks); $mwsPcFormIdsForDeferredCheck = []; $mwsPcnIdsForDeferredCheck = []; foreach ($mwsPcDecisions as $_r) { $fid = (int) ($_r['pc_form_id'] ?? 0); if ($fid > 0) { $mwsPcFormIdsForDeferredCheck[] = $fid; } $pcnId = (int) ($_r['project_concept_note_id'] ?? 0); if ($pcnId > 0) { $mwsPcnIdsForDeferredCheck[] = $pcnId; } } $mwsPcFormIdsForDeferredCheck = array_values(array_unique($mwsPcFormIdsForDeferredCheck)); $mwsPcnIdsForDeferredCheck = array_values(array_unique($mwsPcnIdsForDeferredCheck)); $mwsHasPcDeferredFromThisMeeting = ($mwsPcFormIdsForDeferredCheck !== [] && \App\Models\PC\PcFormReview::query() ->whereIn('pc_form_id', $mwsPcFormIdsForDeferredCheck) ->where('mws_meeting_id', $meeting->id) ->whereIn('action', [\App\Models\PC\PcFormReview::ACTION_DEFERRED, \App\Models\PC\PcFormReview::ACTION_REJECTED]) ->exists()) || ($mwsPcnIdsForDeferredCheck !== [] && \App\Models\PC\Pcn\PcnReview::query() ->whereIn('project_concept_note_id', $mwsPcnIdsForDeferredCheck) ->where('mws_meeting_id', $meeting->id) ->whereIn('action', [\App\Models\PC\Pcn\PcnReview::ACTION_DEFERRED, \App\Models\PC\Pcn\PcnReview::ACTION_REJECTED]) ->exists()); $mwsShowPcDeferDirectionBanner = $mwsPcDecisionCardSchemeForum && $mwsHasAnyPcDecision && ( $mwsAnyRowShowDefer || $mwsAnyAdviseForwardedScheme || $mwsHasPcDeferredFromThisMeeting ); $mwsShowPcDecisionSectionAny = $mwsShowPcFormDecisionCard || $mwsApproverPcFormDecisionCard; $mwsDeferSigAnyShowPane = false; foreach ($mwsPcDecisions as $_r) { $dctx = $_r['defer_signature_context'] ?? []; if ($mwsPcDecisionRowMomReady($_r) && ! empty($dctx['show_pane'])) { $mwsDeferSigAnyShowPane = true; break; } } // PC Review & Decision — forum outcomes after MoM complete. @endphp @if ($mwsShowPcFormDecisionCard)

PC Review & Decision

    @if (! empty($mwsShowDdwpDepartmentPcFormDecisionCard) && $mwsShowPcDeferDirectionBanner)
  • Note

    {{ $mwsPcDeferDefaultRemarks }}

  • @endif @foreach ($mwsPcDecisions as $mwsPc) @if ($mwsPcDecisionRowShowsChairmanCard($mwsPc) && $mwsPcDecisionRowMomReady($mwsPc)) @php $mwsPcRowShowDecisionActions = ! empty($mwsPc['show_approve']) || ! empty($mwsPc['show_advise_approve']) || ! empty($mwsPc['show_defer']) || ! empty($mwsPc['show_return']); $mwsPcRowActionsEnabled = $mwsPcRowShowDecisionActions && ! empty($mwsPc['decision_actions_enabled']); $mwsPcRowActionsDisabledTitle = e($mwsPc['mom_signature_gate_message'] ?? 'Complete Minutes of Meeting signatures first.'); @endphp
  • Linked {{ $mwsPc['kind_label'] ?? 'PC' }}
    Workflow: {{ $mwsPc['workflow_label'] ?? '' }}
    @if (! empty($mwsPc['show_defer_repeat_meeting_status'] ?? $mwsPc['show_defer_repeat_pre_pdwp_status'] ?? false))
    {{ $mwsPc['defer_repeat_meeting_type_label'] ?? 'Pre-PDWP' }} after resubmission: {{ ! empty($mwsPc['defer_repeat_meeting_flag'] ?? $mwsPc['defer_repeat_pre_pdwp_meeting'] ?? false) ? 'Yes' : 'No' }}
    @endif
    @if ($mwsPcRowShowDecisionActions)
    @if ($mwsPcRowActionsEnabled) @if (! empty($mwsPc['show_approve'])) @endif @if (! empty($mwsPc['show_advise_approve'])) @endif @if (! empty($mwsPc['show_defer'])) @if (! empty($mwsShowDdwpDepartmentPcFormDecisionCard) && ! empty($mwsDeferApproveHoldMode)) @else {{-- Same Bootstrap data-toggle path as Approve (modal must exist when show_defer is true). --}} @endif @endif @if (! empty($mwsPc['show_return'])) @endif @else @if (! empty($mwsPc['show_approve'])) @endif @if (! empty($mwsPc['show_advise_approve'])) @endif @if (! empty($mwsPc['show_defer'])) @endif @if (! empty($mwsPc['show_return'])) @endif @endif
    @endif
  • @endif @endforeach
@endif @if ($mwsApproverPcFormDecisionCard)

PC Review & Decision

    @if ($mwsShowPcDecisionSectionAny && $mwsShowPcDeferDirectionBanner && ! $mwsAnyAdviseForwardedScheme && empty($mwsPdwpForumOrganizerActions))
  • Note

    {{ $mwsPcDeferDefaultRemarks }}

  • @endif @foreach ($mwsPcDecisions as $mwsPc) @if ($mwsPcDecisionRowMomReady($mwsPc))
  • Linked {{ $mwsPc['kind_label'] ?? 'PC' }}
    Workflow: {{ $mwsPc['workflow_label'] ?? '' }}
    @if (! empty($mwsPc['show_defer_repeat_meeting_status'] ?? $mwsPc['show_defer_repeat_pre_pdwp_status'] ?? false))
    {{ $mwsPc['defer_repeat_meeting_type_label'] ?? 'Pre-PDWP' }} after resubmission: {{ ! empty($mwsPc['defer_repeat_meeting_flag'] ?? $mwsPc['defer_repeat_pre_pdwp_meeting'] ?? false) ? 'Yes' : 'No' }}
    @endif
    @if (! empty($mwsPdwpForumOrganizerActions) && $mwsPcDecisionRowMomReady($mwsPc) && empty($mwsPc['advise_forwarded'])) @php $mwsOrganizerDeferEnabled = ! empty($mwsPc['mom_signatures_complete']); $mwsOrganizerDeferDisabledTitle = e($mwsPc['mom_signature_gate_message'] ?? 'Complete Minutes of Meeting signatures first.'); @endphp
    @if (! empty($mwsPdwpForumOrganizerActions)) @if ($mwsOrganizerDeferEnabled) @if ($mwsDeferWorkflowType === 'pdwp' || $mwsDeferWorkflowType === 'ddwp') @endif @else @if ($mwsDeferWorkflowType === 'pdwp' || $mwsDeferWorkflowType === 'ddwp') @endif @endif @else @php $mwsOrganizerDeferBtnLabel = ! empty($mwsDeferApproveHoldMode) ? 'Approve' : 'Defer'; $mwsOrganizerDeferBtnIcon = ! empty($mwsDeferApproveHoldMode) ? 'fa-check' : 'fa-pause'; @endphp @if ($mwsOrganizerDeferEnabled) @else @endif @endif
    @endif
  • @endif @endforeach
@endif @php $mwsShowScheduleAck = $meeting->status === \App\MeetingWorkspace\MeetingLifecycleStatus::Scheduled; $mwsShowScheduleAckStatus = $mwsShowScheduleAck || in_array( $meeting->status, [ \App\MeetingWorkspace\MeetingLifecycleStatus::Confirmed, \App\MeetingWorkspace\MeetingLifecycleStatus::Ongoing, \App\MeetingWorkspace\MeetingLifecycleStatus::Completed, \App\MeetingWorkspace\MeetingLifecycleStatus::Cancelled, \App\MeetingWorkspace\MeetingLifecycleStatus::Missed, \App\MeetingWorkspace\MeetingLifecycleStatus::Rescheduled, ], true ); $mwsSelfScheduleAckParticipant = null; if ($mwsShowScheduleAck && auth()->check()) { $mwsSelfScheduleAckParticipant = $meeting->participants->first(function ($participant) { return $participant->user_id && (int) auth()->id() === (int) $participant->user_id; }); } $mwsScheduleRejectFormAction = $mwsSelfScheduleAckParticipant ? route('meeting-workspace.meetings.participants.schedule-ack', [$meeting, $mwsSelfScheduleAckParticipant]) : ''; @endphp

Participants

    @forelse ($meeting->participants as $p) @php $mwsAck = $p->schedule_ack_status; $mwsCanRespond = $mwsShowScheduleAck && $p->user_id && auth()->check() && (int) auth()->id() === (int) $p->user_id && ($mwsAck === null || $mwsAck === \App\MeetingWorkspace\MwsScheduleAckStatus::Pending); $mwsParticipantDisplayName = $p->displayName(); @endphp
  • {{ $mwsParticipantDisplayName !== '' ? $mwsParticipantDisplayName : '—' }}
    @if ($mwsShowScheduleAckStatus && $p->user_id && $mwsAck === \App\MeetingWorkspace\MwsScheduleAckStatus::Rejected && filled($p->schedule_ack_reason))
    Reason: {{ $p->schedule_ack_reason }}
    @endif
    {{ $p->role->label() }}
    @if ($mwsShowScheduleAckStatus && $p->user_id) @if ($mwsAck === \App\MeetingWorkspace\MwsScheduleAckStatus::Accepted) Accepted @elseif ($mwsAck === \App\MeetingWorkspace\MwsScheduleAckStatus::Rejected) Deferred @else Pending @endif @if ($mwsCanRespond)
    @csrf
    @endif @elseif ($mwsShowScheduleAckStatus) @endif
  • @empty
  • No participants listed.
  • @endforelse
@auth @if ($mwsShowScheduleAck) @endif @endauth

Reminders

    @forelse ($meeting->reminders as $r)
  • {{ $r->remind_at->format('Y-m-d H:i') }}
    {{ $r->channel->label() }} · {{ $r->status->label() }}
  • @empty
  • No reminders.
  • @endforelse
@if ($mwsShowCancelMeeting) @endif @if ($mwsShowPcFormApproveModal) @endif @if ($mwsShowPcFormDeferModal) @php $mwsPcDecisionsForDeferCtx = isset($mwsLinkedPcFormDecisions) && is_array($mwsLinkedPcFormDecisions) ? $mwsLinkedPcFormDecisions : []; $mwsDeferSigCtxRow = null; foreach ($mwsPcDecisionsForDeferCtx as $_r) { if (! empty($_r['show_defer'])) { $mwsDeferSigCtxRow = $_r; break; } } if ($mwsDeferSigCtxRow === null) { $mwsDeferSigCtxRow = $mwsPcDecisionsForDeferCtx[0] ?? []; } $mwsDeferSigCtx = $mwsDeferSigCtxRow['defer_signature_context'] ?? []; $mwsDeferSigShowPane = ! empty($mwsDeferSigCtx['show_pane']); $mwsDeferSigHasSaved = ! empty($mwsDeferSigCtx['has_saved_signature']); $mwsDeferSigSavedUrl = (string) ($mwsDeferSigCtx['saved_signature_url'] ?? ''); $mwsDeferSigRequiredCapture = ! empty($mwsDeferSigCtx['required']); $mwsDeferSigUseSavedInitial = ($mwsDeferSigShowPane && $mwsDeferSigHasSaved) ? '1' : '0'; @endphp @endif @if (($mwsAdviseLetter['eligible'] ?? false)) @if (empty($mwsAdviseLetter['is_ddwp'])) @endif @endif {{-- ===== WORKFLOW DEBUG MODAL (PMS_WORKFLOW_DEBUG=true) ===== --}} @if (!empty($workflowDebug)) @php $wd = $workflowDebug; @endphp @endif {{-- ===== END WORKFLOW DEBUG MODAL ===== --}} {{-- AA request (dept approver) from status card — workflow signature only --}} @endsection @push('scripts') @if (can('meeting_workspace', 'edit') && ($mwsMayManageMeetingActions ?? false) && $meeting->status === \App\MeetingWorkspace\MeetingLifecycleStatus::Scheduled) @endif @if ($meeting->status === \App\MeetingWorkspace\MeetingLifecycleStatus::Scheduled) @endif @if ($mwsShowCancelMeeting ?? false) @endif @if ($mwsShowPcFormDecisionCard || $mwsApproverPcFormDecisionCard) @php $mwsPcDecisionsForScript = isset($mwsLinkedPcFormDecisions) && is_array($mwsLinkedPcFormDecisions) ? $mwsLinkedPcFormDecisions : []; $deferSigByFormId = []; $deferSigByPcnId = []; $kindLabelByFormId = []; $kindLabelByPcnId = []; foreach ($mwsPcDecisionsForScript as $row) { $pfid = (int) ($row['pc_form_id'] ?? 0); $pcnId = (int) ($row['project_concept_note_id'] ?? 0); if ($pfid > 0) { $deferSigByFormId[(string) $pfid] = $row['defer_signature_context'] ?? []; $kindLabelByFormId[(string) $pfid] = (string) ($row['kind_label'] ?? 'PC'); } elseif ($pcnId > 0) { $deferSigByPcnId[(string) $pcnId] = $row['defer_signature_context'] ?? []; $kindLabelByPcnId[(string) $pcnId] = (string) ($row['kind_label'] ?? 'PCN'); } } $mwsDeferSigForScript = ($mwsLinkedPcFormDecision ?? [])['defer_signature_context'] ?? []; if (($mwsDeferSigForScript['show_pane'] ?? false) === false && $mwsPcDecisionsForScript !== []) { $mwsDeferSigForScript = $mwsPcDecisionsForScript[0]['defer_signature_context'] ?? []; } foreach ($deferSigByFormId as $ds) { if (! empty($ds['show_pane'])) { $mwsDeferSigForScript = $ds; break; } } if (($mwsDeferSigForScript['show_pane'] ?? false) === false) { foreach ($deferSigByPcnId as $ds) { if (! empty($ds['show_pane'])) { $mwsDeferSigForScript = $ds; break; } } } $mwsDeferSigShowPaneForScript = ! empty($mwsDeferSigForScript['show_pane']); @endphp @if ($mwsShowPcFormApproveModal || ($mwsShowPcFormDeferModal && ($mwsDeferSigAnyShowPane ?? false))) @endif @php $mwsPcDecisionJs = [ 'approveUrl' => ($mwsLinkedPcFormDecision ?? [])['approve_url'] ?? null, 'deferUrl' => ($mwsLinkedPcFormDecision ?? [])['defer_url'] ?? null, 'showApprove' => (bool) $mwsShowPcFormApproveModal, 'showDefer' => (bool) $mwsShowPcFormDeferModal, 'chairmanHasSavedSignature' => ! empty(($mwsLinkedPcFormDecision ?? [])['chairman_has_saved_signature']), 'chairmanSavedSignatureUrl' => (string) (($mwsLinkedPcFormDecision ?? [])['chairman_saved_signature_url'] ?? ''), 'deferSignature' => [ 'show_pane' => $mwsDeferSigShowPaneForScript, 'required' => ! empty($mwsDeferSigForScript['required']), 'has_saved_signature' => ! empty($mwsDeferSigForScript['has_saved_signature']), 'saved_signature_url' => (string) ($mwsDeferSigForScript['saved_signature_url'] ?? ''), ], 'deferSignatureByFormId' => $deferSigByFormId, 'deferSignatureByPcnId' => $deferSigByPcnId, 'kindLabelByFormId' => $kindLabelByFormId, 'kindLabelByPcnId' => $kindLabelByPcnId, 'linkedPcFormCount' => count($mwsPcDecisionsForScript), ]; @endphp @endif @if (($mwsAdviseLetter['eligible'] ?? false)) @include('pc-forms.partials.workflow-signature-pad-scripts') @endif @endpush