query("SELECT a.department_id, b.department_desc FROM setting_department a LEFT JOIN setting_department_translation b ON ( a.department_id = b.department_id ) WHERE a.deleted_at IS NULL AND b.lang = 'en'"); if ($get_department->num_rows > 0) { while ($row_department = $get_department->fetch_assoc()) { $department[$row_department['department_id']] = $row_department['department_desc']; } } $working_group = []; $get_working_group = $mysqli->query("SELECT * FROM setting_working_group WHERE deleted_at IS NULL"); if ($get_working_group->num_rows > 0) { while ($row_working_group = $get_working_group->fetch_assoc()) { $working_group[$row_working_group['group_id']] = $row_working_group['group_name']; } } switch ( $page_mode ) { case 'user' : if ( isset($_POST['submit']) && $_POST['submit'] == '1' && count($_POST['staffs']) > 0 && $_POST['timetable'] != '' ) { $staff_list = []; $check_group = $mysqli->query("SELECT * FROM staff WHERE deleted_at IS NULL AND staff_id IN (".implode("," , $_POST['staffs']).") ") ; if ( $check_group->num_rows > 0 ){ while ( $row = $check_group->fetch_array(MYSQLI_ASSOC) ) { if ( $row['group_id'] != $_POST['timetable'] ){ $old_staff_group[$row['staff_id']][0] = true; $old_staff_group[$row['staff_id']][1] = [ "old" => $row['group_id'], "new" => $_POST['group_id'], ]; } } } foreach ( $_POST['staffs'] as $staff ) { $mysqli->query("UPDATE staff SET group_id = '".escapeString($_POST['timetable'])."' WHERE staff_id = '".$staff."'"); if ( $old_staff_group[$staff][0] && $old_staff_group[$staff][0] != '' ){ // log here } } header("Refresh: 0") ; exit ; } break ; case 'dep': if ( isset($_POST['submit']) && $_POST['submit'] == '1' && $_POST['department'] != '' && $_POST['timetable'] != '' ) { $department_list = []; $staff_list = []; $departments = $mysqli->query("SELECT * FROM staff_department WHERE deleted_at IS NULL AND department_id = '".escapeString($_POST['department'])."'") ; if ( $departments->num_rows > 0 ){ while( $department = $departments->fetch_assoc() ) { $department_list[] = $department; $staff_list[$department['staff_id']] = $department['staff_id']; } } $check_group = $mysqli->query("SELECT * FROM staff WHERE deleted_at IS NULL AND staff_id IN (".implode("," , $staff_list).") ") ; if ( $check_group->num_rows > 0 ){ while ( $row = $check_group->fetch_array(MYSQLI_ASSOC) ) { if ( $row['group_id'] != $_POST['timetable'] ){ $old_staff_group[$row['staff_id']][0] = true; $old_staff_group[$row['staff_id']][1] = [ "old" => $row['group_id'], "new" => $_POST['group_id'], ]; } } } foreach ($department_list as $k => $v) { $mysqli->query("UPDATE staff SET group_id = '".escapeString($_POST['timetable'])."' WHERE staff_id = '".escapeString($v['staff_id'])."'"); if ( $old_staff_group[$staff][0] && $old_staff_group[$staff][0] != '' ){ // log here } } header("Refresh: 0") ; exit ; } break ; case 'schedule' : if ( isset($_POST['submit']) && $_POST['submit'] == '1' && $_POST['staffs'] != '' && $_POST['timetable'] != '' ) { $staffs = $_POST['staffs'] ; $timetable = escapeString($_POST['timetable']) ; $date_from = escapeString($_POST['date_from']) ; $date_to = escapeString($_POST['date_to']) ; $date_to = ( $date_to >= $date_from ? $date_to : $date_from ) ; $date_to = date( 'Y-m-d', strtotime($date_to . ' + 1 day') ) ; $period = new DatePeriod( new DateTime($date_from), new DateInterval('P1D'), new DateTime($date_to) ) ; // get setting working $get_workings = $mysqli->query("SELECT working_day, group_id, working_on, working_next_day, working_if_flexi, working_if_include_rest, working_if_ot, working_direct_day, working_if_fixed_work, working_day_calculation, working_morning_start as working_period_from, working_morning_end as working_period_to, working_period_before, working_break_start as working_from, working_break_end as working_to, working_break_end_include_ot as working_to_include_ot, working_total_hours, working_total_rest_hours, working_rest_range_from, working_rest_range_to, working_rounding_ot, working_if_ot_morning, working_if_offduty, working_count_offduty, working_if_deduct_offduty, working_max_ot,working_total_rest_hours2,working_rest_range_from2,working_rest_range_to2 FROM setting_working WHERE deleted_at IS NULL AND group_id = '".$timetable."'") ; if ( $get_workings->num_rows > 0 ){ $array_working = [] ; while ( $get_working = $get_workings->fetch_assoc() ){ $array_working[$get_working['working_day']] = $get_working ; } foreach ( $staffs as $staff_id ){ foreach ( $period as $key => $value ) { $get_date = $value->format('Y-m-d') ; $working = $array_working[ date('N', strtotime($get_date)) ] ; $mysqli->query( "UPDATE staff_attendance_working SET deleted_at = '".TODAYDATE."' WHERE deleted_at IS NULL AND staff_id = '".$staff_id."' AND working_date = '".$get_date."'" ) ; $mysqli->query("INSERT INTO staff_attendance_working (staff_id, working_group_id, working_date, working_on, working_next_day, working_if_flexi, working_if_include_rest, working_if_ot, working_direct_day, working_if_fixed_work, working_day_calculation, working_period_from, working_period_to, working_period_before, working_from, working_to, working_to_include_ot, working_total_hours, working_total_rest_hours, working_rest_range_from, working_rest_range_to, working_rounding_ot, working_if_ot_morning, working_if_offduty, working_count_offduty, working_if_deduct_offduty, working_max_ot, created_at, updated_at,working_total_rest_hours2,working_rest_range_from2,working_rest_range_to2) VALUES ('".$staff_id."', '".$working['group_id']."', '".$get_date."', '".$working['working_on']."', '".$working['working_next_day']."', '".$working['working_if_flexi']."', '".$working['working_if_include_rest']."', '".$working['working_if_ot']."', '".$working['working_direct_day']."', '".$working['working_if_fixed_work']."', '".$working['working_day_calculation']."', '".$working['working_period_from']."', '".$working['working_period_to']."', '".$working['working_period_before']."', '".$working['working_from']."', '".$working['working_to']."', '".$working['working_to_include_ot']."', '".$working['working_total_hours']."', '".$working['working_total_rest_hours']."', ".( $working['working_rest_range_from'] != '' ? "'".$working['working_rest_range_from']."'" : "NULL" ).", ".( $working['working_rest_range_to'] != '' ? "'".$working['working_rest_range_to']."'" : "NULL" ).", '".$working['working_rounding_ot']."', '".$working['working_if_ot_morning']."', '".$working['working_if_offduty']."', '".$working['working_count_offduty']."', '".$working['working_if_deduct_offduty']."', '".$working['working_max_ot']."', '".TODAYDATE."', '".TODAYDATE."','".$working['working_total_rest_hours2']."','".$working['working_rest_range_from2']."','".$working['working_rest_range_to2']."')") ; } } } header("Refresh: 0") ; exit ; } break ; } include 'requires/page_header.php'; include 'requires/page_top.php'; switch ( $page_mode ) { case 'user' : ?>