public function index() { if ($_FILES) { $error = false; $mapping_errors = []; $type_errors = []; $date_errors = []; $values = []; $unclosed = []; $tmp = $this->model('asanatt_excel_time')->getByField('work_end', '0000-00-00 00:00:00', true); foreach ($tmp as $row) { $unclosed[$row['username']] = $row; } foreach ($_FILES as $file) { // print_r(tools_class::readXLS($file['tmp_name'])); // exit; // $simpleXLSX = new simpleXLSX_class($file['tmp_name']); //$array = $simpleXLSX->rows(1); $sheet = tools_class::readXLS($file['tmp_name'])[0]; if (is_array($sheet)) { $this->model('asanatt_excel_time')->beginTransaction(); $arr = []; foreach ($sheet as $k => $row) { foreach ($row as $key => $val) { $row[$key] = trim($val); $row[5] = $k + 1; } $user_name = $row[0]; if ($k == 0) { continue; } $exp_date = explode('-', $row[3]); $date = '20' . $exp_date[2] . '-' . $exp_date[0] . '-' . $exp_date[1]; $date_time = date('Y-m-d H:i:s', strtotime($date . ' ' . $row[4])); // $exp = explode(' ', $row[4]); //$offset = (int) gmdate( 'h', abs( date( 'Z' ) ) ); //$unix_time = $simpleXLSX->unixstamp($row[3] + $row[4]); //$date_time = date('Y-m-d H:i:s', $unix_time); //$date_time = date('Y-m-d H:i:s', strtotime($date_time . ' + ' . $offset . ' hour')); //$date_time = date('Y-m-d H:i:s', $unix_time + $offset*3600); //if($user_name == 'Nicdao, Gladys') echo date('Y-m-d H:i:s', strtotime($date . ' ' . $row[4])) . "\n"; // if(date('s', strtotime($date_time)) == '59') { //// $date_time = date('Y-m-d H:i:s', $unix_time + ($offset + 1)*3600 + 1); //// echo $date_time . "\n"; // } // if($user_name == 'Bairan, Christian') { // //print_r($row); // //echo $unix_time; // //echo date('Y-m-d H:i:s', $unix_time . ' + ' . $offset . ' hour') . "\n"; // echo date('Y-m-d H:i:s', $this->ExcelToPHP($row[3] + $row[4])) . "=\n"; // echo date('Y-m-d H:i:s', $unix_time) . "-2\n"; // echo $date_time . "-3\n"; //// exit; // } if ($unclosed[$user_name]) { $arr[$user_name][$unclosed[$user_name]['work_begin']] = array($user_name, '', 'Clock In', '', '', 0, $unclosed[$user_name]['id']); } if (!$arr[$user_name][$date_time]) { $arr[$user_name][$date_time] = $row; } else { $arr[$user_name][date('Y-m-d H:i:s', strtotime($date_time . ' + 1 minute'))] = $row; } } foreach ($arr as $user_name => $rows) { ksort($rows); foreach ($rows as $date_time => $row) { if (!($user = $this->model('asanatt_user_mapping')->getByField('user_name', $user_name))) { $mapping_errors[$user_name] = $row; } if ($row[2] == 'Clock In') { $index = count($values[$user_name]); if ($row[6]) { $index = 0; $values[$user_name][$index]['id'] = $row[6]; } $values[$user_name][$index]['k'] = $row[5]; $values[$user_name][$index]['work_begin'] = $date_time; $values[$user_name][$index]['username'] = $user_name; } elseif ($row[2] == 'Clock Out') { $index = count($values[$user_name]) - 1; $values[$user_name][$index]['work_end'] = $date_time; $values[$user_name][$index]['username'] = $user_name; } else { $type_errors[] = array($row['k'], $user_name, $row[2]); } } } if ($values) { foreach ($values as $v) { foreach ($v as $row) { // if(!$row['work_begin'] || date('Y-m-d', strtotime($row['work_begin']) == '1970-01-01' || $row['work_begin']) == '000-00-00 00:00:00' // || !$row['work_end'] || date('Y-m-d', strtotime($row['work_end']) == '1970-01-01' || $row['work_end']) == '000-00-00 00:00:00') { // $date_errors[] = array($row['k'], $row['username'], 2); // } else if ($row['work_end'] && $row['work_end'] <= $row['work_begin']) { //$date_errors[] = array($row['k'], $row['username'], 2); } unset($row['k']); $this->model('asanatt_excel_time')->insert($row); } } } if (!$type_errors && !$mapping_errors && !$date_errors) { $this->model('asanatt_excel_time')->commitTransaction(); } else { $this->model('asanatt_excel_time')->rollbackTransaction(); } } else { $error = 'File could not be read'; } } if ($error) { echo json_encode(array('status' => 2, 'error' => $error)); } elseif ($mapping_errors) { echo json_encode(array('status' => 3, 'result' => $mapping_errors)); } elseif ($type_errors) { echo json_encode(array('status' => 4, 'result' => $type_errors)); } elseif ($date_errors) { echo json_encode(array('status' => 5, 'result' => $date_errors)); } else { echo json_encode(array('status' => 1, 'values' => $values)); } exit; } $this->view('upload' . DS . 'index'); }