Team 4 (Montair LC Kid ABM Conversion)
Specific Folder FTP Upload / ftp-deploy (push) Successful in 30s
Details
Specific Folder FTP Upload / ftp-deploy (push) Successful in 30s
Details
This commit is contained in:
parent
77b3301134
commit
b918138117
|
|
@ -41,42 +41,11 @@
|
|||
@endif
|
||||
|
||||
@php
|
||||
@php
|
||||
$submissions = Formhelper::getMultiformData($form->partition, $form_id, $form->user_id);
|
||||
// 1. null safe check
|
||||
$submissions = $submissions->data->submissions ?? [];
|
||||
|
||||
$currentRecordId = $id ?? null;
|
||||
$alreadySubmittedDoctors = [];
|
||||
|
||||
if (!empty($submissions)) {
|
||||
foreach ($submissions as $sub) {
|
||||
$subObj = (object)$sub; // safe object cast
|
||||
|
||||
|
||||
if ($currentRecordId && isset($subObj->id) && (string)$subObj->id === (string)$currentRecordId) {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
if (isset($subObj->formdata)) {
|
||||
$fData = (object)$subObj->formdata;
|
||||
if (!empty($fData->contact_id)) {
|
||||
$alreadySubmittedDoctors[] = (string)$fData->contact_id;
|
||||
}
|
||||
if (!empty($fData->cont_id)) {
|
||||
$alreadySubmittedDoctors[] = (string)$fData->cont_id;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
$alreadySubmittedDoctors = array_values(array_unique($alreadySubmittedDoctors));
|
||||
@endphp
|
||||
|
||||
$submissions = Formhelper::getMultiformData($form->partition, $form_id, $form->user_id);
|
||||
$submissions = isset($submissions->data->submissions) ? $submissions->data->submissions : [];
|
||||
@endphp
|
||||
|
||||
|
||||
@if(count($submissions) <=4)
|
||||
@if(count($submissions) <= 4)
|
||||
<form method="POST" action="/form/submit" id="report-form" enctype="multipart/form-data">
|
||||
<input type="hidden" name="form_id" value="{{$form_id}}">
|
||||
<input type="hidden" name="user_id" value="{{$form->user_id}}">
|
||||
|
|
@ -106,7 +75,7 @@ $alreadySubmittedDoctors = array_values(array_unique($alreadySubmittedDoctors));
|
|||
<textarea id="field-{{$question->code}}" name="{{$question->code}}" class="form-control" {{$question->required == 'yes'?'required':'' }}>{{isset($question->value)?$question->value:''}}</textarea>
|
||||
@break
|
||||
@case('dropdown')
|
||||
<select class="form-control" id="field-{{ $question->code }}" name="{{ $question->code }}" data-preselected="{{ $question->value ?? '' }}" {{ $question->required == 'yes' ? 'required' : '' }}>
|
||||
<select class="form-control" id="field-{{ $question->code }}" name="{{ $question->code }}" data-preselected="{{ isset($question->value) ? (string)$question->value : '' }}" {{ $question->required == 'yes' ? 'required' : '' }}>
|
||||
<option value=""> -- Select -- </option>
|
||||
@foreach ($question->options as $option)
|
||||
@if($question->code == 'contact_id' && isset($option->contact->type) && $option->contact->type == 'doctor' )
|
||||
|
|
@ -120,21 +89,17 @@ $alreadySubmittedDoctors = array_values(array_unique($alreadySubmittedDoctors));
|
|||
{{ $option->display }}
|
||||
</option>
|
||||
@elseif($question->code != 'contact_id')
|
||||
<option value="{{ $option->value }}" {{ isset($question->value) && $question->value == $option->value ? 'selected' : '' }} {{ $question->code == 'contact_id' ? 'pcode= ' . (isset($option->contact->pcode)?$option->contact->pcode:'') . ' ' : '' }} {{ isset($question->value) && $question->value == $option->value ? 'selected' : '' }} {{ $question->code == 'contact_id' ? 'speciality= ' . (isset($option->contact->speciality) ? $option->contact->speciality :'') . ' ' : '' }} >
|
||||
<option value="{{ $option->value }}" {{ isset($question->value) && $question->value == $option->value ? 'selected' : '' }}>
|
||||
{{ $option->display }}
|
||||
</option>
|
||||
@endif
|
||||
|
||||
|
||||
|
||||
@endforeach
|
||||
|
||||
</select>
|
||||
@break
|
||||
@case('checkbox')
|
||||
@foreach($question->options as $option)
|
||||
<div class="form-check mb-2 form-check-primary">
|
||||
<input class="form-check-input" type="checkbox" id="field-{{$question->code}}-{{$option->value}}" name="{{$question->code}}[]" value="{{$option->value}}" {{isset($question->value) && $question->value != '' && in_array($option->value, $question->value) ? 'checked':''}}>
|
||||
<input class="form-check-input" type="checkbox" id="field-{{$question->code}}-{{$option->value}}" name="{{$question->code}}[]" value="{{$option->value}}" {{isset($question->value) && $question->value != '' && in_array($option->value, (array)$question->value) ? 'checked':''}}>
|
||||
<label class="form-check-label" for="field-{{$question->code}}-{{$option->value}}">{{$option->display}}</label>
|
||||
</div>
|
||||
@endforeach
|
||||
|
|
@ -145,7 +110,6 @@ $alreadySubmittedDoctors = array_values(array_unique($alreadySubmittedDoctors));
|
|||
@elseif(isset($question->value))
|
||||
<img src="{{$question->value}}" class="img-fluid">
|
||||
@endif
|
||||
|
||||
@break
|
||||
@case('multitextbox')
|
||||
<div class="row">
|
||||
|
|
@ -157,7 +121,6 @@ $alreadySubmittedDoctors = array_values(array_unique($alreadySubmittedDoctors));
|
|||
@endforeach
|
||||
</div>
|
||||
@break
|
||||
|
||||
@case('time')
|
||||
<input type="time"
|
||||
id="field-{{$question->code}}"
|
||||
|
|
@ -166,7 +129,6 @@ $alreadySubmittedDoctors = array_values(array_unique($alreadySubmittedDoctors));
|
|||
{{$question->required == 'yes' ? 'required' : ''}}
|
||||
value="{{isset($question->value) ? $question->value : ''}}">
|
||||
@break
|
||||
|
||||
@endswitch
|
||||
</div>
|
||||
@endforeach
|
||||
|
|
@ -179,19 +141,13 @@ $alreadySubmittedDoctors = array_values(array_unique($alreadySubmittedDoctors));
|
|||
@else
|
||||
<div class="alert alert-danger">You have already submitted 5 Doctors <div>
|
||||
@endif
|
||||
</div> <!-- end card-body -->
|
||||
</div>
|
||||
<!-- end card -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- end row -->
|
||||
|
||||
</div> <!-- end col -->
|
||||
</div>
|
||||
<!-- end row -->
|
||||
</div>
|
||||
<!-- end container -->
|
||||
</div>
|
||||
<!-- end page -->
|
||||
<style type="text/css">
|
||||
#pageloader {
|
||||
background: rgba( 255, 255, 255, 0.8 );
|
||||
|
|
@ -201,7 +157,6 @@ $alreadySubmittedDoctors = array_values(array_unique($alreadySubmittedDoctors));
|
|||
width: 100%;
|
||||
z-index: 9999;
|
||||
}
|
||||
|
||||
#pageloader img {
|
||||
left: 50%;
|
||||
margin-left: -32px;
|
||||
|
|
@ -218,7 +173,28 @@ $alreadySubmittedDoctors = array_values(array_unique($alreadySubmittedDoctors));
|
|||
$('[data-toggle="select2"]').select2();
|
||||
var hierarcies = [];
|
||||
var contacts = [];
|
||||
var submittedDoctors = @json($alreadySubmittedDoctors ?? []);
|
||||
|
||||
// 🟢 सुरक्षितपणे सबमिट झालेल्या डॉक्टरांची यादी JS मध्ये बनवणे
|
||||
var allSubmissions = @json($submissions ?? []);
|
||||
var currentEditId = '{{ $id ?? '' }}';
|
||||
var submittedDoctors = [];
|
||||
|
||||
if (Array.isArray(allSubmissions)) {
|
||||
allSubmissions.forEach(function(sub) {
|
||||
if (currentEditId && sub.id && String(sub.id) === String(currentEditId)) {
|
||||
return;
|
||||
}
|
||||
if (sub && sub.formdata) {
|
||||
if (sub.formdata.contact_id) {
|
||||
submittedDoctors.push(String(sub.formdata.contact_id).trim().toLowerCase());
|
||||
}
|
||||
if (sub.formdata.cont_id) {
|
||||
submittedDoctors.push(String(sub.formdata.cont_id).trim().toLowerCase());
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@if(isset($form->manager_can_submit) && $form->manager_can_submit == true)
|
||||
@foreach($form->users as $option)
|
||||
hierarcies.push('{{$option->hierarchy_id}}');
|
||||
|
|
@ -232,25 +208,17 @@ $alreadySubmittedDoctors = array_values(array_unique($alreadySubmittedDoctors));
|
|||
processData: false,
|
||||
contentType: false
|
||||
}).then(data => {
|
||||
console.log(data);
|
||||
contacts = contacts.concat(data);
|
||||
}).catch(function(err) {
|
||||
console.log(err);
|
||||
});
|
||||
})
|
||||
).then(function() {
|
||||
// All contacts loaded for each hierarchy
|
||||
// Example usage: console.log(contacts);
|
||||
// Filter out contacts where value == 'sample'
|
||||
contacts = contacts.filter(function(itm) { return itm.value !== 'sample'; });
|
||||
console.log(contacts);
|
||||
contacts = contacts.filter(function(itm) { return itm && itm.value !== 'sample'; });
|
||||
|
||||
// Loop through contacts and append options to select elements whose id starts with 'field-contact_id'
|
||||
// We assume contact_id fields may be suffixed, e.g. field-contact_id_1, field-contact_id, etc.
|
||||
function applySelect2ToDoctorDropdowns() {
|
||||
$("[id^='field-contact_id']").each(function () {
|
||||
var select = $(this);
|
||||
// Avoid re-initializing select2
|
||||
if (select.data("select2")) return;
|
||||
select.select2({
|
||||
width: "100%",
|
||||
|
|
@ -263,36 +231,22 @@ $alreadySubmittedDoctors = array_values(array_unique($alreadySubmittedDoctors));
|
|||
function enforceUniqueDoctorSelections() {
|
||||
var selectedValues = [];
|
||||
|
||||
// Collect selected values (ignore empty)
|
||||
$("[id^='field-contact_id']").each(function () {
|
||||
var v = $(this).val();
|
||||
if (v) selectedValues.push(String(v));
|
||||
});
|
||||
|
||||
// Reset all option disabled states, then disable duplicates across selects
|
||||
$("[id^='field-contact_id']").each(function () {
|
||||
var currentSelect = $(this);
|
||||
var currentVal = currentSelect.val() ? String(currentSelect.val()) : "";
|
||||
|
||||
/* currentSelect.find("option").prop("disabled", false);
|
||||
|
||||
// Disable values selected in OTHER selects (keep current selection enabled)
|
||||
selectedValues.forEach(function (v) {
|
||||
if (v && v !== currentVal) {
|
||||
currentSelect
|
||||
.find("option[value=\"" + v.replace(/"/g, '\\"') + "\"]")
|
||||
.prop("disabled", true);
|
||||
}
|
||||
}); */
|
||||
|
||||
currentSelect.find("option").each(function () {
|
||||
var opt = $(this);
|
||||
var optVal = String(opt.val() || '');
|
||||
var optText = opt.text();
|
||||
|
||||
|
||||
if (optText.indexOf("Already Added") !== -1) {
|
||||
opt.prop("disabled", true); // Already Added
|
||||
opt.prop("disabled", true);
|
||||
} else if (optVal && selectedValues.includes(optVal) && optVal !== currentVal) {
|
||||
opt.prop("disabled", true);
|
||||
} else {
|
||||
|
|
@ -300,8 +254,6 @@ $alreadySubmittedDoctors = array_values(array_unique($alreadySubmittedDoctors));
|
|||
}
|
||||
});
|
||||
|
||||
|
||||
// Refresh select2 UI if present
|
||||
if (currentSelect.data("select2")) {
|
||||
currentSelect.trigger("change.select2");
|
||||
}
|
||||
|
|
@ -310,53 +262,47 @@ $alreadySubmittedDoctors = array_values(array_unique($alreadySubmittedDoctors));
|
|||
|
||||
$("[id^='field-contact_id']").each(function() {
|
||||
var select = $(this);
|
||||
|
||||
|
||||
//var existingVal = select.val() || select.attr('data-preselected') || '';
|
||||
|
||||
var existingVal = select.attr('data-preselected') !== undefined && select.attr('data-preselected') !== ''
|
||||
? String(select.attr('data-preselected'))
|
||||
: (select.val() ? String(select.val()) : '');
|
||||
|
||||
select.html('');
|
||||
// Add a default 'Select' option
|
||||
select.append(
|
||||
$("<option></option>")
|
||||
.attr("value", '')
|
||||
.text('-- Select --')
|
||||
);
|
||||
// Append options from contacts
|
||||
select.empty();
|
||||
select.append($("<option></option>").attr("value", '').text('-- Select --'));
|
||||
|
||||
contacts.forEach(function(itm) {
|
||||
var itmVal = String(itm.value);
|
||||
var itmText = itm.display;
|
||||
var itmText = String(itm.display);
|
||||
|
||||
var valCheck = itmVal.trim().toLowerCase();
|
||||
var textCheck = itmText.trim().toLowerCase();
|
||||
|
||||
var isAlreadySubmitted = submittedDoctors.includes(itmVal) || submittedDoctors.includes(itmText);
|
||||
var isCurrentSelected = (existingVal !== '' && (existingVal === itmVal || existingVal === itmText));
|
||||
var isAlreadySubmitted = submittedDoctors.includes(valCheck) || submittedDoctors.includes(textCheck);
|
||||
var isCurrentSelected = (existingVal !== '' && (existingVal.toLowerCase() === valCheck || existingVal.toLowerCase() === textCheck));
|
||||
|
||||
var displayText = itmText;
|
||||
var isDisabled = false;
|
||||
|
||||
|
||||
if (isAlreadySubmitted && !isCurrentSelected) {
|
||||
displayText += " - Already Added";
|
||||
isDisabled = true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
var option = $("<option></option>")
|
||||
.attr("value", itm.value)
|
||||
.text(displayText)
|
||||
.prop("disabled", isDisabled);
|
||||
// If doctor options have extra attributes
|
||||
|
||||
if (itm.contact && itm.contact.msl_code) {
|
||||
option.attr("msl_code", itm.contact.msl_code);
|
||||
}
|
||||
if (itm.contact && itm.contact.speciality) {
|
||||
option.attr("speciality", itm.contact.speciality);
|
||||
}
|
||||
|
||||
if (isCurrentSelected) {
|
||||
option.prop('selected', true);
|
||||
}
|
||||
|
||||
select.append(option);
|
||||
});
|
||||
|
||||
|
|
@ -364,21 +310,12 @@ $alreadySubmittedDoctors = array_values(array_unique($alreadySubmittedDoctors));
|
|||
select.val(existingVal);
|
||||
}
|
||||
|
||||
// For each select element, add a change event handler to populate `msl_code` and `speciality`
|
||||
// We assume dropdowns and targets follow the pattern:
|
||||
// - select: field-contact_id_1, field-contact_id_2, ..., field-contact_id
|
||||
// - result: field-msl_code_1, field-speciality_1, etc.
|
||||
|
||||
// Remove any old event handlers first to prevent duplicate bindings
|
||||
select.off('change').on('change', function () {
|
||||
var selected = $(this).find(':selected');
|
||||
|
||||
var selectId = $(this).attr('id'); // e.g., field-contact_id_1
|
||||
// Extract the suffix (e.g., _1 or empty)
|
||||
var selectId = $(this).attr('id');
|
||||
var match = selectId.match(/^field-contact_id(_\d+)?$/);
|
||||
var suffix = match && match[1] ? match[1] : '';
|
||||
|
||||
// Build the target msl_code and speciality field ids
|
||||
var mslCodeField = $('#field-msl_code' + suffix);
|
||||
var specialityField = $('#field-speciality' + suffix);
|
||||
|
||||
|
|
@ -389,113 +326,27 @@ $alreadySubmittedDoctors = array_values(array_unique($alreadySubmittedDoctors));
|
|||
specialityField.val(selected.attr('speciality') || '');
|
||||
}
|
||||
|
||||
// Prevent selecting the same doctor across multiple dropdowns
|
||||
enforceUniqueDoctorSelections();
|
||||
});
|
||||
});
|
||||
|
||||
// Ensure unique selection is enforced after initial render
|
||||
if(existingVal){
|
||||
select.trigger('change');
|
||||
}else{
|
||||
enforceUniqueDoctorSelections();
|
||||
applySelect2ToDoctorDropdowns();
|
||||
|
||||
$("[id^='field-contact_id']").each(function() {
|
||||
var select = $(this);
|
||||
var preVal = select.attr('data-preselected');
|
||||
if (preVal) {
|
||||
select.val(String(preVal)).trigger('change');
|
||||
}
|
||||
});
|
||||
|
||||
// Enable search on doctor dropdowns
|
||||
applySelect2ToDoctorDropdowns();
|
||||
enforceUniqueDoctorSelections();
|
||||
$("#pageloader").fadeOut();
|
||||
});
|
||||
@endif
|
||||
|
||||
|
||||
|
||||
// Loop through hierarcies and fetch contacts for each hierarchy, store in contacts variable
|
||||
|
||||
// $('#field-user_id').change(function(){
|
||||
// let hierarchy = $('option:selected', this).attr('hierarchy');
|
||||
// $('#field-hierarchy_id').val(hierarchy)
|
||||
// event.preventDefault();
|
||||
// $("#pageloader").fadeIn();
|
||||
// $.ajax({
|
||||
// type: "GET",
|
||||
// url: '/form/getdoctorlist?partition={{$form->partition}}&hierarchy='+hierarchy,
|
||||
// processData: false,
|
||||
// contentType: false,
|
||||
// success: function( data ) {
|
||||
// $("#pageloader").fadeOut();
|
||||
// for (let i = 1; i <= 10; i++) {
|
||||
|
||||
// let contactField = $('#field-contact_id_' + i);
|
||||
|
||||
// // Skip if field does not exist
|
||||
// if (!contactField.length) continue;
|
||||
|
||||
// contactField.html('');
|
||||
// contactField.append(
|
||||
// $("<option></option>")
|
||||
// .attr("value", '')
|
||||
// .text('-- Select --')
|
||||
// );
|
||||
|
||||
// for (let itm of data) {
|
||||
// contactField.append(
|
||||
// $("<option></option>")
|
||||
// .attr("value", itm.value)
|
||||
// .text(itm.display)
|
||||
// .attr("msl_code", itm.contact.msl_code)
|
||||
// .attr("speciality", itm.contact.speciality)
|
||||
|
||||
// );
|
||||
// }
|
||||
|
||||
|
||||
|
||||
// // Remove old change events before binding again
|
||||
|
||||
|
||||
// contactField.off('change').on('change', function () {
|
||||
|
||||
// let selected = $(this).find(':selected');
|
||||
|
||||
// $('#field-msl_code_' + i).val(selected.attr('msl_code') || '');
|
||||
|
||||
// $('#field-speciality_' + i).val(selected.attr('speciality') || '');
|
||||
|
||||
// console.log(selected.text()); // selected doctor name
|
||||
// });
|
||||
|
||||
// contactField.select2({
|
||||
// placeholder: "-- Select --",
|
||||
// allowClear: true,
|
||||
// width: '100%'
|
||||
// });
|
||||
|
||||
|
||||
|
||||
// }
|
||||
|
||||
|
||||
|
||||
|
||||
// },
|
||||
// });
|
||||
|
||||
// console.log(hierarchy)
|
||||
// })
|
||||
|
||||
// for (let i = 1; i <= 10; i++) {
|
||||
|
||||
// $('#field-msl_code_' + i).attr('readonly',true);
|
||||
// $('#field-speciality_' + i).attr('readonly',true);
|
||||
// }
|
||||
|
||||
$('#report-form').on('submit', function(event){
|
||||
event.preventDefault();
|
||||
const formData = new FormData($('#report-form')[0]);
|
||||
// Log form data to console
|
||||
for (let [key, value] of formData.entries()) {
|
||||
console.log(key, value);
|
||||
}
|
||||
$("#pageloader").fadeIn();
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
|
|
@ -511,7 +362,7 @@ $alreadySubmittedDoctors = array_values(array_unique($alreadySubmittedDoctors));
|
|||
text: 'Your data is successfully submitted!',
|
||||
icon: 'success'
|
||||
}).then(() => {
|
||||
location.reload(); // 🔥 page refresh here
|
||||
location.reload();
|
||||
});
|
||||
$('#report-form').trigger("reset");
|
||||
} else {
|
||||
|
|
@ -519,9 +370,17 @@ $alreadySubmittedDoctors = array_values(array_unique($alreadySubmittedDoctors));
|
|||
icon: 'error',
|
||||
title: 'Data not submitted',
|
||||
text: 'Something went wrong, please try again after some time!'
|
||||
})
|
||||
});
|
||||
}
|
||||
},
|
||||
error: function() {
|
||||
$("#pageloader").fadeOut();
|
||||
Swal.fire({
|
||||
icon: 'error',
|
||||
title: 'Server Error',
|
||||
text: 'An unexpected error occurred. Please try again.'
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
|
|
@ -532,14 +391,11 @@ $alreadySubmittedDoctors = array_values(array_unique($alreadySubmittedDoctors));
|
|||
today = yyyy + '-' + mm + '-' + dd;
|
||||
|
||||
var plandateField = document.getElementById('field-record_date');
|
||||
if(plandateField) {
|
||||
plandateField.setAttribute('min', "2026-11-01");
|
||||
plandateField.setAttribute('max', today);
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
Loading…
Reference in New Issue