File: //home/cafsindia/.trash/application_bkold/views/invalid_punch_request/manage.php
<?php
$this->load->view("partial/header");
$page_name = ucwords(str_replace("_"," ",$controller_name));
$prime_id = "prime_".$controller_name."_id";
/* PAGE TITLE AND BUTTONS- START */
$breadcrumb = "";
if($link_li_line){
$breadcrumb .= "<li class='dropdown'>
<a class='btn btn-xs btn-primary dropdown-toggle' type='button' id='dropdownMenu2' data-toggle='dropdown' aria-haspopup='true' aria-expanded='false'>
<i class='fa fa-plus-circle' aria-hidden='true'></i> Quick Links
</a>
<ul class='dropdown-menu dropdown-menu-left' aria-labelledby='dropdownMenu2'>
$link_li_line
</ul>
</li>";
}
$breadcrumb .="<li><a href='$site_url#Home'>Home</a></li>
<li><a href='".site_url($controller_name)."#$controller_name'>$page_name</a></li>
<li class='active'>List</li>";
?>
<!-- MODULE TITLE !!! -->
<div class='row title_content'>
<div class='col-md-2 col-xs-4'>
<h1 class='page_txt' style="overflow: visible !important;"><?php echo $page_name;?></h1>
</div>
<div class='col-md-10 col-xs-8'>
<ol class="breadcrumb">
<?php echo $breadcrumb; ?>
</ol>
</div>
</div>
<div id="toolbar" class="form-inline">
<div class="col-md-12">
<?php echo form_open("$controller_name/invalid_punch_log",array('id'=>'invalid_punch_form')); ?>
<!-- START DATE -->
<div class="form-group">
<?php
echo form_label('Start Date', 'start_date', array('class' => 'required'));
echo form_input(array('name' => 'start_date', 'id' => 'start_date', 'class' => 'form-control input-sm datepicker','placeholder' => 'Start Date'));
?>
</div>
<!-- END DATE -->
<div class="form-group">
<?php
echo form_label('End Date', 'end_date', array('class' => 'required'));
echo form_input(array('name' => 'end_date', 'id' => 'end_date', 'class' => 'form-control input-sm datepicker','placeholder' => 'End Date'));
?>
</div>
</div>
</div>
<div class="row" >
<div class='col-md-12' id='table_div' style='display: none;'>
<ul class="nav nav-tabs">
<li class="active"><a data-toggle="tab" href="#request_punch"> Request punch </a></li>
<li><a data-toggle="tab" href="#track_status"> Request Status </a></li>
</ul>
<div class="tab-content">
<div id = "request_punch" class = "tab-pane fade in active" >
<div class='col-md-12' style='margin:10px;' id="rslt_info"></div>
</div>
<div id = "track_status" class = "tab-pane fade">
<div class='col-md-12' style='margin:10px;' id="track_info"></div>
</div>
</div>
</div>
</div>
<style>
.tab-content{
overflow:hidden !important;
max-height: 10000px !important;
}
td.dataTables_empty {
height:40px !important;
padding: 20px;
text-align: center;
}
.card-body {
padding: 0px 20px;
}
#track_list th, #track_list td ,#details_list th, #details_list td {
text-align: center;
}
.btn-link {
text-decoration: none;
color: #007bff;
cursor: pointer;
}
#details_list >tbody>tr>td ,#track_list >tbody>tr>td {
padding:0px !important;
}
/* Reason color*/
span[name='reason'] {
color: #d9534f;
font-weight: bold;
}
.btn-submit {
margin-right:30px;
float:right;
padding: 4px ;
border-radius: 4px;
cursor: pointer;
transition: background-color 0.3s ease;
}
.btn-submit:hover {
background-color: #870000;
}
form input[readonly] {
background-color: transparent !important;
border: none !important;
}
.bootstrap-datetimepicker-widget {
z-index:10000000000;
position: fixed;
}
/*table.dataTable thead th, table.dataTable thead td {
background-color: #f5f5f5 !important;
color: #2c3e50 !important;
}*/
</style>
<script type="text/javascript">
$(document).ready(function(){
$(".datepicker").datetimepicker({format: 'DD-MM-YYYY'});
//CALLBACK FUNCTION
tos_posting_mon_day("4");
});
//Funtion onload for table display.
function request_punch(){
var start_date = $("#start_date").val();
var end_date = $("#end_date").val();
$('.dataTables_processing').html('<span style="color:#CC3366;"><i class="fa fa-spinner fa-spin fa-2x fa-fw"></i><br/>Loading...</span>');
if(start_date && end_date){
$.ajax({
type: 'POST',
url: '<?php echo site_url("$this->control_name/request_punch");?>',
data: { start_date: start_date, end_date: end_date },
success: function (response){
$('.dataTables_processing').html('');
var rslt = JSON.parse(response);
if(rslt.success){
$('#table_div').show();
$("#rslt_info").html(rslt.table_content);
$("#track_info").html(rslt.track_content);
$(".datetimepicker").datetimepicker({ format: 'DD-MM-YYYY HH:mm:ss' });
$('#details_list').DataTable({
"autoWidth": false,
"columnDefs": [
{ "width": "50%", "targets": 4 }
],
language: {
lengthMenu: "<span style='margin-top:8px;margin-left:10px;'>Display</span> _MENU_ <span style='margin-top:8px;'>Records</span>",
searchPlaceholder: "Search records",
search: "",
},
});
$('#track_list').DataTable({
"autoWidth": false,
"columnDefs": [
{ "width": "35%", "targets": 7 }
],
language: {
lengthMenu: "<span style='margin-top:8px;margin-left:10px;'>Display</span> _MENU_ <span style='margin-top:8px;'>Records</span>",
searchPlaceholder: "Search records",
search: "",
},
});
}
$('#details_list').DataTable().draw();
$('#track_list').DataTable().draw();
$('input[type=search]').addClass('form-control input-sm select2');
$("select[name='table_length']").addClass('form-control input-sm');
},
complete: function(){
$('.dataTables_processing').html('');
}
});
}else{
toastr.error("Please choose all the fields.!");
}
}
function submitForm(user_id, row, shift_date, validation_ids) {
var form_id = 'formData_' + row;
var form = $('#' + form_id);
var submit = $('#submit_' + row);
var previous_out_punch;
// custom validation methods
$.validator.addMethod("in_punch_same_or_previous_day",inpunch_prev,"In Punch should be the same day or the previous day");
$.validator.addMethod("out_punch_same_or_next_day",outpunch_next, "Out Punch should be the same day or the next day");
$.validator.addMethod("out_punch_greater_than_in_punch", outpunches, "Out Punch should be Greater than In Punch");
$.validator.addMethod("in_punch_lesser_than_out_punch", inpunches, "In Punch should be Lesser than Out Punch");
// For previous outpunch based inpunch validation.
$.validator.addMethod("in_punch_greater_than_previous_out_punch", function(value, element){
return inPunchesValidation(value, element, validation_ids);
}, "In Punch should be greater than previous Out Punch");
// Validate the form
var rules = {};
validation_ids.forEach(function (curr_validation_id) {
rules['in_punch_' + curr_validation_id] = { required: true, in_punch_greater_than_previous_out_punch: curr_validation_id, in_punch_lesser_than_out_punch: curr_validation_id, in_punch_same_or_previous_day: curr_validation_id };
rules['out_punch_' + curr_validation_id] = { required: true, out_punch_greater_than_in_punch: curr_validation_id, out_punch_same_or_next_day: curr_validation_id };
rules['remarks_' + curr_validation_id] = { required: true };
});
form.validate({
rules: rules,
errorPlacement: function (error, element) {
error.insertAfter(element);
},
});
// Check if the form is valid
if(form.valid()) {
// return false;
var formData = form.serializeArray();
$(submit).html("<i class='fa fa-spinner fa-spin'></i> Processing...").attr('disabled', 'disabled');
$.ajax({
type: 'POST',
url : '<?php echo site_url("$this->control_name/request_entry"); ?>',
data: { user_id: user_id, row: row, shift_date: shift_date, formData: formData },
success: function (response){
var rslt = JSON.parse(response);
$(submit).attr('disabled', false).html("Submit");
if(rslt.success){
$("#track_info").html(rslt.track_content);
toastr.success(rslt.message);
$('#row_' + rslt.row_id).remove();
request_punch();
$('#track_list').DataTable({
"autoWidth": false,
"columnDefs": [
{ "width": "35%", "targets": 7 }
],
language: {
lengthMenu: "<span style='margin-top:8px;margin-left:10px;'>Display</span> _MENU_ <span style='margin-top:8px;'>Records</span>",
searchPlaceholder: "Search records",
search: "",
},
});
}else{
toastr.error(rslt.message);
}
}
});
}
// Custom method to check if out_punch is greater than in_punch.
function outpunches(value, element, params) {
var in_punch_str = $('#in_punch_' + params).val();
var out_punch_str = $('#out_punch_' + params).val();
var in_punch = moment(in_punch_str, 'DD-MM-YYYY HH:mm:ss', true);
var out_punch = moment(out_punch_str, 'DD-MM-YYYY HH:mm:ss', true);
return !(in_punch.isValid() && out_punch.isValid() && in_punch.diff(out_punch) > 0);
}
// Custom method to check if in_punch is greater than previous out_punch.
function inPunchesValidation(value, element, ids){
for(var i = 0; i < ids.length; i++){
var id = ids[i];
var in_punch_str = $('#in_punch_' + id).val();
var out_punch_str = $('#out_punch_' + id).val();
var in_punch_str = $('#in_punch_' + id).val();
var out_punch_str = $('#out_punch_' + id).val();
var in_punch = moment(in_punch_str, 'DD-MM-YYYY HH:mm:ss', true);
var out_punch = moment(out_punch_str, 'DD-MM-YYYY HH:mm:ss', true);
if(in_punch.isValid() && previous_out_punch) {
var previous_out_punchMoment = moment(previous_out_punch, 'DD-MM-YYYY HH:mm:ss', true);
if(in_punch.diff(previous_out_punchMoment) < 0){
return false;
}
}
// Update previous_out_punch for the next iteration.
previous_out_punch = $('#out_punch_' + id).val();
}
return true;
}
// Custom method to check if in_punch is greater than out_punch.
function inpunches(value, element, params) {
var in_punch_str = $('#in_punch_' + params).val();
var out_punch_str = $('#out_punch_' + params).val();
var in_punch = moment(in_punch_str, 'DD-MM-YYYY HH:mm:ss', true);
var out_punch = moment(out_punch_str, 'DD-MM-YYYY HH:mm:ss', true);
return !(in_punch.isValid() && out_punch.isValid() && in_punch.diff(out_punch) > 0);
}
// Check if out punch is the same day or the next day.
function outpunch_next(value, element, params) {
var in_punch_str = $('#in_punch_' + params).val();
var out_punch_str = $('#out_punch_' + params).val();
var in_punch = moment(in_punch_str, 'DD-MM-YYYY HH:mm:ss', true);
var out_punch = moment(out_punch_str, 'DD-MM-YYYY HH:mm:ss', true);
var valid_date = [moment(), moment().add(1, 'days')];
return in_punch.isValid() && out_punch.isValid() &&
in_punch.diff(out_punch) <= 0 &&
valid_date.some(date => out_punch.isSame(date, 'day') || out_punch.isSame(date.add(1, 'days'), 'day'));
}
// Check if in punch is the same day or the previous day.
function inpunch_prev(value, element, params) {
var in_punch_str = $('#in_punch_' + params).val();
var out_punch_str = $('#out_punch_' + params).val();
var in_punch = moment(in_punch_str, 'DD-MM-YYYY HH:mm:ss', true);
var out_punch = moment(out_punch_str, 'DD-MM-YYYY HH:mm:ss', true);
var valid_date = [moment().subtract(1, 'days'), moment()];
return in_punch.isValid() && out_punch.isValid() &&
in_punch.diff(out_punch) <= 0 &&
valid_date.some(date => in_punch.isSame(date, 'day') || in_punch.isSame(date.subtract(1, 'days'), 'day'));
}
}
//TOS SETTING BASED DAY START AND END GET AND LAST PAYROLL MONTH BASED MIN DATE GET
function tos_posting_mon_day(entry_parameter,min_max_date_set){
if(entry_parameter){
var send_url = '<?php echo site_url("$controller_name/tos_posting_mon_day");?>'
$.ajax({
type: 'POST',
url: send_url,
data:{entry_parameter:entry_parameter},
success: function(data){
var rslt = JSON.parse(data);
var min_date = '';
if(rslt.success){
$('#start_date').val(rslt.min_date);
$('#end_date').val(rslt.max_date);
request_punch();
}
}
});
}
}
//collapseToggle for request punch.
function toggleAccordion(index){
$('[id^=collapseOne]').collapse('hide');
$(`#collapseOne${index}`).collapse('show');
}
//collapseToggle for request status.
function statusAccordion(index){
$('[id^=statusCollapse]').collapse('hide');
$(`#statusCollapse${index}`).collapse('show');
}
</script>
<?php $this->load->view("partial/footer"); ?>