Removed Upload Rx Image option in GALVUS NPIs form, Shown Doctor list dropdown instead of text box in GALVUS NPI form, Added Upload POB Image option in Bisofig POB Drive form
Specific Folder FTP Upload / ftp-deploy (push) Successful in 1m40s Details

This commit is contained in:
Farhan Pathan 2026-06-09 10:55:35 +05:30
parent 89d21055de
commit ac8f7de6af
4 changed files with 557 additions and 20 deletions

View File

@ -1,3 +1,4 @@
<<<<<<< HEAD:resources/views/form/rapport-arise/1777097685-b3bf0da9-b147-435f-a0be-e2b9087d3c49.blade.php
<!DOCTYPE html>
<html lang="en">
<head>
@ -306,4 +307,373 @@
</script>
</body>
=======
<!DOCTYPE html>
<html lang="en">
<head>
@include('layouts.shared/title-meta', ['title' => "Form"])
@include('layouts.shared/head-css', ["mode" => $mode ?? '', "demo" => $demo ?? ''])
<link href="{{asset('assets/libs/sweetalert2/sweetalert2.min.css')}}" rel="stylesheet" type="text/css" />
</head>
<div id="pageloader">
<img src="http://cdnjs.cloudflare.com/ajax/libs/semantic-ui/0.16.1/images/loader-large.gif" alt="processing..." />
</div>
<body class="loading">
<div class="account-pages">
<div class="container">
<div class="row justify-content-center">
<div class="col-md-8 col-lg-6 col-xl-5 p-0">
<div class="card bg-pattern">
<div class="card-body p-3 row">
@if(Session::has('error'))<div class="alert alert-danger">{{Session::get('error')}}</div>
<br>@endif
@if(session('success'))<div class=" alert alert-success">{{ session('success') }}
</div>
<br>@endif
<div class="col-8">
<h4 class="page-title">{{$form->title}}</h4>
</div>
@if(!isset($form->is_approval) || (isset($form->is_approval) && $form->is_approval != 'yes' ) )
<div class="col-4">
@if($form->link_type == 'form')
<a href="/form/history" class="float-end pt-1">View History</a>
@else
<a href="{{url()->previous()}}" class="float-end pt-1">Back</a>
@endif
</div>
@endif
@if(isset($form->user_info))
<div class="col-12">
<h6>Submitted By: {{$form->user_info->name}}</h6>
</div>
@endif
<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}}">
@csrf
@if($id)
<input type="hidden" name="id" value="{{$id}}">
@endif
@if(isset($form->manager_can_submit) && $form->manager_can_submit == true)
<div class="col-md-12 mb-2">
<label for="field-user_id" class="form-label"> Select User / Territory <span class="text-danger">*</span> </label>
<select class="form-control" id="field-user_id" name="user_id" required>
<option value=""> -- Select -- </option>
@foreach($form->users as $option)
<option value="{{$option->value}}" hierarchy="{{$option->hierarchy_id}}" {{isset($question->value) && $question->value == $option->value ? 'selected':''}}>{{$option->display}}</option>
@endforeach
</select>
<input type="hidden" id="field-hierarchy_id" name="hierarchy_id" value="">
</div>
@endif
@foreach($questions as $question)
<div class="col-md-12 mb-2">
<label for="field-{{$question->code}}" class="form-label">{{$question->question}} {!!$question->required == 'yes' ? '<span class="text-danger">*</span>':''!!} </label>
@switch($question->type)
@case('hidden')
<input type="{{$question->type}}" id="field-{{$question->code}}" name="{{$question->code}}" value="{{isset($question->value)?$question->value:''}}">
@break
@case('text')
@case('email')
@case('tel')
@case('date')
<input type="{{$question->type}}" id="field-{{$question->code}}" name="{{$question->code}}" class="form-control" {{$question->required == 'yes'?'required':'' }} value="{{isset($question->value)?$question->value:''}}">
@break
@case('number')
<input type="{{$question->type}}" min="0" max="9999999999" step="1" id="field-{{$question->code}}" name="{{$question->code}}" class="form-control" {{$question->required == 'yes'?'required':'' }} value="{{isset($question->value)?$question->value:0}}">
@break
@case('textarea')
<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 }}" {{ $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' )
<option value="{{ $option->value }}"
@if(isset($question->value) && $question->value == $option->value) selected @endif
@if($question->code == 'contact_id')
msl_code="{{ (isset($option->contact->msl_code) ? $option->contact->msl_code : '') }}"
speciality="{{ (isset($option->contact->speciality) ? $option->contact->speciality : '') }}"
@endif
>
{{ $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->display }}
</option>
@endif
@endforeach
{{-- @if($question->code=='contact_id')
<option value="others" {{ isset($question->value) && $question->value == 'others' ? 'selected' : '' }}>Others</option>
@endif --}}
</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':''}}>
<label class="form-check-label" for="field-{{$question->code}}-{{$option->value}}">{{$option->display}}</label>
</div>
@endforeach
@break
@case('file')
@if(!isset($form->is_approval) || (isset($form->is_approval) && $form->is_approval != 'yes' ) )
<input type="file" id="field-{{$question->code}}" name="{{$question->code}}" class="form-control" value="" {{$question->required == 'yes'?'required':'' }}>
@elseif(isset($question->value))
<img src="{{$question->value}}" class="img-fluid">
@endif
@break
@case('multitextbox')
<div class="row">
@foreach($question->options as $option)
<div class="col-6">{{$option->display}}</div>
<div class="col-6 mb-1">
<input type="number" id="field-{{$option->value}}" name="{{$option->value}}" class="form-control" required value="{{isset($option->val)?$option->val:0}}">
</div>
@endforeach
</div>
@break
@case('time')
<input type="time"
id="field-{{$question->code}}"
name="{{$question->code}}"
class="form-control"
{{$question->required == 'yes' ? 'required' : ''}}
value="{{isset($question->value) ? $question->value : ''}}">
@break
@endswitch
</div>
@endforeach
@if(!isset($form->is_approval) || (isset($form->is_approval) && $form->is_approval != 'yes' ) )
<div class="text-center d-grid mt-3">
<button class="btn btn-primary" type="submit" id="submit-btn"> Submit </button>
</div>
@endif
</form>
</div> <!-- end card-body -->
</div>
<!-- end card -->
<!-- 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 );
display: none;
height: 100%;
position: fixed;
width: 100%;
z-index: 9999;
}
#pageloader img {
left: 50%;
margin-left: -32px;
margin-top: -32px;
position: absolute;
top: 50%;
}
</style>
@include('layouts.shared/footer-script')
<script src="{{asset('assets/libs/sweetalert2/sweetalert2.min.js')}}"></script>
<script type="text/javascript">
jQuery(document).ready(function($){
$('#field-upload_pob_image_max_10_mb').on('change', function () {
const file = this.files[0];
if (!file) return;
const allowedTypes = [
'image/jpeg',
'image/jpg',
'image/png',
'application/pdf'
];
if (!allowedTypes.includes(file.type)) {
Swal.fire({
icon: 'error',
title: 'Invalid File',
text: 'Only JPG, JPEG, PNG and PDF files are allowed.'
});
$(this).val('');
}
});
$('#field-upload_pob_image_max_10_mb')
.attr('accept', '.jpg,.jpeg,.png,.pdf');
const maxSize = 10 * 1024 * 1024; // 10 MB
$('#field-upload_pob_image_max_10_mb')
.on('change', function () {
const file = this.files[0];
if (!file) return;
if (file.size > maxSize) {
Swal.fire({
icon: 'error',
title: 'File Too Large',
text: 'Maximum file size allowed is 10 MB.'
});
$(this).val('');
}
});
$('#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();
$('#field-contact_id').html('')
$('#field-contact_id').append($("<option></option>").attr("value",'').text('-- Select --'));
for (let itm of data) {
$('#field-contact_id').append($("<option></option>").attr("value",itm.value).text(itm.display).attr("msl_code", itm.contact.msl_code).attr('speciality',itm.contact.speciality));
}
$('#field-contact_id').change(function() {
$('#field-msl_code').val($('option:selected', this).attr('msl_code'))
})
$('#field-contact_id').change(function() {
$('#field-speciality').val($('option:selected', this).attr('speciality'))
})
},
});
console.log(hierarchy)
})
$('#field-contact_id').change(function() {
$('#field-speciality').val($('option:selected', this).attr('speciality'))
})
$('#field-contact_id').change(function() {
$('#field-msl_code').val($('option:selected', this).attr('msl_code'))
})
$('#field-msl_code,#field-speciality').attr('readonly',true);
// $('#field-contact_id').append('<option value="others">Others</option>');
$('#field-file_upload').on('change', function () {
let file = this.files[0];
if (file) {
let allowedTypes = ['image/png', 'image/jpg', 'image/jpeg'];
let maxSize = 10 * 1024 * 1024; // 10 MB
// Type validation
if (!allowedTypes.includes(file.type)) {
alert('Only PNG, JPG, and JPEG files are allowed.');
$(this).val('');
return;
}
// Size validation
if (file.size > maxSize) {
alert('File size should not exceed 10 MB.');
$(this).val('');
return;
}
}
});
$(document).ready(function () {
$('#field-contact_id').trigger('change');
});
$('#field-chemist_name,#field-hospital_name').on('input', function () {
this.value = this.value.replace(/[^a-zA-Z\s]/g, '');
});
$('#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",
url: '/form/ajaxsubmit',
data: new FormData($('#report-form')[0]),
processData: false,
contentType: false,
success: function( data ) {
$("#pageloader").fadeOut();
if(data.status == 'success') {
Swal.fire({
title: 'Great!',
text: 'Your data is successfully submitted!',
icon: 'success'
}).then(() => {
location.reload(); // 🔥 page refresh here
});
$('#report-form').trigger("reset");
} else {
Swal.fire({
icon: 'error',
title: 'Data not submitted',
text: 'Something went wrong, please try again after some time!'
})
}
},
});
});
var today = new Date();
var dd = String(today.getDate()).padStart(2, '0');
var mm = String(today.getMonth() + 1).padStart(2, '0');
var yyyy = today.getFullYear();
today = yyyy + '-' + mm + '-' + dd;
var plandateField = document.getElementById('field-record_date');
plandateField.setAttribute('max', today);
});
</script>
</body>
>>>>>>> 5906af6e (1.Removed Upload Rx Image option in GALVUS NPIs form 2.Shown Doctor list dropdown instead of text box in GALVUS NPI form 3.Added new field Upload POB Image option in Bisofig POB Drive form):resources/views/form/rapport-vitalis/1778220759-74ee7fca-186f-46a0-8f37-97c7fb2bbc54.blade.php
</html>

View File

@ -899,11 +899,62 @@ $brandData2 = [
$('#field-dynulta_week4').val(Math.round(month_plan_units_Dynulta*1));
<<<<<<< HEAD
})
$('.edit-btn').click(function() {
=======
// })
$('.edit-btn').click(function() {
// First make all readonly
// $('#execution-form input').prop('readonly', true);
// Keep only PLAN fields editable (plan with value that user filled while making plan and week selection fields)
$('#execution-vintor_4k_units').prop('readonly', false);
$('#execution-vintor_10k_units').prop('readonly', false);
$('#execution-encicarb_500_units').prop('readonly', false);
$('#execution-encicarb_100_units').prop('readonly', false);
$('#execution-dynulta_units').prop('readonly', false);
$('#execution-vintor_4k_week1').prop('readonly', false);
$('#execution-vintor_4k_week2').prop('readonly', false);
$('#execution-vintor_4k_week3').prop('readonly', false);
$('#execution-vintor_4k_week4').prop('readonly', false);
$('#execution-vintor_10k_week1').prop('readonly', false);
$('#execution-vintor_10k_week2').prop('readonly', false);
$('#execution-vintor_10k_week3').prop('readonly', false);
$('#execution-vintor_10k_week4').prop('readonly', false);
$('#execution-encicarb_500_week1').prop('readonly', false);
$('#execution-encicarb_500_week2').prop('readonly', false);
$('#execution-encicarb_500_week3').prop('readonly', false);
$('#execution-encicarb_500_week4').prop('readonly', false);
$('#execution-encicarb_100_week1').prop('readonly', false);
$('#execution-encicarb_100_week2').prop('readonly', false);
$('#execution-encicarb_100_week3').prop('readonly', false);
$('#execution-encicarb_100_week4').prop('readonly', false);
$('#execution-dynulta_week1').prop('readonly', false);
$('#execution-dynulta_week2').prop('readonly', false);
$('#execution-dynulta_week3').prop('readonly', false);
$('#execution-dynulta_week4').prop('readonly', false);
// execution fields still editable
// $('[id*="_exe"]').prop('readonly', false);
// percentage + total execution readonly
$('[id*="_percent"]').prop('readonly', true);
$('[id*="_units_execution"]').prop('readonly', true);
>>>>>>> 5906af6e (1.Removed Upload Rx Image option in GALVUS NPIs form 2.Shown Doctor list dropdown instead of text box in GALVUS NPI form 3.Added new field Upload POB Image option in Bisofig POB Drive form)
$('#execution-form-wrapper').show(100, () => {
$('#add-camp-btn').hide(0);
})
@ -925,7 +976,7 @@ $brandData2 = [
e.preventDefault();
})
$('#execution-speciality').prop('readonly', true)
$('#execution-plan_date').prop('readonly', true)
$('#execution-uid_number').prop('readonly',true);

View File

@ -84,7 +84,7 @@
<option value=""> -- Select -- </option>
@foreach ($question->options as $option)
@if($question->code == 'contact_id' && isset($option->contact->type) && $option->contact->type != 'chemist' )
<option value="{{ $option->value }}" {{ isset($question->value) && $question->value == $option->value ? 'selected' : '' }} {{ $question->code == 'contact_id' ? 'msl_code= ' . (isset($option->contact->msl_code)?$option->contact->msl_code:'') . ' ' : '' }} {{ 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' : '' }} {{ $question->code == 'contact_id' ? 'legacy_code= ' . (isset($option->contact->legacy_code)?$option->contact->legacy_code:'') . ' ' : '' }} {{ isset($question->value) && $question->value == $option->value ? 'selected' : '' }} {{ $question->code == 'contact_id' ? 'speciality= ' . (isset($option->contact->speciality) ? $option->contact->speciality :'') . ' ' : '' }} >
{{ $option->display }}
</option>
@elseif($question->code != 'contact_id')
@ -178,6 +178,71 @@
<script src="{{asset('assets/libs/sweetalert2/sweetalert2.min.js')}}"></script>
<script type="text/javascript">
jQuery(document).ready(function($){
<<<<<<< HEAD
=======
// Make fields readonly
$('#field-legacy_code,#field-speciality').prop('readonly', true);
// Auto populate on doctor selection
$(document).on('change', '#field-contact_id', function () {
let selected = $('option:selected', this);
$('#field-legacy_code').val(
selected.attr('legacy_code') || ''
);
$('#field-speciality').val(
selected.attr('speciality') || ''
);
});
$('#field-upload_rx_image_max_10_mb').on('change', function () {
const file = this.files[0];
if (!file) return;
const allowedTypes = [
'image/jpeg',
'image/jpg',
'image/png',
'application/pdf'
];
if (!allowedTypes.includes(file.type)) {
Swal.fire({
icon: 'error',
title: 'Invalid File',
text: 'Only JPG, JPEG, PNG and PDF files are allowed.'
});
$(this).val('');
}
});
$('#field-upload_rx_image_max_10_mb')
.attr('accept', '.jpg,.jpeg,.png,.pdf');
const maxSize = 10 * 1024 * 1024; // 10 MB
$('#field-upload_rx_image_max_10_mb')
.on('change', function () {
const file = this.files[0];
if (!file) return;
if (file.size > maxSize) {
Swal.fire({
icon: 'error',
title: 'File Too Large',
text: 'Maximum file size allowed is 10 MB.'
});
$(this).val('');
}
});
>>>>>>> 5906af6e (1.Removed Upload Rx Image option in GALVUS NPIs form 2.Shown Doctor list dropdown instead of text box in GALVUS NPI form 3.Added new field Upload POB Image option in Bisofig POB Drive form)
$('#field-user_id').change(function(){
let hierarchy = $('option:selected', this).attr('hierarchy');
$('#field-hierarchy_id').val(hierarchy)
@ -193,16 +258,20 @@
$('#field-contact_id').html('')
$('#field-contact_id').append($("<option></option>").attr("value",'').text('-- Select --'));
for (let itm of data) {
$('#field-contact_id').append($("<option></option>").attr("value",itm.value).text(itm.display).attr("msl_code", itm.contact.msl_code).attr('speciality',itm.contact.speciality));
$('#field-contact_id').append($("<option></option>").attr("value",itm.value).text(itm.display).attr("legacy_code", itm.contact.legacy_code).attr('speciality',itm.contact.speciality));
}
$('#field-contact_id').change(function() {
$('#field-msl_code').val($('option:selected', this).attr('msl_code'))
})
$('#field-contact_id').change(function() {
$('#field-speciality').val($('option:selected', this).attr('speciality'))
})
$("#field-contact_id").change(function(){
let selected = $('option:selected', this);
console.log(selected.attr('legacy_code'));
console.log(selected.attr('speciality'));
$('#field-legacy_code').val(selected.attr('legacy_code'));
$('#field-speciality').val(selected.attr('speciality'));
});
},
});
@ -214,29 +283,34 @@
})
$('#field-contact_id').change(function() {
$('#field-msl_code').val($('option:selected', this).attr('msl_code'))
$('#field-legacy_code').val($('option:selected', this).attr('legacy_code'))
})
$('#field-msl_code,#field-speciality').attr('readonly',true);
$('#field-legacy_code,#field-speciality').attr('readonly',true);
<<<<<<< HEAD
$('#field-other_doctor_name,#field-other_speciality,#field-other_msl_code').prop({"required":false});
$('#field-other_doctor_name,#field-other_speciality,#field-other_msl_code').parent().hide();
=======
$('#field-other_doctor_name,#field-other_speciality,#field-other_legacy_code').prop({"required":false});
$('#field-other_doctor_name,#field-other_speciality,#field-other_legacy_code').parent().hide();
>>>>>>> 5906af6e (1.Removed Upload Rx Image option in GALVUS NPIs form 2.Shown Doctor list dropdown instead of text box in GALVUS NPI form 3.Added new field Upload POB Image option in Bisofig POB Drive form)
$('#field-contact_id').on('change',function(){
let dropDown=$('#field-contact_id').val();
if(dropDown==='others'){
$('#field-other_doctor_name,#field-other_speciality,#field-other_msl_code').parent().show();
$('#field-other_doctor_name,#field-other_speciality,#field-other_msl_code').prop({"required":true});
$('#field-speciality,#field-msl_code').parent().hide();
$('#field-speciality,#field-msl_code').prop({"required":false});
$('#field-other_doctor_name,#field-other_speciality,#field-other_legacy_code').parent().show();
$('#field-other_doctor_name,#field-other_speciality,#field-other_legacy_code').prop({"required":true});
$('#field-speciality,#field-legacy_code').parent().hide();
$('#field-speciality,#field-legacy_code').prop({"required":false});
}
else{
$('#field-other_doctor_name,#field-other_speciality,#field-other_msl_code').parent().hide();
$('#field-other_doctor_name,#field-other_speciality,#field-other_msl_code').prop({"required":false});
$('#field-speciality,#field-msl_code').parent().show();
$('#field-speciality,#field-msl_code').prop({"required":true});
$('#field-other_doctor_name,#field-other_speciality,#field-other_legacy_code').parent().hide();
$('#field-other_doctor_name,#field-other_speciality,#field-other_legacy_code').prop({"required":false});
$('#field-speciality,#field-legacy_code').parent().show();
$('#field-speciality,#field-legacy_code').prop({"required":true});
}
})

View File

@ -220,7 +220,49 @@
<script type="text/javascript">
jQuery(document).ready(function($){
$('#field-upload_pob_image_max_10_mb').on('change', function () {
const file = this.files[0];
if (!file) return;
const allowedTypes = [
'image/jpeg',
'image/jpg',
'image/png'
];
if (!allowedTypes.includes(file.type)) {
Swal.fire({
icon: 'error',
title: 'Invalid File',
text: 'Only JPG, JPEG and PNG files are allowed.'
});
$(this).val('');
}
});
$('#field-upload_pob_image_max_10_mb')
.attr('accept', '.jpg,.jpeg,.png,.pdf');
const maxSize = 10 * 1024 * 1024; // 10 MB
$('#field-upload_pob_image_max_10_mb')
.on('change', function () {
const file = this.files[0];
if (!file) return;
if (file.size > maxSize) {
Swal.fire({
icon: 'error',
title: 'File Too Large',
text: 'Maximum file size allowed is 10 MB.'
});
$(this).val('');
}
});
$("#field-contact_id").change(function(){