427 lines
17 KiB
PHP
427 lines
17 KiB
PHP
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
@include('layouts.shared/title-meta', ['title' => $form->title ?? 'Form'])
|
|
@include('layouts.shared/head-css', ['mode' => $mode ?? '', 'demo' => $demo ?? ''])
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0,user-scalable=0"/>
|
|
</head>
|
|
<body class="preview-approval-body">
|
|
@php
|
|
$record = \DB::table('neblogistic')->where('submission_id', $id)->first();
|
|
$byCode = [];
|
|
foreach ($questions as $question) {
|
|
if (isset($question->code)) {
|
|
$byCode[$question->code] = $question;
|
|
}
|
|
}
|
|
$submitted = $submitted_formdata ?? null;
|
|
$val = function ($column, $codes = []) use ($record, $byCode, $submitted) {
|
|
if ($record && isset($record->{$column}) && $record->{$column} !== '' && $record->{$column} !== null) {
|
|
return $record->{$column};
|
|
}
|
|
foreach ((array) $codes as $code) {
|
|
if (isset($byCode[$code]->value) && $byCode[$code]->value !== '' && $byCode[$code]->value !== null) {
|
|
return $byCode[$code]->value;
|
|
}
|
|
if (is_object($submitted) && isset($submitted->{$code}) && $submitted->{$code} !== '' && $submitted->{$code} !== null) {
|
|
return $submitted->{$code};
|
|
}
|
|
if (is_array($submitted) && isset($submitted[$code]) && $submitted[$code] !== '' && $submitted[$code] !== null) {
|
|
return $submitted[$code];
|
|
}
|
|
}
|
|
return '';
|
|
};
|
|
$fileUrl = function ($url) {
|
|
$url = (string) $url;
|
|
if ($url === '') {
|
|
return '';
|
|
}
|
|
if (!preg_match('#^https?://#i', $url)) {
|
|
return rtrim((string) env('AWS_URL'), '/') . '/' . ltrim($url, '/');
|
|
}
|
|
return $url;
|
|
};
|
|
$empId = $val('emp_id', ['emp_id']);
|
|
$empName = $val('emp_name', ['employee_name', 'emp_name']);
|
|
$empPhone = $val('emp_phone', ['employee_phone', 'emp_phone']);
|
|
$empEmail = $val('emp_email', ['employee_email', 'emp_email']);
|
|
$abmName = $val('abm_name', ['abm_name']);
|
|
$rbmName = $val('rbm_name', ['rbm_name']);
|
|
$doctorName = $val('doctor_name', ['dr_name', 'doctor_name_for']);
|
|
$doctorPhone = $val('doctor_phone', ['doctor_mobile_number']);
|
|
$speciality = $val('doctor_speciality', ['speciality']);
|
|
$mslCode = $val('msl_code', ['msl_code']);
|
|
$nebulizerType = $val('type_of_nebulizer', ['type_of_nebuliser', 'type_of_nebulizer']);
|
|
$nebulizerCount = $val('no_of_nebulizer', ['no_of_nebulizer']);
|
|
$parcelValue = $val('value_of_parcel', ['value_of_the_parcel']);
|
|
$team = $val('team', ['team']);
|
|
$clinicName = $val('clinic_hospital_name', ['clinic_hospital_home_name']);
|
|
$building = $val('address_building', ['building_name']);
|
|
$addressType = $val('address_type', ['address_type']);
|
|
$address1 = $val('address_line_1', ['address_line_1']);
|
|
$address2 = $val('address_line_2', ['address_line_2']);
|
|
$state = $val('address_state', ['state']);
|
|
$city = $val('address_city', ['city']);
|
|
$pin = $val('address_pin_code', ['pin_code']);
|
|
$remarks = $val('remarks', ['remarks']);
|
|
$paramedic = $val('paramedic_alternate_contact_number', ['paramedic_alternate_contact_number']);
|
|
$status = $val('status', ['status']);
|
|
$requestDate = $record->created_at ?? '';
|
|
$letterUrl = $fileUrl($val('request_letter', ['upload_request_letter', 'existing_letter']));
|
|
@endphp
|
|
|
|
<div class="approval-container">
|
|
<div class="approval-header">
|
|
<h1 class="approval-title">Review Request</h1>
|
|
<p class="approval-subtitle">Please review the request details and make your decision</p>
|
|
@if(isset($form->user_info->name) && $form->user_info->name !== '')
|
|
<p class="text-muted mb-0">Submitted by: {{ $form->user_info->name }}</p>
|
|
@endif
|
|
</div>
|
|
|
|
<div class="details-section">
|
|
<h5 class="section-title">Employee Details</h5>
|
|
<div class="section-content">
|
|
@if($empId !== '')
|
|
<div class="detail-row">
|
|
<span class="detail-label">Emp ID of TM:</span>
|
|
<span class="detail-value">{{ $empId }}</span>
|
|
</div>
|
|
@endif
|
|
@if($empName !== '')
|
|
<div class="detail-row">
|
|
<span class="detail-label">Name of TM:</span>
|
|
<span class="detail-value">{{ $empName }}</span>
|
|
</div>
|
|
@endif
|
|
@if($empPhone !== '')
|
|
<div class="detail-row">
|
|
<span class="detail-label">TM Mobile Number:</span>
|
|
<span class="detail-value">{{ $empPhone }}</span>
|
|
</div>
|
|
@endif
|
|
@if($empEmail !== '')
|
|
<div class="detail-row">
|
|
<span class="detail-label">TM Email ID:</span>
|
|
<span class="detail-value">{{ $empEmail }}</span>
|
|
</div>
|
|
@endif
|
|
@if($abmName !== '')
|
|
<div class="detail-row">
|
|
<span class="detail-label">ABM Name:</span>
|
|
<span class="detail-value">{{ $abmName }}</span>
|
|
</div>
|
|
@endif
|
|
@if($rbmName !== '')
|
|
<div class="detail-row">
|
|
<span class="detail-label">RBM Name:</span>
|
|
<span class="detail-value">{{ $rbmName }}</span>
|
|
</div>
|
|
@endif
|
|
</div>
|
|
</div>
|
|
|
|
<div class="details-section">
|
|
<h5 class="section-title">Doctor Details</h5>
|
|
<div class="section-content">
|
|
@if($doctorName !== '')
|
|
<div class="detail-row">
|
|
<span class="detail-label">Dr Name:</span>
|
|
<span class="detail-value">{{ $doctorName }}</span>
|
|
</div>
|
|
@endif
|
|
@if($doctorPhone !== '')
|
|
<div class="detail-row">
|
|
<span class="detail-label">Doctor Mobile Number:</span>
|
|
<span class="detail-value">{{ $doctorPhone }}</span>
|
|
</div>
|
|
@endif
|
|
@if($speciality !== '')
|
|
<div class="detail-row">
|
|
<span class="detail-label">Speciality:</span>
|
|
<span class="detail-value">{{ $speciality }}</span>
|
|
</div>
|
|
@endif
|
|
@if($mslCode !== '')
|
|
<div class="detail-row">
|
|
<span class="detail-label">MSL CODE of Dr:</span>
|
|
<span class="detail-value">{{ $mslCode }}</span>
|
|
</div>
|
|
@endif
|
|
@if($nebulizerType !== '')
|
|
<div class="detail-row">
|
|
<span class="detail-label">Type of Nebulizer:</span>
|
|
<span class="detail-value">{{ $nebulizerType }}</span>
|
|
</div>
|
|
@endif
|
|
@if($nebulizerCount !== '')
|
|
<div class="detail-row">
|
|
<span class="detail-label">No of Nebulizer:</span>
|
|
<span class="detail-value">{{ $nebulizerCount }}</span>
|
|
</div>
|
|
@endif
|
|
@if($parcelValue !== '')
|
|
<div class="detail-row">
|
|
<span class="detail-label">Value of the Parcel:</span>
|
|
<span class="detail-value">{{ $parcelValue }}</span>
|
|
</div>
|
|
@endif
|
|
@if($team !== '')
|
|
<div class="detail-row">
|
|
<span class="detail-label">Team:</span>
|
|
<span class="detail-value">{{ $team }}</span>
|
|
</div>
|
|
@endif
|
|
</div>
|
|
</div>
|
|
|
|
<div class="details-section">
|
|
<h5 class="section-title">Drop Details</h5>
|
|
<div class="section-content">
|
|
@if($clinicName !== '')
|
|
<div class="detail-row">
|
|
<span class="detail-label">Clinic / Hospital / Home Name:</span>
|
|
<span class="detail-value">{{ $clinicName }}</span>
|
|
</div>
|
|
@endif
|
|
@if($building !== '')
|
|
<div class="detail-row">
|
|
<span class="detail-label">Building Name:</span>
|
|
<span class="detail-value">{{ $building }}</span>
|
|
</div>
|
|
@endif
|
|
@if($addressType !== '')
|
|
<div class="detail-row">
|
|
<span class="detail-label">Address Type:</span>
|
|
<span class="detail-value">{{ $addressType }}</span>
|
|
</div>
|
|
@endif
|
|
@if($address1 !== '')
|
|
<div class="detail-row">
|
|
<span class="detail-label">Address line 1:</span>
|
|
<span class="detail-value">{{ $address1 }}</span>
|
|
</div>
|
|
@endif
|
|
@if($address2 !== '')
|
|
<div class="detail-row">
|
|
<span class="detail-label">Address line 2:</span>
|
|
<span class="detail-value">{{ $address2 }}</span>
|
|
</div>
|
|
@endif
|
|
@if($state !== '')
|
|
<div class="detail-row">
|
|
<span class="detail-label">State:</span>
|
|
<span class="detail-value">{{ $state }}</span>
|
|
</div>
|
|
@endif
|
|
@if($city !== '')
|
|
<div class="detail-row">
|
|
<span class="detail-label">City:</span>
|
|
<span class="detail-value">{{ $city }}</span>
|
|
</div>
|
|
@endif
|
|
@if($pin !== '')
|
|
<div class="detail-row">
|
|
<span class="detail-label">Pin Code:</span>
|
|
<span class="detail-value">{{ $pin }}</span>
|
|
</div>
|
|
@endif
|
|
</div>
|
|
</div>
|
|
|
|
<div class="details-section">
|
|
<h5 class="section-title">Additional Information</h5>
|
|
<div class="section-content">
|
|
<div class="detail-row">
|
|
<span class="detail-label">Remarks:</span>
|
|
<span class="detail-value">{{ $remarks !== '' ? $remarks : 'N/A' }}</span>
|
|
</div>
|
|
@if($paramedic !== '')
|
|
<div class="detail-row">
|
|
<span class="detail-label">Paramedic/Alternate Contact number:</span>
|
|
<span class="detail-value">{{ $paramedic }}</span>
|
|
</div>
|
|
@endif
|
|
@if($status !== '')
|
|
<div class="detail-row">
|
|
<span class="detail-label">Current Status:</span>
|
|
<span class="detail-value">
|
|
<span class="status-badge status-{{ strtolower(str_replace(' ', '-', $status)) }}">{{ $status }}</span>
|
|
</span>
|
|
</div>
|
|
@endif
|
|
@if($requestDate !== '')
|
|
<div class="detail-row">
|
|
<span class="detail-label">Request Date:</span>
|
|
<span class="detail-value">{{ \Carbon\Carbon::parse($requestDate)->format('d M Y, h:i A') }}</span>
|
|
</div>
|
|
@endif
|
|
</div>
|
|
</div>
|
|
|
|
@if($letterUrl !== '')
|
|
<div class="request-letter-section">
|
|
<h5>Request Letter</h5>
|
|
<div class="request-letter-container">
|
|
<img src="{{ $letterUrl }}" alt="Request Letter" class="request-letter-image" onclick="openImageModal('{{ $letterUrl }}')" />
|
|
</div>
|
|
</div>
|
|
@endif
|
|
</div>
|
|
|
|
<div id="imageModal" class="image-modal" onclick="closeImageModal()">
|
|
<div class="image-modal-content" onclick="event.stopPropagation()">
|
|
<span class="image-modal-close" onclick="closeImageModal()">×</span>
|
|
<img id="modalImage" src="" alt="Request Letter" class="modal-image" />
|
|
</div>
|
|
</div>
|
|
|
|
<script>
|
|
function openImageModal(imageSrc) {
|
|
document.getElementById('modalImage').src = imageSrc;
|
|
document.getElementById('imageModal').style.display = 'block';
|
|
document.body.style.overflow = 'hidden';
|
|
}
|
|
function closeImageModal() {
|
|
document.getElementById('imageModal').style.display = 'none';
|
|
document.body.style.overflow = 'auto';
|
|
}
|
|
document.addEventListener('keydown', function(event) {
|
|
if (event.key === 'Escape') {
|
|
closeImageModal();
|
|
}
|
|
});
|
|
</script>
|
|
<style>
|
|
html, body.preview-approval-body {
|
|
background: #fff;
|
|
margin: 0;
|
|
padding: 0;
|
|
}
|
|
.approval-container {
|
|
max-width: 900px;
|
|
margin: 0 auto;
|
|
padding: 16px 16px 24px;
|
|
background: #fff;
|
|
}
|
|
.approval-header {
|
|
text-align: center;
|
|
margin-bottom: 20px;
|
|
padding-bottom: 16px;
|
|
border-bottom: 2px solid #f8f9fa;
|
|
}
|
|
.approval-title {
|
|
font-size: 1.6rem;
|
|
font-weight: 600;
|
|
margin-bottom: 8px;
|
|
}
|
|
.approval-subtitle {
|
|
color: #6c757d;
|
|
font-size: 1rem;
|
|
margin-bottom: 0;
|
|
}
|
|
.details-section {
|
|
background: #fff;
|
|
border: 1px solid #dee2e6;
|
|
border-radius: 8px;
|
|
margin: 16px 0;
|
|
overflow: hidden;
|
|
}
|
|
.section-title {
|
|
background: #007bff;
|
|
color: #fff;
|
|
margin: 0;
|
|
padding: 12px 16px;
|
|
font-size: 1.05rem;
|
|
font-weight: 600;
|
|
}
|
|
.section-content { padding: 16px; }
|
|
.detail-row {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
padding: 8px 0;
|
|
border-bottom: 1px solid #f1f3f4;
|
|
}
|
|
.detail-row:last-child { border-bottom: none; }
|
|
.detail-label {
|
|
font-weight: 600;
|
|
color: #495057;
|
|
min-width: 150px;
|
|
}
|
|
.detail-value {
|
|
color: #212529;
|
|
flex: 1;
|
|
text-align: right;
|
|
}
|
|
.request-letter-section {
|
|
background: #fff;
|
|
border: 1px solid #dee2e6;
|
|
border-radius: 8px;
|
|
padding: 16px;
|
|
margin: 16px 0 0;
|
|
}
|
|
.request-letter-container { text-align: center; margin-top: 12px; }
|
|
.request-letter-image {
|
|
max-width: 100%;
|
|
max-height: 500px;
|
|
border: 1px solid #dee2e6;
|
|
border-radius: 8px;
|
|
cursor: pointer;
|
|
}
|
|
.status-badge {
|
|
display: inline-block;
|
|
padding: 6px 12px;
|
|
border-radius: 20px;
|
|
font-size: 0.85rem;
|
|
font-weight: 600;
|
|
text-transform: uppercase;
|
|
}
|
|
.status-requested, .status-pending, .status-unapproved { background: #fff3cd; color: #856404; }
|
|
.status-approved { background: #d4edda; color: #155724; }
|
|
.status-rejected { background: #f8d7da; color: #721c24; }
|
|
.status-l1-approved { background: #d1ecf1; color: #0c5460; }
|
|
.image-modal {
|
|
display: none;
|
|
position: fixed;
|
|
z-index: 9999;
|
|
left: 0;
|
|
top: 0;
|
|
width: 100%;
|
|
height: 100%;
|
|
background-color: rgba(0, 0, 0, 0.9);
|
|
}
|
|
.image-modal-content {
|
|
position: relative;
|
|
margin: auto;
|
|
padding: 20px;
|
|
width: 90%;
|
|
height: 90%;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
}
|
|
.modal-image {
|
|
max-width: 100%;
|
|
max-height: 100%;
|
|
object-fit: contain;
|
|
border-radius: 8px;
|
|
}
|
|
.image-modal-close {
|
|
position: absolute;
|
|
top: 10px;
|
|
right: 20px;
|
|
color: #fff;
|
|
font-size: 36px;
|
|
font-weight: bold;
|
|
cursor: pointer;
|
|
}
|
|
@media (max-width: 768px) {
|
|
.detail-row { flex-direction: column; }
|
|
.detail-label { min-width: auto; margin-bottom: 4px; }
|
|
.detail-value { text-align: left; }
|
|
}
|
|
</style>
|
|
</body>
|
|
</html>
|