Files
lis/htdocs/resources/views/admin/biorepository.blade.php
T
2026-02-21 05:12:55 +07:00

290 lines
13 KiB
PHP

@extends('base.layout')
@push('styles')
<style>
.bio-summary-card {
border-left: 4px solid #188ae2;
}
.cabinet-visual {
border: 2px solid #2d3e50;
border-radius: 12px;
background: #f7fbff;
padding: 15px;
margin-bottom: 18px;
}
.rack-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
gap: 12px;
}
.rack-box {
border: 1px solid #d7e3ef;
border-radius: 10px;
background: #ffffff;
padding: 12px;
min-height: 180px;
}
.rack-header {
font-weight: 700;
color: #1b3a57;
margin-bottom: 6px;
}
.specimen-preview {
margin: 0;
padding-left: 15px;
font-size: 12px;
}
.specimen-preview li {
margin-bottom: 4px;
}
.oldest-highlight {
border: 1px solid #ffd58f;
background: #fff8ea;
border-radius: 10px;
padding: 12px;
}
</style>
@endpush
@section('content')
<div class="wrapper">
<div class="container-fluid">
<div class="row">
<div class="col-sm-12">
<div class="page-title-box">
<div class="btn-group pull-right">
<ol class="breadcrumb hide-phone p-0 m-0">
<li class="breadcrumb-item active">Biorepository</li>
</ol>
</div>
<h4 class="page-title">Biorepository Lab Mikrobiologi</h4>
</div>
</div>
</div>
@if(session('success'))
<div class="row">
<div class="col-lg-12">
<div class="alert alert-success">{{ session('success') }}</div>
</div>
</div>
@endif
@if($errors->any())
<div class="row">
<div class="col-lg-12">
<div class="alert alert-danger">
@foreach($errors->all() as $err)
<div>{{ $err }}</div>
@endforeach
</div>
</div>
</div>
@endif
<div class="row">
<div class="col-md-4">
<div class="card-box bio-summary-card">
<h5>Total Lemari</h5>
<h3>{{ $totalCabinets }}</h3>
</div>
</div>
<div class="col-md-4">
<div class="card-box bio-summary-card">
<h5>Total Rack</h5>
<h3>{{ $totalRacks }}</h3>
</div>
</div>
<div class="col-md-4">
<div class="card-box bio-summary-card">
<h5>Total Spesimen</h5>
<h3>{{ $totalSpecimens }}</h3>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-4">
<div class="card-box ribbon-box">
<div class="ribbon ribbon-primary">Tambah Lemari</div>
<p class="m-b-0"></p>
<form method="POST" action="{{ route('biorepository.storeCabinet') }}">
@csrf
<div class="form-group">
<label>Kode Lemari</label>
<input type="text" name="code" class="form-control" placeholder="LMR-A01" required>
</div>
<div class="form-group">
<label>Nama Lemari</label>
<input type="text" name="name" class="form-control" required>
</div>
<div class="form-group">
<label>Lokasi</label>
<input type="text" name="location" class="form-control" placeholder="Ruang kultur 1">
</div>
<div class="form-group">
<label>Catatan</label>
<textarea name="notes" class="form-control" rows="2"></textarea>
</div>
<button class="btn btn-custom btn-block" type="submit">Simpan Lemari</button>
</form>
</div>
</div>
<div class="col-lg-4">
<div class="card-box ribbon-box">
<div class="ribbon ribbon-info">Tambah Rack</div>
<p class="m-b-0"></p>
<form method="POST" action="{{ route('biorepository.storeRack') }}">
@csrf
<div class="form-group">
<label>Pilih Lemari</label>
<select name="cabinet_id" class="form-control" required>
<option value="">-- Pilih --</option>
@foreach($cabinetOptions as $cab)
<option value="{{ $cab->id }}">{{ $cab->code }} - {{ $cab->name }}</option>
@endforeach
</select>
</div>
<div class="form-group">
<label>Kode Rack</label>
<input type="text" name="code" class="form-control" placeholder="R01" required>
</div>
<div class="form-group">
<label>Nama Rack</label>
<input type="text" name="name" class="form-control" required>
</div>
<div class="form-row">
<div class="form-group col-6">
<label>Level</label>
<input type="number" name="level" class="form-control" min="1" value="1" required>
</div>
<div class="form-group col-6">
<label>Kapasitas</label>
<input type="number" name="capacity" class="form-control" min="0" value="0">
</div>
</div>
<button class="btn btn-info btn-block" type="submit">Simpan Rack</button>
</form>
</div>
</div>
<div class="col-lg-4">
<div class="card-box ribbon-box">
<div class="ribbon ribbon-success">Tambah Spesimen</div>
<p class="m-b-0"></p>
<form method="POST" action="{{ route('biorepository.storeSpecimen') }}">
@csrf
<div class="form-group">
<label>Pilih Rack</label>
<select name="rack_id" class="form-control" required>
<option value="">-- Pilih --</option>
@foreach($rackOptions as $rack)
<option value="{{ $rack->id }}">{{ $rack->cabinet->code ?? '-' }} | {{ $rack->code }} - {{ $rack->name }}</option>
@endforeach
</select>
</div>
<div class="form-group">
<label>Kode Spesimen</label>
<input type="text" name="specimen_code" class="form-control" placeholder="SP-0001" required>
</div>
<div class="form-group">
<label>Nama Spesimen</label>
<input type="text" name="specimen_name" class="form-control" placeholder="Darah, sputum, urin" required>
</div>
<div class="form-group">
<label>Nama Pasien (Opsional)</label>
<input type="text" name="patient_name" class="form-control">
</div>
<div class="form-row">
<div class="form-group col-6">
<label>Tanggal Ambil</label>
<input type="date" name="collected_at" class="form-control">
</div>
<div class="form-group col-6">
<label>Tanggal Simpan</label>
<input type="date" name="stored_at" class="form-control" required>
</div>
</div>
<div class="form-row">
<div class="form-group col-6">
<label>Volume</label>
<input type="text" name="volume" class="form-control" placeholder="2 ml">
</div>
<div class="form-group col-6">
<label>Kondisi Simpan</label>
<input type="text" name="storage_condition" class="form-control" placeholder="-20 C">
</div>
</div>
<button class="btn btn-success btn-block" type="submit">Simpan Spesimen</button>
</form>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-12">
<div class="card-box">
<h4 class="m-b-15">Spesimen dengan Waktu Simpan Paling Lama</h4>
@if($oldestSpecimen)
<div class="oldest-highlight">
<strong>{{ $oldestSpecimen->specimen_code }}</strong> - {{ $oldestSpecimen->specimen_name }}<br>
Lemari: {{ $oldestSpecimen->cabinet->name ?? '-' }} | Rack: {{ $oldestSpecimen->rack->name ?? '-' }}<br>
Disimpan sejak: {{ $oldestSpecimen->stored_at }} ({{ $oldestStorageDays }} hari)
</div>
@else
<div class="alert alert-warning m-b-0">Belum ada data spesimen.</div>
@endif
</div>
</div>
</div>
<div class="row">
<div class="col-lg-12">
<div class="card-box">
<h4 class="m-b-20">Visualisasi Lemari dan Rack</h4>
@forelse($cabinets as $cabinet)
<div class="cabinet-visual">
<h5 class="m-b-15">{{ $cabinet->code }} - {{ $cabinet->name }} <small class="text-muted">({{ $cabinet->location ?? 'Lokasi belum diisi' }})</small></h5>
<div class="rack-grid">
@forelse($cabinet->racks as $rack)
<div class="rack-box">
<div class="rack-header">{{ $rack->code }} - {{ $rack->name }} (Lv. {{ $rack->level }})</div>
<div>Kapasitas: {{ $rack->capacity }}</div>
<div>Total spesimen: {{ $rack->specimens->count() }}</div>
@if($rack->specimens->count() > 0)
@php
$oldestRackSpecimen = $rack->specimens->first();
$preview = $rack->specimens->take(4);
@endphp
<div class="text-muted" style="font-size:12px; margin-top:4px;">Terlama di rack ini: {{ $oldestRackSpecimen->specimen_code }} ({{ $oldestRackSpecimen->storage_days }} hari)</div>
<div style="margin-top:6px; font-size:12px;"><strong>Preview spesimen:</strong></div>
<ul class="specimen-preview">
@foreach($preview as $sp)
<li>
{{ $sp->specimen_code }} - {{ $sp->specimen_name }}<br>
<span class="text-muted">Simpan {{ $sp->stored_at }} ({{ $sp->storage_days }} hari)</span>
</li>
@endforeach
</ul>
@else
<div class="text-muted" style="margin-top:8px;">Belum ada spesimen pada rack ini.</div>
@endif
</div>
@empty
<div class="alert alert-light m-b-0">Belum ada rack pada lemari ini.</div>
@endforelse
</div>
</div>
@empty
<div class="alert alert-warning">Belum ada data lemari biorepository.</div>
@endforelse
</div>
</div>
</div>
</div>
</div>
@endsection