MOON
Server: Apache
System: Linux nserver.cafsindia.com 4.18.0-553.104.1.lve.el8.x86_64 #1 SMP Tue Feb 10 20:07:30 UTC 2026 x86_64
User: cafsindia (1002)
PHP: 8.2.30
Disabled: NONE
Upload Files
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"); ?>