Changes
Specific Folder FTP Upload / ftp-deploy (push) Successful in 29s Details

This commit is contained in:
Ravi Gulhane 2026-11-04 18:38:34 +05:30
parent 1f2134e6de
commit 0eac65946b
2 changed files with 168 additions and 258 deletions

View File

@ -158,6 +158,33 @@ class FormController extends Controller
$data['additional'] = $additional_info;
}
// Data to be Validated (team2): list logged-in user submissions when not editing
if ($formdata->form_id === '1793786953-f43d04cb-856d-4cfe-abcc-358042ecb98b' && empty($id)) {
$history = LambdaRequest::postrequest('form', 'formentity/getformhistory', [
'form_id' => $formdata->form_id,
'user_id' => $formdata->user_id,
'partition' => $formdata->partition,
'limit' => 10000,
]);
$submissions = (isset($history->data) && isset($history->data->submissions) && is_array($history->data->submissions))
? $history->data->submissions
: [];
$isBlank = function ($value) {
return $this->isBlankFormValue($value);
};
usort($submissions, function ($a, $b) use ($isBlank) {
$aMissing = $isBlank($a->formdata->mobile_no ?? null)
|| $isBlank($a->formdata->email_id ?? null);
$bMissing = $isBlank($b->formdata->mobile_no ?? null)
|| $isBlank($b->formdata->email_id ?? null);
if ($aMissing === $bMissing) {
return 0;
}
return $aMissing ? -1 : 1;
});
$data['submissions'] = $submissions;
}
// if ($formdata->form_id == '1731413373-65062594-7136-45b2-a846-b34be9afe3b9') {
// // For debug: print $data
// echo '<pre>' . print_r($data, true) . '</pre>'; exit;
@ -194,6 +221,17 @@ class FormController extends Controller
}
}
protected function isBlankFormValue($value): bool
{
if ($value === null) {
return true;
}
if (is_array($value) || is_object($value)) {
return count((array) $value) === 0;
}
return trim((string) $value) === '';
}
protected function muscle_questions($formdata) {
switch($formdata->form_id) {
case '63c2ff17-a69c-4b47-af33-1d9909c608b6':
@ -9013,6 +9051,10 @@ class FormController extends Controller
$form_id = $request->input('form_id', $formdata->form_id);
$formdata->form_id = $form_id;
$request->session()->put('formdata', $formdata);
// Data to be Validated: list lives on the form itself (no separate history / new entry)
if ($form_id === '1793786953-f43d04cb-856d-4cfe-abcc-358042ecb98b') {
return redirect('/form/show');
}
//echo '<pre>'; print_r($formdata); exit;
$history = LambdaRequest::postrequest('form', 'formentity/getformhistory', ['form_id' => $form_id, 'user_id' => $formdata->user_id, 'partition' => $formdata->partition ]);
//echo '<pre>'; print_r($history); print_r($formdata); exit;

View File

@ -1,7 +1,26 @@
@php
$isEdit = !empty($id);
$qMap = [];
foreach ($questions as $question) {
$qMap[$question->code] = $question;
}
$val = function ($code) use ($qMap) {
return isset($qMap[$code]) && isset($qMap[$code]->value) ? $qMap[$code]->value : '';
};
$isBlank = function ($value) {
if ($value === null) {
return true;
}
if (is_array($value) || is_object($value)) {
return count((array) $value) === 0;
}
return trim((string) $value) === '';
};
@endphp
<!DOCTYPE html>
<html lang="en">
<head>
@include('layouts.shared/title-meta', ['title' => "Form"])
@include('layouts.shared/title-meta', ['title' => $form->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>
@ -12,7 +31,7 @@
<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="{{ $isEdit ? 'col-md-8 col-lg-6 col-xl-5' : 'col-12' }} p-0">
<div class="card bg-pattern">
<div class="card-body p-3 row">
@ -21,246 +40,113 @@
@if(session('success'))<div class=" alert alert-success">{{ session('success') }}
</div>
<br>@endif
<div class="col-8">
<div class="{{ $isEdit ? 'col-8' : 'col-12' }}">
<h4 class="page-title">{{$form->title}}</h4>
</div>
@if(!isset($form->is_approval) || (isset($form->is_approval) && $form->is_approval != 'yes' ) )
@if($isEdit)
<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
<a href="/form/show" class="float-end pt-1">Back</a>
</div>
@endif
@if(isset($form->user_info))
@if(!$isEdit)
<div class="col-12">
<h6>Submitted By: {{$form->user_info->name}}</h6>
<div class="table-responsive">
<table class="table table-sm table-bordered align-middle mb-0" id="validation-list">
<thead class="table-light">
<tr>
<th>Edit</th>
<th>Doctor Name</th>
<th>MSL Code</th>
<th>Mobile</th>
<th>Email</th>
<th>Contact Status</th>
</tr>
</thead>
<tbody>
@forelse(($submissions ?? []) as $submission)
@php
$fd = $submission->formdata ?? (object)[];
$mobile = $fd->mobile_no ?? '';
$email = $fd->email_id ?? '';
$missing = $isBlank($mobile) || $isBlank($email);
@endphp
<tr class="{{ $missing ? 'table-danger' : '' }}">
<td>
<a href="/form/show?form_id={{ $form_id }}&id={{ $submission->id }}" class="btn btn-primary btn-xs">Edit</a>
</td>
<td>{{ $fd->contact_id ?? '' }}</td>
<td>{{ $fd->msl_code ?? '' }}</td>
<td>{{ $mobile }}</td>
<td>{{ $email }}</td>
<td>{{ $fd->contact_status ?? '' }}</td>
</tr>
@empty
<tr>
<td colspan="6" class="text-center text-muted">No submissions found.</td>
</tr>
@endforelse
</tbody>
</table>
</div>
@endif
</div>
@else
<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="">
<label for="field-contact_id" class="form-label">Doctor Name</label>
<input type="text" id="field-contact_id" name="contact_id" class="form-control" value="{{ $val('contact_id') }}" readonly>
</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')
@php
$fieldLabel = strtolower(trim($question->question));
@endphp
@if(str_contains($fieldLabel, 'mobile'))
<label for="field-msl_code" class="form-label">MSL Code</label>
<input type="text" id="field-msl_code" name="msl_code" class="form-control" value="{{ $val('msl_code') }}" readonly>
</div>
<div class="col-md-12 mb-2">
<label for="field-mobile_no" class="form-label">Mobile <span class="text-danger">*</span></label>
<input
type="tel"
id="field-{{$question->code}}"
name="{{$question->code}}"
id="field-mobile_no"
name="mobile_no"
class="form-control"
inputmode="numeric"
pattern="[6-9][0-9]{9}"
minlength="10"
maxlength="10"
title="Enter a valid 10-digit mobile number starting with 6, 7, 8, or 9."
{{$question->required == 'yes' ? 'required' : ''}}
value="{{isset($question->value) ? $question->value : ''}}"
required
value="{{ $val('mobile_no') }}"
>
@elseif(str_contains($fieldLabel, 'email'))
</div>
<div class="col-md-12 mb-2">
<label for="field-email_id" class="form-label">Email <span class="text-danger">*</span></label>
<input
type="email"
id="field-{{$question->code}}"
name="{{$question->code}}"
id="field-email_id"
name="email_id"
class="form-control"
maxlength="254"
pattern="^[a-zA-Z0-9_+%-]+(\.[a-zA-Z0-9_+%-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)+$"
title="Enter a valid email address, e.g. name@example.com"
{{$question->required == 'yes' ? 'required' : ''}}
value="{{isset($question->value) ? $question->value : ''}}"
required
value="{{ $val('email_id') }}"
>
@else
<input
type="{{$question->type}}"
id="field-{{$question->code}}"
name="{{$question->code}}"
class="form-control"
{{$question->required == 'yes' ? 'required' : ''}}
value="{{isset($question->value) ? $question->value : ''}}"
>
@endif
@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('number')
@php
$fieldLabel = strtolower(trim($question->question));
@endphp
@if(str_contains($fieldLabel, 'mobile'))
<input
type="tel"
id="field-{{$question->code}}"
name="{{$question->code}}"
class="form-control"
inputmode="numeric"
pattern="[6-9][0-9]{9}"
minlength="10"
maxlength="10"
title="Enter exactly 10 digits starting with 6, 7, 8, or 9"
{{$question->required == 'yes' ? 'required' : ''}}
value="{{isset($question->value) ? $question->value : ''}}"
>
@else
<input
type="number"
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}}"
>
@endif
@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>
<button class="btn btn-primary" type="submit" id="submit-btn"> Update </button>
</div>
@endif
</form>
@endif
</div> <!-- end card-body -->
</div>
<!-- end card -->
<!-- end row -->
</div> <!-- end col -->
</div>
<!-- end row -->
</div>
<!-- end container -->
</div>
<!-- end page -->
</div>
</div>
<style type="text/css">
#pageloader {
background: rgba( 255, 255, 255, 0.8 );
@ -282,33 +168,15 @@
font-weight:bold;
font-size:16px;
}
#validation-list td, #validation-list th {
white-space: nowrap;
}
</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) {
$('#field-contact_id').append($("<option></option>").attr("value",itm.value).text(itm.display));
}
},
});
console.log(hierarchy)
})
@if($isEdit)
$('#report-form').on('submit', function(event){
event.preventDefault();
$("#pageloader").fadeIn();
@ -323,30 +191,30 @@
if(data.status == 'success') {
Swal.fire({
title: 'Great!',
text: 'Your data is successfully submitted!',
text: 'Your data is successfully updated!',
icon: 'success'
})
$('#report-form').trigger("reset");
}).then(function(){
window.location.href = '/form/show';
});
} 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!'
title: data.hasOwnProperty('message') ? 'Update failed' : 'Data not submitted',
text: data.hasOwnProperty('message') ? data.message : 'Something went wrong, please try again after some time!'
})
}
},
error: function() {
$("#pageloader").fadeOut();
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);
@endif
});
</script>
</body>