the_mechanic/app/Views/vehicle_form.php
venba-Inspriron-3558 e36d04770b FIX_Remaining issues
2025-11-03 10:57:17 +05:30

549 lines
26 KiB
PHP
Executable File

<?php include('layout/header.php'); ?>
<div class="row">
<div class="col-12">
<div class="page-title-box page-title-box-alt">
<h4 class="page-title"><?php echo $page_name?></h4>
<div class="page-title-right">
<a href="<?= base_url() . "vehicle_index"; ?>" class="btn btn-secondary waves-effect">Cancel</a>
<ol class="breadcrumb m-0">
<!-- <li class="breadcrumb-item"><a href="javascript: void(0);">Tables</a></li>
<li class="breadcrumb-item active">Datatables</li> -->
</ol>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-12">
<div class="card">
<div class="card-body">
<form id="vehicle_add_form_id" action="<?= base_url() . "add_vehicle"; ?>" method="post">
<h4 class="header-title">Vehicle Details :</h4>
<div class="form-row">
<div class="form-group col-md-4">
<label for="inputPassword4" class="col-form-label">Make<span class="text-danger">*</span></label>
<?= isset($vehicle['client_id']) ? '' : '<i type="button" class="fe-plus-circle" id="addMakeModalButton" style="font-size: 18px;" data-toggle="modal" data-target="#addMakeModal" title="Add Make"></i>' ?>
<select class="form-control SelExample" name="make" id="make" <?= isset($vehicle['make']) ? '' : 'required' ?>>
<?= isset($vehicle['make']) ? '' : '<option value="">Select a Make</option>' ?>
<?php foreach ($makeData as $value) : ?>
<?php if ((int)$value["isactive"] === 1) : ?>
<option value="<?= $value["make_id"] ?>" <?= isset($vehicle['make']) && $vehicle['make'] == $value["make_id"] ? 'selected' : '' ?>>
<?= $value["make"]; ?>
</option>
<?php endif; ?>
<?php endforeach; ?>
</select>
</div>
<div class="form-group col-md-4">
<label for="inputPassword4" class="col-form-label">Model<span class="text-danger">*</span></label>
<?= isset($vehicle['client_id']) ? '' : '<i type="button" class="fe-plus-circle" id="addModelModalButton" style="font-size: 18px;" data-toggle="modal" data-target="#addModelModal" title="Add Modal"></i>' ?>
<select class="form-control SelExample" name="model" id="model" <?= isset($vehicle['model']) ? '' : 'required' ?>>
<?php if (isset($vehicle["model_name"])) : ?>
<option value="<?= $vehicle["model"] ?>" >
<?= $vehicle["model_name"]; ?>
</option>
<?php endif; ?>
</select>
</div>
<div class="form-group col-md-4">
<label for="inputPassword4" class="col-form-label">Reg Number<span class="text-danger">*</span></label>
<input type="text" class="form-control" name="regno" id="regno" placeholder="Reg Number"value="<?= isset($vehicle['reg_no']) ? $vehicle['reg_no'] : '' ?>" required>
</div>
<div class="form-group col-md-4">
<label for="inputPassword4" class="col-form-label">Year of Manufacturing</label>
<input type="text" class="form-control" name="year_of_manufacturing" placeholder="Manufacturing Year" value="<?= isset($vehicle['year_of_manufacturing']) ? $vehicle['year_of_manufacturing'] : '' ?>" maxlength="4" minlength="4"onkeypress = "return onlyNumbers(event)">
</div>
<div class="form-group col-md-4">
<label for="inputPassword4" class="col-form-label">Colour</label>
<input type="text" class="form-control" name="colour" placeholder="Colour"value="<?= isset($vehicle['colour']) ? $vehicle['colour'] : '' ?>" >
</div>
<div class="form-group col-md-4">
<label for="inputPassword4" class="col-form-label">Specific</label>
<input type="text" class="form-control" name="specific" placeholder="Specific" value="<?= isset($vehicle['specific']) ? $vehicle['specific'] : '' ?>" >
</div>
</div>
</br>
<h4 class="header-title">Client Details :</h4>
<div class="form-row">
<div class="form-group col-md-4">
<label for="inputEmail4" class="col-form-label">Client Name<span class="text-danger">*</span></label>
<?= isset($vehicle['client_id']) ? '' : '<i type="button" class="fe-plus-circle" id="addClientModalButton" style="font-size: 18px;" data-toggle="modal" data-target="#addClientModal" title="Add Client"></i>' ?>
<select class="form-control cleint-select SelExample" id="clientData" name="client_name" required data-toggle="select2" >
<option value="">Select a Client</option>
<?php foreach ($client as $value) : ?>
<?php if ($value["isactive"] == 1) : ?>
<option value="<?= $value["client_id"] ?>" <?= isset($vehicle['client_id']) && $vehicle['client_id'] == $value["client_id"] ? 'selected' : '' ?>>
<?= $value["client_name"]; ?>
</option>
<?php endif; ?>
<?php endforeach; ?>
</select>
</div>
<div class="form-group col-md-4">
<label for="inputAddress" class="col-form-label">Mobile<span class="text-danger">*</span></label>
<input type="text" class="form-control" name="mobile_no" placeholder="Mobile" value="<?= isset($vehicle['mobile_no']) ? $vehicle['mobile_no'] : '' ?>" required maxlength="17" minlength="6">
</div>
<div class="form-group col-md-4">
</div>
<div class="form-group col-md-4">
<label for="inputAddress" class="col-form-label">GST Number<span class="text-danger"></span></label>
<input type="text" class="form-control" name="gstnumber" placeholder="GST Number" value="<?= isset($vehicle['gstnumber']) ? $vehicle['gstnumber'] : '' ?>"pattern="[0-9]{2}[A-Z]{5}[0-9]{4}[A-Z]{1}[0-9]{1}[Z]{1}[0-9A-Z]{1}" title="Enter a valid GST Number" />
</div>
<div class="form-group col-md-4">
<label for="inputEmail4" class="col-form-label">Email</label>
<input type="email" class="form-control" name="email" placeholder="Email" value="<?= isset($vehicle['email']) ? $vehicle['email'] : '' ?>" >
</div>
<div class="form-group col-md-4">
</div>
<div class="form-group col-md-3">
<label for="inputPassword4" class="col-form-label">Address</label>
<textarea class="form-control" name="address" placeholder="Address"><?= isset($vehicle['address']) ? $vehicle['address'] : '' ?></textarea>
</div>
<input type="hidden" id="vehicle_id" name="vehicle_id" value="<?= isset($vehicle['vehicle_id']) ? $vehicle['vehicle_id'] : '' ?>">
<div class="form-group col-md-3">
<label for="inputPassword4" class="col-form-label">City</label>
<input type="text" class="form-control" name="city" placeholder="City"value="<?= isset($vehicle['city']) ? $vehicle['city'] : '' ?>" >
</div>
<div class="form-group col-md-3">
<label for="inputPassword4" class="col-form-label">State</label>
<input type="text" class="form-control" name="state" placeholder="State"value="<?= isset($vehicle['state']) ? $vehicle['state'] : '' ?>" >
</div>
<div class="form-group col-md-3">
<label for="inputPassword4" class="col-form-label">Pin Code</label>
<input type="text" class="form-control" name="postalcode" placeholder="Pin Code"value="<?= isset($vehicle['postal_code']) ? $vehicle['postal_code'] : '' ?>" maxlength="6" minlength="6">
</div>
</div>
<button id="form_submit_button" type="submit" class="btn btn-primary" style="float:right;">Submit</button>
</div>
</form>
</div>
</div>
</div>
<?php include('layout/footer.php'); ?>
</div>
<!-- ADD MAKE -->
<div class="modal fade" id="addMakeModal" tabindex="-1" role="dialog" aria-labelledby="addMakeModalLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="addMakeModalLabel">Add New Make</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<form id="addClientForm">
<div class="form-group">
<label for="clientName">Make</label>
<input type="text" class="form-control" id="makes" placeholder="Enter Make"required>
</div>
<div class="form-group">
<label for="clientMobile">Model</label>
<input type="text" class="form-control" id="models" placeholder="Enter Model"required>
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary" id="saveMakeBtn">Save Make</button>
</div>
</div>
</div>
</div>
<!-- Client Modal -->
<div class="modal fade" id="addClientModal" tabindex="-1" role="dialog" aria-labelledby="addClientModalLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="addClientModalLabel">Add New Client</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<form id="addClientForm">
<div class="form-group">
<label for="clientName">Client Name</label>
<input type="text" class="form-control" id="clientName" placeholder="Enter client name"required>
</div>
<div class="form-group">
<label for="clientMobile">Mobile</label>
<input type="text" class="form-control" id="clientMobile" placeholder="Enter mobile number" maxlength="10" minlength="10" onkeypress = "return onlyNumbers(event)" required>
</div>
<div class="form-group">
<label for="clientType">Client Type</label>
<select class="form-control status-select" id="clientType" required >
<option value="">Select a Type</option>
<option value="Direct" >Direct</option>
<option value="Mechanic" >Mechanic</option>
<option value="Exp" >Exp</option>
</select>
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary" id="saveClientBtn">Save Client</button>
</div>
</div>
</div>
</div>
<!-- Modal popup -->
<div class="modal fade" id="addModelModal" tabindex="-1" role="dialog" aria-labelledby="addModelModalLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="addModelModalLabel">Add New Model</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<form id="addModelForm">
<div class="form-group">
<label for="makeSelect">Make</label><span id="makeSelectMessage" style="color: red;font-size: 12px; padding-left: 10px;"> (Please select Make from Product Form)</span>
<select class="form-control" id="makeSelect" required>
</select>
</div>
<div class="form-group">
<label for="modelInput">Model</label>
<input type="text" class="form-control" id="modelInput" placeholder="Enter Model" required>
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary" id="saveModelBtn">Save Model</button>
</div>
</div>
</div>
</div>
<link href="https://cdn.jsdelivr.net/npm/select2@4.1.0-beta.1/dist/css/select2.min.css" rel="stylesheet">
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.13/js/select2.min.js"></script>
<script>
$(document).ready(function() {
// Event listener for customer selection change
$('.cleint-select').change(function() {
var clientId = $(this).val();
if (clientId !== '') {
// Find the selected client in the client data
var selectedClient = clients.find(function(client) {
return client.client_id == clientId;
});
// Populate the billing address, city, state, country, and postal code fields
$('textarea[name="address"]').val(selectedClient.address);
$('input[name="city"]').val(selectedClient.city);
$('input[name="state"]').val(selectedClient.state);
$('input[name="mobile_no"]').val(selectedClient.mobile_no);
$('input[name="email"]').val(selectedClient.email);
$('input[name="postalcode"]').val(selectedClient.postal_code);
$('input[name="gstnumber"]').val(selectedClient.gstnumber);
}
});
$(".SelExample").select2();
// Event listener for change in make select dropdown
$("#make").on('change', function() {
var selected_makes = $(this).val(); // Get an array of selected make IDs
make_value = $('option:selected', this).text();
$('#makeSelect').empty();
$('#makeSelect').append('<option value="' + selected_makes + '">' + make_value + '</option>');
$('#makeSelectMessage').hide();
// AJAX request to fetch models based on selected make IDs
$.ajax({
url: '<?= base_url("get_models_vehicle") ?>', // URL to your controller method for fetching models
type: 'POST',
dataType: 'json',
data: { selected_makes: [selected_makes] },
success: function(response) {
// Clear existing options in model select dropdown
$("#model").empty();
$("#model").append('<option value=""> Select a Model </option>');
// Populate model select dropdown with fetched models
$.each(response, function(index, model) {
$("#model").append('<option value="' + model.model_id + '">' + model.model_name + '</option>');
});
// Refresh select2 to reflect changes
$("#model").trigger('change');
},
error: function(xhr, status, error) {
console.error(error); // Log any errors to the console
}
});
});
});
document.getElementById('regno').addEventListener('input', function(event) {
var inputText = event.target.value;
event.target.value = inputText.toUpperCase();
});
function onlyNumbers(event){
var charcode;
charcode = event.which || event.keyCode;
if(charcode>= 48 && charcode <= 57)return true;
return false;
}
$('#saveClientBtn').click(function() {
var clientName = $('#clientName').val();
var clientMobile = $('#clientMobile').val();
var clientType = $('#clientType').val();
const clientButton = $('#saveClientBtn');
clientButton.prop('disabled', true).text('Processing...');
if(clientName != '' && clientMobile != '' && clientType != ''){
// Send AJAX request to save the client
$.ajax({
url: '<?php echo base_url().'save_client'?>', // URL to your save_client method
method: 'POST',
data: {
client_name: clientName,
mobile_no: clientMobile,
client_type : clientType,
},
success: function(response) {
// Check if the operation was successful
if (response.success) {
// Client saved successfully, close the modal and do any additional actions
$('#addClientModal').modal('hide');
// Optionally, you can update the client dropdown or show a success message
toastr.success("Client saved successfully!");
console.log(response.clientData);
$("#clientData").append('<option value="' + response.clientData.client_id + '">' + response.clientData.client_name + '</option>');
// Manually select the newly added option
$("#clientData").val(response.clientData.client_id);
$('input[name="mobile_no"]').val(response.clientData.mobile_no);
clientButton.prop('disabled', false).text('Save Client');
} else {
// Client save operation failed, display error message
toastr.warning("Failed to save client. Please try again");
clientButton.prop('disabled', false).text('Save Client');
}
},
error: function(xhr, status, error) {
// AJAX request failed, display error message
console.error('Error occurred while saving client:', error);
toastr.warning("Failed to save client. Please try again");
clientButton.prop('disabled', false).text('Save Client');
}
});
}else{
toastr.warning("Please Fill All Datas");
clientButton.prop('disabled', false).text('Save Client');
}
});
</script>
<script>
// Define the clients array and populate it with data
var clients = <?php echo json_encode($client); ?>;
</script>
<!-- Mkae Modal ajax -->
<script>
$('#saveMakeBtn').click(function() {
var make = $('#makes').val();
var model = $('#models').val();
const makeButton = $('#saveMakeBtn');
makeButton.prop('disabled', true).text('Processing...');
if (make != '' && model != '') {
$.ajax({
url: '<?php echo base_url().'save_make'?>',
method: 'POST',
data: {
make: make,
model: model
},
success: function(response) {
if (response.success) {
$('#addMakeModalButton').modal('hide');
// Handle success here, e.g., show a success message
toastr.success("Make and model saved successfully");
window.location.reload();
makeButton.prop('disabled', false).text('Save Make');
} else {
// Handle failure here, e.g., show an error message
toastr.error("Failed to save make and model");
makeButton.prop('disabled', false).text('Save Make');
}
},
error: function(xhr, status, error) {
console.error('Error occurred while saving make and model:', error);
toastr.error("Failed to save make and model. Please try again");
makeButton.prop('disabled', false).text('Save Make');
}
});
} else {
toastr.warning("Please fill in both make and model fields");
makeButton.prop('disabled', false).text('Save Make');
}
});
</script>
<!-- aDD MODEL FUNCTION -->
<script>
// Populate make dropdown in the add model modal
function populateMakeDropdown() {
$.ajax({
url: '<?php echo base_url('get_makes') ?>', // URL to your CodeIgniter controller method to fetch makes
type: 'GET',
dataType: 'json',
success: function(response) {
$('#makeSelect').empty();
$('#makeSelect').append('<option value="">Select Make</option>');
response.forEach(function(make) {
$('#makeSelect').append('<option value="' + make.make_id + '">' + make.make + '</option>');
});
},
error: function(xhr, status, error) {
console.error(xhr.responseText);
}
});
}
// Call the function to populate make dropdown initially
$(document).ready(function() {
//populateMakeDropdown();
});
// Save model function
$('#saveModelBtn').click(function() {
var makeId = $('#makeSelect').val();
var model = $('#modelInput').val();
console.log(model);
const modalButton = $('#saveModelBtn');
modalButton.prop('disabled', true).text('Processing...');
modalButton.prop('disabled', false).text('Save Model');
if (makeId != '' && model != '') {
$.ajax({
url: '<?php echo base_url().'save_model'?>',
method: 'POST',
data: {
make_id: makeId,
modelvalue: model
},
success: function(response) {
if (response.success) {
$('#addModelModal').modal('hide');
toastr.success("Model saved successfully");
$('#model').append('<option value="' + response.model_id + '">' + response.model_value + '</option>');
modalButton.prop('disabled', false).text('Save Model');
} else {
toastr.error("Failed to save model");
modalButton.prop('disabled', false).text('Save Model');
}
},
error: function(xhr, status, error) {
console.error('Error occurred while saving model:', error);
toastr.error("Failed to save model. Please try again");
modalButton.prop('disabled', false).text('Save Model');
}
});
} else {
toastr.warning("Please fill in both make and model fields");
modalButton.prop('disabled', false).text('Save Model');
}
});
</script>
<script>
$(document).ready(function() {
var vehicle = <?php echo json_encode($vehicle); ?>;
console.log(vehicle);
if (vehicle && vehicle.reg_no) {
$('#regno').val(vehicle.reg_no).attr('readonly', true);
}
});
$(document).ready(function () {
$('#form_submit_button').click(function (event) {
event.preventDefault(); // Prevent the default form submission
var register_number = $('#regno').val();
var vehicle_id = $('#vehicle_id').val();
const submitButton = $('#form_submit_button');
submitButton.prop('disabled', true).text('Processing...');
if (!register_number) {
toastr.warning("Registration Number cannot be empty!");
$('#regno').focus(); // Set focus to the registration number input field
submitButton.prop('disabled', false).text('Submit');
return;
}
if (!vehicle_id) {
$.ajax({
url: '<?= base_url("checkRegisterNo") ?>', // URL to your controller method for checking register number
type: 'POST',
dataType: 'json',
data: { register_number: register_number },
success: function (response) {
if (response) {
$('#regno').val('').focus();
toastr.warning("Register Number Already Added!");
submitButton.prop('disabled', false).text('Submit');
} else {
// If the registration number is not a duplicate, submit the form
$('#vehicle_add_form_id')[0].submit();
}
},
error: function (xhr, status, error) {
console.error(error); // Log any errors to the console
toastr.error("An error occurred while checking the registration number.");
submitButton.prop('disabled', false).text('Submit');
}
});
} else {
$('#vehicle_add_form_id')[0].submit();
}
});
$('#vehicle_add_form_id').on('submit', function () {
const submitButton = $('#form_submit_button');
submitButton.prop('disabled', true).text('Processing...');
});
});
</script>
<style>
.select2-container--default .select2-results__option--highlighted[aria-selected]{
color:#ffffff;
background: #526dee!important;
}
.select2-container .select2-selection--single{
height: 36px;
border:1px solid #ced4da;
}
.select2-container--default .select2-selection--single .select2-selection__rendered{
line-height: 36px;
}
.select2-container--default .select2-selection--single .select2-selection__arrow{
top:4px;
}
</style>