Merge branch 'main' of http://192.168.1.200:3000/Stratawiz/Rapport-Laravel
Specific Folder FTP Upload / ftp-deploy (push) Successful in 1m10s Details

This commit is contained in:
zeeshan 2026-06-30 17:20:37 +05:30
commit 4447eb81d3
4 changed files with 1369 additions and 7 deletions

View File

@ -0,0 +1,432 @@
<!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}}">
@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)
<option value="{{$option->value}}" {{isset($question->value) && $question->value == $option->value ? 'selected':''}}>{{$option->display}}</option>
@endforeach
</select>
@break
@case('radio')
@foreach($question->options as $option)
<div class="form-check mb-2 form-check-success">
<input class="form-check-input" type="radio" name="{{$question->code}}" id="field-{{$question->code}}_{{$option->value}}" value="{{$option->value}}">
<label class="form-check-label" for="field-{{$question->code}}_{{$option->value}}">{{$option->display}}</label>
</div>
@endforeach
@break
@case('radiometrix')
@php
// Decode the first option's value to use as heading labels
$headings =
count($question->options) > 0
? json_decode($question->options[0]->value)
: [];
@endphp
{{-- Matrix Wrapper with Horizontal Scroll on Small Screens --}}
<div class="table-responsive">
<div class="d-table w-100">
{{-- Table Headers --}}
<div class="d-table-row font-weight-bold">
<div class="d-table-cell p-2" style="width: 150px;"></div>
{{-- Placeholder for row labels --}}
@foreach ($headings as $head)
<div class="d-table-cell text-center p-2">{{ $head }}
</div>
@endforeach
</div>
{{-- Table Rows --}}
@foreach ($question->options as $option)
@php $nn = json_decode($option->value); @endphp
<div class="d-table-row align-middle">
<div class="d-table-cell font-weight-bold p-2"
style="width: 150px;">
{{ $option->display }}
</div>
@foreach ($nn as $value)
<div class="d-table-cell text-center p-2">
<input type="radio"
id="field-{{ $option->display }}-{{ $value }}"
name="{{ $question->code }}[{{$option->display}}]" value="{{$value}}" class="form-check-input"
{{ isset($question->display) && $option->display != $option->display ? 'checked' : '' }}>
</div>
@endforeach
</div>
@endforeach
</div>
</div>
@break
@case('checkbox')
@foreach($question->options as $option)
<div class="form-check mb-2 form-check-primary ms-2">
<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
@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%;
}
.form-label {
font-weight:bold;
font-size:16px;
}
</style>
@include('layouts.shared/footer-script')
<script src="{{asset('assets/libs/sweetalert2/sweetalert2.min.js')}}"></script>
<script type="text/javascript">
jQuery(document).ready(function($){
$(document).ready(function () {
const states = [
"Andhra Pradesh",
"Arunachal Pradesh",
"Assam",
"Bihar",
"Chhattisgarh",
"Goa",
"Gujarat",
"Haryana",
"Himachal Pradesh",
"Jharkhand",
"Karnataka",
"Kerala",
"Madhya Pradesh",
"Maharashtra",
"Manipur",
"Meghalaya",
"Mizoram",
"Nagaland",
"Odisha",
"Punjab",
"Rajasthan",
"Sikkim",
"Tamil Nadu",
"Telangana",
"Tripura",
"Uttar Pradesh",
"Uttarakhand",
"West Bengal",
"Andaman and Nicobar Islands",
"Chandigarh",
"Dadra and Nagar Haveli and Daman and Diu",
"Delhi",
"Jammu and Kashmir",
"Ladakh",
"Lakshadweep",
"Puducherry"
];
let $stateDropdown = $("#field-state");
$.each(states, function (index, state) {
$stateDropdown.append(
$("<option>", {
value: state,
text: state
})
);
});
});
$('#field-employee_code_01, #field-emp_code_previous_employee, #field-l1_managers_emp_code, #field-l2_managers_emp_code').on('input', function () {
this.value = this.value.replace(/[^0-9]/g, '');
});
$('#field-employee_name_last_name, #field-employee_name_first_name, #field-state, #field-hq, #field-l1_managers_name, #field-l2_managers_name').on('input', function () {
this.value = this.value.replace(/[^a-zA-Z\s]/g, '');
});
$('#field-email_01').on('blur', function () {
let email = $(this).val().trim();
let emailPattern = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
if (email !== '' && !emailPattern.test(email)) {
Swal.fire({
icon: 'error',
title: 'Invalid Email',
text: 'Please enter a valid email address.'
});
$(this).val('');
$(this).focus();
}
});
$('#field-mobile_number').on('input', function () {
this.value = this.value.replace(/\D/g, '').slice(0, 10);
// First digit must be 6,7,8,9
if (this.value.length > 0 && !/^[6-9]/.test(this.value)) {
this.value = '';
}
});
$('#field-upload_doctor_list').on('change', function () {
let file = this.files[0];
if (file) {
let allowedExtensions = /(\.xls|\.xlsx)$/i;
if (!allowedExtensions.exec(file.name)) {
Swal.fire({
icon: 'error',
title: 'Invalid File',
text: 'Only Excel files (.xls, .xlsx) are allowed.'
});
$(this).val('');
return false;
}
}
});
$('#field-emp_code_previous_employee').closest('.col-md-12').hide();
$('#field-upload_doctor_list').closest('.col-md-12').hide();
$('#field-expansion_position_replacement').on('change', function () {
let selectedValue = $(this).val();
if (selectedValue === 'Replacement') {
$('#field-emp_code_previous_employee')
.closest('.col-md-12').show();
$('#field-emp_code_previous_employee').prop('required', true);
$('#field-upload_doctor_list')
.closest('.col-md-12').hide();
$('#field-upload_doctor_list').prop('required', false).val('');
} else if (selectedValue === 'Expansion') {
$('#field-upload_doctor_list')
.closest('.col-md-12').show();
$('#field-upload_doctor_list').prop('required', true);
$('#field-emp_code_previous_employee')
.closest('.col-md-12').hide();
$('#field-emp_code_previous_employee').prop('required', false).val('');
}
});
$('#field-expansion_position_replacement').trigger('change');
$('#field-user_id').change(function(){
let hierarchy = $('option:selected', this).attr('hierarchy');
$('#field-hierarchy_id').val(hierarchy)
event.preventDefault();
$.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));
}
},
});
console.log(hierarchy)
})
$('#report-form').on('submit', function(event){
event.preventDefault();
let mobile = $('#field-mobile_number').val().trim();
if (!/^[6-9]\d{9}$/.test(mobile)) {
Swal.fire({
icon: 'error',
title: 'Invalid Mobile Number',
text: 'Please enter a valid 10-digit mobile number starting with 6, 7, 8, or 9.'
}).then(() => {
$('#field-mobile_number').focus();
});
return false;
}
$("#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'
})
$('#report-form').trigger("reset");
} else {
Swal.fire({
icon: 'error',
title: data.hasOwnProperty('message') ? 'You are not mapped to any position code' : 'Data not submitted',
text: data.hasOwnProperty('message') ? 'for resolution please email Position code, L1 Manager and L2 Manager details to support1@stratawiz.com':'Something went wrong, please try again after some time!'
})
}
},
});
});
let today = new Date();
let dd = String(today.getDate()).padStart(2, '0');
let mm = String(today.getMonth() + 1).padStart(2, '0');
let yyyy = today.getFullYear();
let currentDate = yyyy + '-' + mm + '-' + dd;
$('#field-record_date')
.val(currentDate) // Auto-fill today's date
.attr('max', currentDate)
.prop('readonly', true); // Prevent manual editing
});
</script>
</body>
</html>

View File

@ -0,0 +1,396 @@
<!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}}">
@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')
<input type="{{$question->type}}"
id="field-{{$question->code}}"
name="{{$question->code}}"
class="form-control"
{{$question->required == 'yes'?'required':'' }}
{{ in_array($question->code, ['speciality','msl_code']) ? 'readonly' : '' }}
value="{{isset($question->value)?$question->value:''}}">
@break
@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('time')
<input
type="time"
id="field-{{$question->code}}"
name="{{$question->code}}"
class="form-control"
{{$question->required == 'yes' ? 'required' : ''}}
value="{{ isset($question->value) ? $question->value : '' }}"
step="60">
@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)
<!-- <option value="{{ $option->value }}" {{ isset($question->value) && $question->value == $option->value ? 'selected' : '' }}
{{ $question->code == 'contact_id' ? 'msl_code= ' . $option->contact->msl_code . ' ' : '' }}
{{ $question->code == 'contact_id' ? 'speciality= ' . (isset($option->contact->speciality) ? $option->contact->speciality :'') . ' ' : '' }} >
{{ $option->display }}
</option> -->
<option value="{{ $option->value }}"
{{ isset($question->value) && $question->value == $option->value ? 'selected' : '' }}
@if($question->code == 'contact_id')
msl_code="{{ $option->contact->msl_code ?? '' }}"
speciality="{{ $option->contact->speciality ?? '' }}"
@endif
>
{{ $option->display }}
</option>
@endforeach
</select>
@break
@case('radio')
@foreach($question->options as $option)
<div class="form-check mb-2 form-check-success">
<input class="form-check-input" type="radio" name="{{$question->code}}" id="field-{{$question->code}}_{{$option->value}}" value="{{$option->value}}">
<label class="form-check-label" for="field-{{$question->code}}_{{$option->value}}">{{$option->display}}</label>
</div>
@endforeach
@break
@case('radiometrix')
@php
// Decode the first option's value to use as heading labels
$headings =
count($question->options) > 0
? json_decode($question->options[0]->value)
: [];
@endphp
{{-- Matrix Wrapper with Horizontal Scroll on Small Screens --}}
<div class="table-responsive">
<div class="d-table w-100">
{{-- Table Headers --}}
<div class="d-table-row font-weight-bold">
<div class="d-table-cell p-2" style="width: 150px;"></div>
{{-- Placeholder for row labels --}}
@foreach ($headings as $head)
<div class="d-table-cell text-center p-2">{{ $head }}
</div>
@endforeach
</div>
{{-- Table Rows --}}
@foreach ($question->options as $option)
@php $nn = json_decode($option->value); @endphp
<div class="d-table-row align-middle">
<div class="d-table-cell font-weight-bold p-2"
style="width: 150px;">
{{ $option->display }}
</div>
@foreach ($nn as $value)
<div class="d-table-cell text-center p-2">
<input type="radio"
id="field-{{ $option->display }}-{{ $value }}"
name="{{ $question->code }}[{{$option->display}}]" value="{{$value}}" class="form-check-input"
{{ isset($question->display) && $option->display != $option->display ? 'checked' : '' }}>
</div>
@endforeach
</div>
@endforeach
</div>
</div>
@break
@case('checkbox')
@foreach($question->options as $option)
<div class="form-check mb-2 form-check-primary ms-2">
<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"
accept=".png,.jpg,.jpeg,.pdf"
{{$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
@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%;
}
.form-label {
font-weight:bold;
font-size:16px;
}
</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-user_id').change(function(){
let hierarchy = $('option:selected', this).attr('hierarchy');
$('#field-hierarchy_id').val(hierarchy)
event.preventDefault();
$.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) {
console.log(itm);
console.log(itm.contact);
$('#field-contact_id').append(
$("<option></option>")
.attr("value", itm.value)
.attr("msl_code", itm.contact.msl_code)
.attr("speciality", itm.contact.speciality)
.text(itm.display)
);
}
},
});
console.log(hierarchy)
})
$('#field-contact_id').on('change', function () {
let selected = $(this).find(':selected');
console.log("MSL:", selected.attr('msl_code'));
console.log("Speciality:", selected.attr('speciality'));
$('#field-msl_code').val(selected.attr('msl_code') || '');
$('#field-speciality').val(selected.attr('speciality') || '');
});
$('#report-form').on('submit', function(event){
event.preventDefault();
$("#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'
})
$('#report-form').trigger("reset");
} else {
Swal.fire({
icon: 'error',
title: data.hasOwnProperty('message') ? 'You are not mapped to any position code' : 'Data not submitted',
text: data.hasOwnProperty('message') ? 'for resolution please email Position code, L1 Manager and L2 Manager details to support1@stratawiz.com':'Something went wrong, please try again after some time!'
})
}
},
});
});
$('#field-speciality,#field-msl_code').attr('readonly',true);
$('#field-no_of_innohaler_sample_given,\
#field-no_of_rxs_generated,\
#field-no_of_pulmosmart_g_units_liquidated')
.on('keydown', function(e) {
// Block e, E, +, -, .
if (['e', 'E', '+', '-', '.'].includes(e.key)) {
e.preventDefault();
}
});
$('input[type="file"]').on('change', function () {
const file = this.files[0];
if (!file) return;
const allowed = [
'image/png',
'image/jpeg',
'application/pdf'
];
if (!allowed.includes(file.type)) {
Swal.fire({
icon: 'error',
title: 'Invalid File',
text: 'Only PNG, JPG, JPEG and PDF files are allowed.'
});
$(this).val('');
return;
}
if (file.size > 10 * 1024 * 1024) {
Swal.fire({
icon: 'error',
title: 'File Too Large',
text: 'Maximum file size is 10 MB.'
});
$(this).val('');
}
});
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();
var todayDate = yyyy + '-' + mm + '-' + dd;
var plandateField = document.getElementById('field-record_date');
if(plandateField){
plandateField.setAttribute('max', todayDate);
plandateField.setAttribute('min', yyyy + '-06-01');
}
});
</script>
</body>
</html>

View File

@ -590,6 +590,14 @@ select option:disabled {
prefillDoctorTableSection($(this), $(this).data('category'));
});
}
function refreshAllDropdownRules(){
updateDoctorDropdowns();
updateOtherMoleculeOptions();
$('.doctor-row').each(function(){
toggleOtherMoleculeRxSupport($(this));
});
}
function checkOtherRxHeader(){
let visible = false;
@ -991,7 +999,7 @@ function updateOtherMoleculeOptions() {
});
}
function updateOtherMoleculeDropdowns($tbody) {
/* function updateOtherMoleculeDropdowns($tbody) {
let sectionMolecule = $tbody.data('molecule-use');
$tbody.find('.other-molecule-select').each(function() {
@ -1011,7 +1019,7 @@ function updateOtherMoleculeOptions() {
}
});
});
}
}*/
function buildSubmitFormData() {
let fd = new FormData();
@ -1101,21 +1109,51 @@ function updateOtherMoleculeOptions() {
});
prefillAllDoctorTables();
refreshAllDropdownRules();
/* $('.doctor-table-body').each(function() {
let $tbody = $(this);
updateOtherMoleculeDropdowns($tbody);
updateDoctorDropdowns($tbody);
}); */
/*
$('.doctor-table-body').each(function() {
let $tbody = $(this);
updateOtherMoleculeDropdowns($tbody);
});
*/
updateDoctorDropdowns();
$('#report-form').on('submit', function(event) {
event.preventDefault();
let isValid = true;
let errorMsg = '';
$('.doctor-row').each(function(index){
let doctor = $(this).find('.doctor-select').val();
let rx = $(this).find('.rx-support-select').val();
let other = $(this).find('.other-molecule-select').val();
let otherRx = $(this).find('.other-molecule-rx-support').val();
if(!doctor || !rx || !other){
isValid = false;
errorMsg = 'Please fill all Doctor, Rxn/Week Support and Other Molecule Use fields.';
return false;
}
if(other !== 'No' && !otherRx){
isValid = false;
errorMsg = 'Please fill Other Molecule Rxn/Week Support.';
return false;
}
});
if(!isValid){
Swal.fire({
icon: 'warning',
title: 'Validation Error',
text: errorMsg
});
return;
}
$("#pageloader").fadeIn();
$.ajax({

View File

@ -0,0 +1,496 @@
<!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" />
<link href="{{ URL::asset('assets/libs/cropper/cropper.min.css')}}" rel="stylesheet" type="text/css" />
<link href="{{ URL::asset('assets/libs/dropify/dropify.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>
@php
$history = Formhelper::getMultiformData(
$form->partition,
$form_id,
$form->user_id
);
$historyData = [];
if(isset($history->data->submissions) && is_iterable($history->data->submissions)){
foreach($history->data->submissions as $sub){
$formdata = $sub->formdata ?? null;
if(!$formdata){
continue;
}
// Doctor Name
$doctorName = '';
if(!empty($formdata->doctor_name)){
if(is_array($formdata->doctor_name) || $formdata->doctor_name instanceof \Traversable){
$doctorName = trim((string)(array_values((array)$formdata->doctor_name)[0] ?? ''));
}else{
$doctorName = trim((string)$formdata->doctor_name);
}
}
// Date
$recordDate = '';
if(!empty($formdata->record_date)){
if(is_array($formdata->record_date) || $formdata->record_date instanceof \Traversable){
$recordDate = trim((string)(array_values((array)$formdata->record_date)[0] ?? ''));
}else{
$recordDate = trim((string)$formdata->record_date);
}
}
$historyData[] = [
'submission_id' => $sub->id,
'date' => $recordDate,
'doctor' => $doctorName,
'status' => ucfirst($sub->workflow_status ?? ''),
];
}
}
@endphp
{{-- <pre>
{{ print_r($history->data->submissions[0], true) }}
</pre> --}}
<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>
<div class="col-12 mb-3">
<button
type="button"
class="btn btn-primary"
id="btnNewInvite">
+ Novel Meeting Invite
</button>
</div>
<div id="template-wrapper" class="row">
<h5>Select any one of the templates</h5>
@foreach($personalizations as $pers)
<div class="col-6 col-md-4 mt-3">
<img src="{{$pers->icon}}" class="img-fluid" persdata='{!! json_encode($pers) !!}'><br />
<span>{{$pers->title}}</span>
</div>
@endforeach
</div>
<div id="form-wrapper">
<form method="POST" action="/form/submitpersonalized" id="report-form" enctype="multipart/form-data">
<input type="hidden" name="form_id" value="{{$form_id}}">
<input type="hidden" name="form_info" id="form_info" value="">
@csrf
<div class="row">
<div class="col-7">
<label for="field-template_id" class="form-label"> Selected Template </label>
</div>
<div class="col-4 mb-2" id="wrapper-template_id">
<img src="" class="img-thumbnail" style="max-height:150px">
</div>
<br class="clearfix" />
@foreach($questions as $question)
<div class="col-md-12 mb-2 question-wrapper" id="wrapper-{{$question->id}}">
<label for="field-{{$question->code}}" class="form-label">{{$question->question}} <span class="req-star text-danger" style="display:none" aria-hidden="true">*</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" 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" value="{{isset($question->value)?$question->value:0}}">
@break
@case('textarea')
<textarea id="field-{{$question->code}}" name="{{$question->code}}" class="form-control" >{{isset($question->value)?$question->value:''}}</textarea>
@break
@case('dropdown')
<select class="form-control" id="field-{{$question->code}}" name="{{$question->code}}" >
<option value=""> -- Select -- </option>
@foreach($question->options as $option)
<option value="{{$option->value}}" {{isset($question->value) && $question->value == $option->value ? 'selected':''}}>{{$option->display}}</option>
@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':''}}>
<label class="form-check-label" for="field-{{$question->code}}-{{$option->value}}">{{$option->display}}</label>
</div>
@endforeach
@break
@case('file')
<input type="file" name="{{$question->code}}" class="dropify"
data-allowed-file-extensions="png jpg jpeg" />
<p class="text-muted text-center mt-2 mb-0">500MB Max File size</p>
@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="text" id="field-{{$option->value}}" name="{{$option->value}}" class="form-control" value="{{isset($option->val)?$option->val:''}}">
</div>
@endforeach
</div>
@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
</div>
</form>
</div>
<div id="cropper-wrapper">
<form method="POST" action="/form/submitpersonalizedimages" id="image-form" enctype="multipart/form-data">
<input type="hidden" name="form_id" value="{{$form_id}}">
@csrf
<div class="row">
<div class="col-12 img-container">
</div>
<div class="col-12 mt-1">
{{-- <button class="btn btn-primary" id="cropandgo">Use Image and download</button> --}}
<button class="btn btn-primary" id="cropandgo">Use Image</button>
</div>
</div>
</form>
</div>
<div id="history-wrapper">
@if(count($historyData))
<hr>
<h5 class="mt-4">History</h5>
<div class="table-responsive">
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>Date</th>
<th>Doctor Name</th>
<th>Status</th>
<th>Action</th>
</tr>
</thead>
<tbody>
{{-- <pre>
{{ print_r($historyData, true) }}
</pre> --}}
@foreach($historyData as $row)
<tr>
<td>{{ $row['date'] }}</td>
<td>{{ $row['doctor'] }}</td>
<td>{{ ucfirst($row['status']) }}</td>
<td>
@if(strtolower($row['status']) == 'approved')
<a href="/form/downloadpersonalization?id={{ $row['submission_id'] }}"
class="btn btn-success btn-sm">
Download
</a>
@endif
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
@endif
</div>
</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 src="{{asset('assets/libs/cropper/cropper.min.js')}}"></script>
<script src="{{ URL::asset('assets/libs/dropify/dropify.min.js') }}"></script>
<script type="text/javascript">
jQuery(document).ready(function($){
$('#history-wrapper').show();
$('#form-wrapper').hide()
$('#cropper-wrapper').hide()
$('#template-wrapper').hide();
$('#btnNewInvite').click(function(){
$(this).hide();
$('#history-wrapper').hide();
$('#template-wrapper').show();
});
$('#template-wrapper .img-fluid').click(function(){
$('#history-wrapper').hide();
$('#form_info').val( $(this).attr('persdata') )
console.log($(this).attr('persdata'))
let personalize = JSON.parse( $(this).attr('persdata') )
$('.question-wrapper').hide()
$('#report-form .question-wrapper').each(function () {
$(this).find('.req-star').hide()
$(this).find(':input').removeAttr('required')
})
for(let que of personalize.questions) {
let $w = $('#wrapper-'+que)
$w.show()
$w.find('.req-star').show()
$w.find('input:not([type="hidden"]):not([type="checkbox"]), textarea, select').attr('required', 'required')
}
$('#report-form :input').removeAttr('readonly')
$('#wrapper-template_id img').attr('src', personalize.icon)
$('#template-wrapper').hide()
$('#form-wrapper').show()
// $('.dropify').unbind()
// $('.dropify').dropify({
// messages: {
// 'default': 'Drag and drop a file here or click',
// 'replace': 'Drag and drop or click to replace',
// 'remove': 'Remove',
// 'error': 'Ooops, something wrong appended.'
// },
// error: {
// 'fileSize': 'The file size is too big (500MB max).'
// }
// });
})
$('.dropify').dropify({
messages: {
'default': 'Drag and drop a file here or click',
'replace': 'Drag and drop or click to replace',
'remove': 'Remove',
'error': 'Ooops, something wrong appended.'
},
error: {
'fileSize': 'The file size is too big (500MB max).'
}
});
$('#wrapper-template_id img').click(function(){
$('#form-wrapper').hide()
$('#cropper-wrapper').hide()
$('#template-wrapper').show()
})
$('#report-form').on('submit', function(event){
event.preventDefault();
$("#pageloader").fadeIn();
$.ajax({
type: "POST",
url: '/form/submitpersonalized',
data: new FormData($('#report-form')[0]),
processData: false,
contentType: false,
success: function( data ) {
$('#cropper-wrapper').show()
$('#form-wrapper').hide()
$("#pageloader").fadeOut();
console.log(data)
if(data.hasOwnProperty('images_fields') && data.images_fields.length > 0 ) {
for(let im of data.images_fields) {
let pos = data.form_info.positions.map(p => JSON.parse(p))
console.log(pos)
pos = pos.map(p => p.find(pi => pi.field_name == im ) )
console.log(pos)
pos = pos[0]
//im = JSON.parse(im)
console.log(pos)
//if(im.type == 'image') {
$('.img-container').append(`<div class="mt-5">
<img id="image-${im}" src="${data[im]}" alt="Picture" class="img-fluid">
<input type="hidden" id="field-image-${im}" name="${im}" value="">
</div>`)
$('#cropper-wrapper #image-'+im).attr('src', data[im])
var tmpImg = new Image() ;
tmpImg.src = data[im];
tmpImg.onload = function() {
let $image = $('#image-'+im);
let options = {
aspectRatio: pos.width/pos.height,
crop: function (e) {
console.log(e);
},
cropend: function (e) {
$('#field-image-'+im).val($image.cropper("getCroppedCanvas", { maxWidth: pos.width*2, maxHeight: pos.height*2 }).toDataURL());
},
ready: function (e) {
$('#field-image-'+im).val($image.cropper("getCroppedCanvas", { maxWidth: pos.width*2, maxHeight: pos.height*2 }).toDataURL());
},
};
$image.cropper(options);
}
//}
}
} else {
document.location.href = '/form/generatepersonalization'
}
},
});
});
// $('#image-form').on('submit', function(event){
// event.preventDefault();
// $("#pageloader").fadeIn();
// $.ajax({
// type: "POST",
// url: '/form/submitpersonalizedimages',
// data: new FormData($('#image-form')[0]),
// processData: false,
// contentType: false,
// success: function( data ) {
// console.log(data)
// },
// });
// });
$('#image-form').on('submit', function(event){
event.preventDefault();
$("#pageloader").fadeIn();
$.ajax({
type: "POST",
url: '/form/submitpersonalizedimages',
data: new FormData($('#image-form')[0]),
processData: false,
contentType: false,
success: function(data){
$("#pageloader").fadeOut();
Swal.fire({
icon: 'success',
title: 'Request Submitted',
text: 'Request has been sent to manager for approval.'
}).then(function(){
location.reload();
});
},
error:function(){
$("#pageloader").fadeOut();
Swal.fire({
icon:'error',
title:'Error',
text:'Something went wrong.'
});
}
});
});
});
</script>
</body>
</html>