@extends('layouts.app') @section('title', $tender->title) @section('page-title','Detail Tender') @section('breadcrumb') /Data Tender /{{ $tender->code }} @endsection @section('content') {{-- ====================================================== HEADER ====================================================== --}}
{{ $tender->code }} @if($tender->days_until_deadline !== null) @php $days = $tender->days_until_deadline; $dlClass = $days < 0 ? 'badge badge-error' : ($days <= 3 ? 'badge badge-error' : ($days <= 7 ? 'badge badge-warning' : 'badge badge-success')); @endphp {{ $tender->deadline_label }} @endif

{{ $tender->title }}

{{ $tender->client?->name }} · {{ $tender->category?->name }}

@can('create_tenders')
@csrf
@endcan @can('update_tenders') Edit Tender @endcan @can('delete_tenders') @endcan
{{-- ====================================================== STATUS STEPPER — Tender Workflow Pipeline ====================================================== --}} @php $stepLabels = [ 'draft' => 'Draft', 'identified' => 'Identified', 'qualification' => 'Qualification', 'preparation' => 'Preparation', 'submitted' => 'Submitted', 'evaluation' => 'Evaluation', 'clarification' => 'Clarification', 'negotiation' => 'Negotiation', 'won' => 'Won / Lost', ]; $currentStep = $tender->status->stepIndex(); $isCancelled = $tender->status->value === 'cancelled'; $isCompleted = in_array($tender->status->value, ['completed']); $isWon = $tender->status->value === 'won'; $isLost = $tender->status->value === 'lost'; @endphp
@if($isCancelled)
Tender ini telah Dibatalkan.
@elseif($isCompleted)
Tender ini telah Completed.
@else
@foreach($stepLabels as $stepKey => $stepName) @php $stepIdx = array_search($stepKey, array_keys($stepLabels)); $isDone = $currentStep > $stepIdx; $isCurrent = $currentStep === $stepIdx || ($stepIdx === 8 && in_array($tender->status->value, ['won','lost'])); $isFuture = $currentStep < $stepIdx && !($stepIdx === 8 && in_array($tender->status->value, ['won','lost'])); $isLast = $stepIdx === count($stepLabels) - 1; // Special: won/lost share step 8 if ($stepKey === 'won') { $isDone = in_array($tender->status->value, ['completed']); $isCurrent = in_array($tender->status->value, ['won','lost']); } @endphp
{{-- Node --}}
@if($isDone)
@elseif($isCurrent)
@else
@endif
{{-- Label --}} @if($stepKey === 'won') @if($isWon) Won @elseif($isLost) Lost @else Won / Lost @endif @else {{ $stepName }} @endif
{{-- Connector line --}} @if(!$isLast)
@endif @endforeach
@endif
{{-- ====================================================== MAIN GRID ====================================================== --}}
{{-- ================================================ LEFT COLUMN — Detail + Proposals + Documents ================================================ --}}
{{-- Info Card --}}

Informasi Tender

{{-- Non-financial fields --}} @foreach([ ['Klien', $tender->client?->name], ['Kategori', $tender->category?->name], ['PIC', $tender->pic?->name], ['Backup PIC', $tender->backupPic?->name ?? '—'], ['Lokasi', $tender->location], ['Sumber', $tender->source], ['Tanggal Diterima',$tender->received_date?->format('d M Y')], ['Deadline', $tender->submission_deadline?->format('d M Y, H:i')], ] as [$lbl, $val])

{{ $lbl }}

{{ $val ?? '—' }}

@endforeach {{-- FINANCIAL FIELD — masked, loaded via AJAX --}}
@if($tender->description)

Deskripsi

{{ $tender->description }}

@endif @if($tender->notes)

Catatan

{{ $tender->notes }}

@endif @if($tender->lost_reason)

Alasan Kalah

{{ $tender->lost_reason }}

@endif
{{-- Proposals --}}

Proposal {{ $tender->proposals->count() }}

@can('create_proposals') Tambah @endcan
@if($tender->proposals->isEmpty())
Belum ada proposal
@else
@foreach($tender->proposals as $p) @endforeach
Kode Judul Versi PIC Status Deadline
{{ $p->code }} {{ $p->title }} V{{ $p->current_version }} {{ $p->pic?->name ?? '—' }} {{ $p->deadline?->format('d M Y') ?? '—' }}
@endif
{{-- Documents --}}

Dokumen {{ $tender->documents->count() }}

@can('upload_documents') Upload @endcan
@if($tender->documents->isEmpty())
Belum ada dokumen
@else
@foreach($tender->documents as $doc) @endforeach
Nama Kategori Ukuran Upload

{{ $doc->name }}

{{ $doc->original_name }}

{{ $doc->category?->name ?? '—' }} {{ $doc->file_size_formatted }} {{ $doc->uploader?->name }} · {{ $doc->created_at->format('d M') }}
@can('download_documents') @endcan @can('delete_documents') @endcan
@endif
{{-- end left col --}} {{-- ================================================ RIGHT COLUMN — Status Change + History ================================================ --}}
{{-- Change Status --}} @can('change_tender_status') @if(!empty($allowedTransitions))

Ubah Status

@csrf
{{-- Alasan kalah — only shows when lost selected --}}
@else

@if(in_array($tender->status->value, ['completed','cancelled'])) Status {{ $tender->status->label() }} adalah status final. @else Tidak ada transisi status yang tersedia. @endif

@endif @endcan {{-- Status History Timeline --}}

Riwayat Status

@forelse($tender->statusHistories->reverse() as $h)

{{ $h->created_at->format('d M Y, H:i') }}

@if($h->from_status) {{ ucfirst(str_replace('_', ' ', $h->from_status)) }} → @endif {{ ucfirst(str_replace('_', ' ', $h->to_status)) }}

@if($h->notes)

{{ $h->notes }}

@endif

{{ $h->changedBy?->name }}

@empty

Belum ada riwayat.

@endforelse
{{-- Meta --}}

Informasi Lainnya

Dibuat oleh {{ $tender->creator?->name ?? '—' }}
Dibuat pada {{ $tender->created_at->format('d M Y, H:i') }}
Diperbarui oleh {{ $tender->updater?->name ?? '—' }}
Diperbarui pada {{ $tender->updated_at->format('d M Y, H:i') }}
@if($tender->project_start_date)
Mulai Proyek {{ $tender->project_start_date->format('d M Y') }}
@endif @if($tender->project_end_date)
Selesai Proyek {{ $tender->project_end_date->format('d M Y') }}
@endif
{{-- end right col --}}
@endsection