From 9546b781db581ec370028f202e30865f5802ca65 Mon Sep 17 00:00:00 2001 From: kicap1992 Date: Fri, 7 May 2021 01:33:33 +0800 Subject: [PATCH] added karyawan edit & delete,laporan, and libur --- application/controllers/Api_server.php | 49 +++ application/controllers/Home.php | 188 ++++++++++-- application/views/home/menu/karyawan.php | 2 +- .../views/home/menu/laporan_detail.php | 233 +++++++++++++++ application/views/home/menu/libur.php | 278 ++++++++++++++++++ assets/js/main.js | 16 + barcode_absensi.sql | 154 ++++++++++ 7 files changed, 897 insertions(+), 23 deletions(-) create mode 100644 application/views/home/menu/laporan_detail.php create mode 100644 application/views/home/menu/libur.php create mode 100644 barcode_absensi.sql diff --git a/application/controllers/Api_server.php b/application/controllers/Api_server.php index 62133ff..70b5b03 100644 --- a/application/controllers/Api_server.php +++ b/application/controllers/Api_server.php @@ -105,6 +105,54 @@ class Api_server extends RestController } + function libur_put(){ + $where = $this->put('where'); + $detail = $this->put('detail'); + + $cek_data = $this->model->tampil_data_where('tb_karyawan',$where)->result(); + $detail_libur = $cek_data[0]->detail; + + if ($detail_libur == null) { + $this->model->update('tb_karyawan',$where,$detail); + $this->response(['message' => 'ok'], 200); + }else{ + $detail_libur = json_decode($detail_libur,true); + $array_libur = json_decode($detail['detail'],true); + $ada_tanggal_sama = false; + $tanggal_sama = null; + + foreach ($detail_libur as $key => $value) { + $ko = false; + foreach ($array_libur as $key1 => $value1) { + if($value['tanggal'] == $value1['tanggal']){ + $tanggal_sama =$value1['tanggal']; + $ko = true; + break; + } + } + + if ($ko == true) { + $ada_tanggal_sama = true; + break; + } + } + + if ($ada_tanggal_sama == false) { + $detail_libur = array_merge($detail_libur,$array_libur); + $this->model->update('tb_karyawan',$where,['detail' => json_encode($detail_libur)]); + $this->response(['message' => $detail_libur], 200); + }else{ + $this->response(['message' => 'Libur pada tanggal '.$tanggal_sama.' telah diatur sebelumnya
Sila periksa log libur dibawah untuk info lebih lanjut'], 400); + } + + + } + + + + } + + function login_petugas_get(){ $username = $this->get('username'); $password = $this->get('password'); @@ -118,6 +166,7 @@ class Api_server extends RestController } } + function cek_karyawan_by_qrcode_get(){ $nik = $this->get('nik'); diff --git a/application/controllers/Home.php b/application/controllers/Home.php index 76b84bd..c0e9763 100644 --- a/application/controllers/Home.php +++ b/application/controllers/Home.php @@ -40,7 +40,7 @@ class Home extends CI_Controller { $row[] = $no; $row[] = $field->nik_karyawan; $row[] = $field->nama; - $row[] = '
'; + $row[] = '
'; $data[] = $row; } @@ -64,10 +64,166 @@ class Home extends CI_Controller { } + function libur($nik_karyawan = null){ + if ($this->input->post('proses') == 'table_libur_detail') { + $i = 1; + $cek_data = $this->model->tampil_data_where('tb_karyawan',['nik_karyawan' => $this->input->post('nik_karyawan')])->result(); + + + if(count($cek_data) > 0){ + $ket = ($cek_data[0]->detail != null) ? json_decode($cek_data[0]->detail,true) : null; + + if ($ket != null) { + foreach ($ket as $key => $value) { + $day = explode("-",$value['tanggal']); + $hari = date('l', strtotime($value['tanggal'])); + + // $data[$i]['no'] = $i; + $data[$i]['tanggal'] = $day[2].'-'.$day[1].'-'.$day[0]; + $data[$i]['hari'] = $this->model->hari($hari); + $data[$i]['keterangan'] = $value['ket']; + // $data[$i]['ket'] = 'Rp. '. number_format($value['simpanan']); + // $data[$i]['foto'] = $value['foto']; + + $i++; + + } + $data = array_reverse($data, true); + $out = array_values($data); + echo json_encode($out); + }else{ + echo json_encode(array()); + } + + } + else + { + echo json_encode(array()); + } + }else{ + $main['header'] = "Halaman Pengaturan Libur"; + $this->load->view('home/menu/libur', $main); + } + + + } function laporan($tahun = null, $bulan = null){ - if ($this->input->post('proses') == "table_all") { + $main['header'] = 'Halaman Laporan Absensi'; + + if ($this->input->post('proses') == 'table_absensi_detail_tanggal') { + $i = 1; + $cek_data = $this->model->tampil_data_where('tb_absensi',['bulan' => $this->input->post('bulan'), ' tahun' => $this->input->post('tahun')])->result(); + + + if(count($cek_data) > 0){ + $ket = json_decode($cek_data[0]->detail,true); + $ket_detail = null; + + /// atur kembali array berdasarkan tanggal + foreach ($ket as $key => $value) { + + if ($value['tanggal'] == $this->input->post('tanggal')) { + # code... + $ket_detail = $value['absensi']; + break; + } + } + + $cek_karyawan = $this->model->tampil_data_keseluruhan('tb_karyawan')->result_array(); + + foreach ($cek_karyawan as $key => $value) { + $hadir = false; + $jam_masuk = 'Tidak Masuk Kerja'; + $jam_keluar = 'Tidak Masuk Kerja'; + foreach ($ket_detail as $key1 => $value1) { + if ($value['nik_karyawan'] == $value1['nik_karyawan']) { + $jam_masuk = $value1['jam_masuk']; + $jam_keluar = $value1['jam_keluar']; + $hadir = true; + break; + } + } + + + if($hadir != true){ + $cek_libur = ($value['detail'] != null) ? json_decode($value['detail'],true) : $value['detail'] ; + + if ($cek_libur != null) { + foreach ($cek_libur as $key1 => $value1) { + if ($value1['tanggal'] == $this->input->post('tahun').'-'.$this->input->post('bulan').'-'.$this->input->post('tanggal')) { + $jam_masuk = 'Ambil Cuti'; + $jam_keluar = 'Ket : '.$value1['ket']; + break; + } + } + } + + elseif ($value['tanggal_daftar'] > $this->input->post('tahun').'-'.$this->input->post('bulan').'-'.$this->input->post('tanggal')) { + $jam_masuk = 'Belum Masuk Kerja'; + $jam_keluar = 'Belum Masuk Kerja'; + } + + } + + $data[$i]['nik_karyawan'] = $value['nik_karyawan']; + $data[$i]['nama'] = $value['nama']; + $data[$i]['jam_masuk'] = $jam_masuk; + $data[$i]['jam_keluar'] = $jam_keluar; + $i++; + } + + // foreach ($ket_detail as $key => $value) { + + // $data[$i]['nik_karyawan'] = $value['nik_karyawan']; + // $data[$i]['jam_masuk'] = $value['jam_masuk']; + // $data[$i]['jam_keluar'] = $value['jam_keluar']; + // $i++; + // } + + // $data = array_reverse($data, true); + $out = array_values($data); + echo json_encode($out); + } + else + { + echo json_encode(array()); + } + } + + elseif ($this->input->post('proses') == 'table_absensi_detail') { + $i = 1; + $cek_data = $this->model->tampil_data_where('tb_absensi',['bulan' => $this->input->post('bulan'), ' tahun' => $this->input->post('tahun')])->result(); + + + if(count($cek_data) > 0){ + $ket = json_decode($cek_data[0]->detail,true); + + /// atur kembali array berdasarkan tanggal + foreach ($ket as $key => $value) { + $day = date('l', strtotime($this->input->post('tahun').'-'.$this->input->post('bulan').'-'.$value['tanggal'])); + + // $data[$i]['no'] = $i; + $data[$i]['tanggal'] = $value['tanggal'].'-'.$this->input->post('bulan').'-'.$this->input->post('tahun'); + $data[$i]['hari'] = $this->model->hari($day); + // $data[$i]['ket'] = 'Rp. '. number_format($value['simpanan']); + // $data[$i]['foto'] = $value['foto']; + + $i++; + + } + $data = array_reverse($data, true); + $out = array_values($data); + echo json_encode($out); + } + else + { + echo json_encode(array()); + } + } + + elseif ($this->input->post('proses') == "table_all") { $list = $this->m_tabel_ss->get_datatables(array('bulan','tahun'),array('tahun','bulan',null),array('id_absensi' => 'desc'),"tb_absensi",null,null,"*"); $data = array(); $no = 0; @@ -96,6 +252,9 @@ class Home extends CI_Controller { $cek_data = $this->model->tampil_data_where('tb_absensi',['tahun' => $tahun,'bulan' => $bulan])->result(); if (count($cek_data) > 0) { + $main['tahun'] = $tahun; + $main['bulan'] = $bulan; + $this->load->view('home/menu/laporan_detail', $main); }else{ redirect('/home/laporan'); @@ -107,7 +266,7 @@ class Home extends CI_Controller { } else{ - $main['header'] = 'Halaman Laporan Absensi'; + $this->load->view('home/menu/laporan', $main); } @@ -125,26 +284,11 @@ class Home extends CI_Controller { function try2(){ - $cek_absensi = $this->model->tampil_data_where('tb_absensi',['bulan' => 4,'tahun' => 2021])->result(); - $array_absensi = json_decode($cek_absensi[0]->detail,true); - foreach ($array_absensi as $key => $value) { - if($value['tanggal'] == 29){ - foreach ($value['absensi'] as $key1 => $value1) { - if($value1['nik_karyawan'] == 56465456465465 ){ - if ($value1['jam_keluar'] == '-') { - $array_absensi[$key]['absensi'][$key1] = array( - 'nik_karyawan' => 56465456465465 , - 'jam_masuk' => "21:32:50", - 'jam_keluar' => "23:32:50", - ); - } - } - } - } - - + if('2021-04-01' > '2021-04-07'){ + print_r('tanggal lebih besar'); + }else{ + print_r('tanggal lebih kecil'); } - print_r($array_absensi); } diff --git a/application/views/home/menu/karyawan.php b/application/views/home/menu/karyawan.php index 39bd021..0de2690 100644 --- a/application/views/home/menu/karyawan.php +++ b/application/views/home/menu/karyawan.php @@ -280,7 +280,7 @@ } - function detail_karyawan(nik_karyawan){ + function detail_karyawan(nik_karyawan,nama){ // console.log(nik_karyawan) $.ajax({ url: url+"api_server/karyawan", diff --git a/application/views/home/menu/laporan_detail.php b/application/views/home/menu/laporan_detail.php new file mode 100644 index 0000000..7d5bed9 --- /dev/null +++ b/application/views/home/menu/laporan_detail.php @@ -0,0 +1,233 @@ + + + + + load->view('home/head');?> + + + + + + +load->view('home/header');?> + + + +
+
+
+ +
+ + +
+
+
+

Laporan Absensi

+ + + +
+ +
+
+ +
+ + + load->view('home/footer');?> + +
+ +
+ + load->view('home/script'); ?> + + + + + + + + \ No newline at end of file diff --git a/application/views/home/menu/libur.php b/application/views/home/menu/libur.php new file mode 100644 index 0000000..8c0c7b7 --- /dev/null +++ b/application/views/home/menu/libur.php @@ -0,0 +1,278 @@ + + + + + load->view('home/head');?> + + + + + + +load->view('home/header');?> + + + +
+
+
+ +
+
+
+

List Karyawan

+ + + +
+ +
+
+ +
+ + + load->view('home/footer');?> + +
+ +
+ + load->view('home/script'); ?> + + + + + + + \ No newline at end of file diff --git a/assets/js/main.js b/assets/js/main.js index e217117..9498618 100644 --- a/assets/js/main.js +++ b/assets/js/main.js @@ -30,6 +30,22 @@ function get_time(stat){ } } +function get_tomorrow(stat){ + let today = new Date((new Date()).valueOf() + 86400000) + let dd = String(today.getDate()).padStart(2, '0'); + let mm = String(today.getMonth() + 1).padStart(2, '0'); //January is 0! + let yyyy = today.getFullYear(); + let h = addZero(today.getHours()); + let m = addZero(today.getMinutes()); + let s = addZero(today.getSeconds()); + + if (stat == 'hari') { + return yyyy+'-'+mm+'-'+dd; + }else if(stat == 'all') { + return yyyy+'-'+mm+'-'+dd+' '+h + ":" + m + ":" + s; + } +} + function toastnya(mesej){ toastr.options = { "closeButton": true, diff --git a/barcode_absensi.sql b/barcode_absensi.sql new file mode 100644 index 0000000..ed28bec --- /dev/null +++ b/barcode_absensi.sql @@ -0,0 +1,154 @@ +-- phpMyAdmin SQL Dump +-- version 5.0.4 +-- https://www.phpmyadmin.net/ +-- +-- Host: 127.0.0.1 +-- Generation Time: May 06, 2021 at 07:32 PM +-- Server version: 10.4.17-MariaDB +-- PHP Version: 7.4.15 + +SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; +START TRANSACTION; +SET time_zone = "+00:00"; + + +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; +/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; +/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; +/*!40101 SET NAMES utf8mb4 */; + +-- +-- Database: `barcode_absensi` +-- + +-- -------------------------------------------------------- + +-- +-- Table structure for table `tb_absensi` +-- + +CREATE TABLE `tb_absensi` ( + `id_absensi` int(4) NOT NULL, + `bulan` varchar(2) DEFAULT NULL, + `tahun` varchar(4) DEFAULT NULL, + `detail` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +-- +-- Dumping data for table `tb_absensi` +-- + +INSERT INTO `tb_absensi` (`id_absensi`, `bulan`, `tahun`, `detail`) VALUES +(7, '04', '2021', '[{\"tanggal\":\"29\",\"absensi\":[{\"nik_karyawan\":\"56465456465465\",\"jam_masuk\":\"23:25:16\",\"jam_keluar\":\"-\"}]}]'), +(9, '05', '2021', '[{\"tanggal\":\"01\",\"absensi\":[{\"nik_karyawan\":\"56465456465465\",\"jam_masuk\":\"10:11:34\",\"jam_keluar\":\"10:11:49\"}]},{\"tanggal\":\"02\",\"absensi\":[{\"nik_karyawan\":\"56465456465465\",\"jam_masuk\":\"00:00:58\",\"jam_keluar\":\"00:01:10\"},{\"nik_karyawan\":\"23213123123123\",\"jam_masuk\":\"00:04:18\",\"jam_keluar\":\"00:04:28\"},{\"nik_karyawan\":\"45454545545454\",\"jam_masuk\":\"00:05:17\",\"jam_keluar\":\"00:05:32\"}]},{\"tanggal\":\"07\",\"absensi\":[{\"nik_karyawan\":\"56465456465465\",\"jam_masuk\":\"00:23:08\",\"jam_keluar\":\"00:23:17\"}]}]'); + +-- -------------------------------------------------------- + +-- +-- Table structure for table `tb_karyawan` +-- + +CREATE TABLE `tb_karyawan` ( + `nik_karyawan` varchar(14) NOT NULL, + `nama` varchar(255) NOT NULL, + `tempat_lahir` varchar(255) NOT NULL, + `tanggal_lahir` date NOT NULL, + `jk` varchar(10) NOT NULL, + `agama` varchar(20) NOT NULL, + `status` varchar(15) NOT NULL, + `pendidikan` varchar(3) NOT NULL, + `alamat` varchar(225) NOT NULL, + `jabatan` varchar(225) NOT NULL, + `tanggal_daftar` date DEFAULT current_timestamp(), + `detail` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`detail`)) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +-- +-- Dumping data for table `tb_karyawan` +-- + +INSERT INTO `tb_karyawan` (`nik_karyawan`, `nama`, `tempat_lahir`, `tanggal_lahir`, `jk`, `agama`, `status`, `pendidikan`, `alamat`, `jabatan`, `tanggal_daftar`, `detail`) VALUES +('45454545545454', 'Kicap Karan 1', '', '0000-00-00', '', '', '', '', '', '', '2021-04-06', '[{\"tanggal\":\"2021-05-07\",\"ket\":\"asdasdasd\"},{\"tanggal\":\"2021-05-08\",\"ket\":\"asdasdasd\"}]'), +('56465456465465', 'asdasdas', 'asdasd', '1992-08-30', 'Laki-laki', 'Kristen Protestan', 'Belum Menikah', 'S1', 'asdasd', 'asdasd', '2021-04-06', NULL), +('65656566666665', 'Percobaan2', 'asdasdsads1', '1992-08-30', 'Laki-laki', 'Kristen Protestan', 'Belum Menikah', 'S1', 'Tawau', 'asdasdasds1', '2021-05-08', NULL); + +-- -------------------------------------------------------- + +-- +-- Table structure for table `tb_login` +-- + +CREATE TABLE `tb_login` ( + `id_login` int(3) NOT NULL, + `username` varchar(225) NOT NULL, + `password` varchar(225) NOT NULL, + `nik_karyawan` varchar(14) DEFAULT NULL, + `level` varchar(10) NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +-- +-- Dumping data for table `tb_login` +-- + +INSERT INTO `tb_login` (`id_login`, `username`, `password`, `nik_karyawan`, `level`) VALUES +(1, 'admin absensi', '584c60ea9b41500d26f446a2543d8a98', NULL, 'admin'), +(2, '56465465456465', 'd41d8cd98f00b204e9800998ecf8427e', NULL, ''), +(3, '56465456465465', '176fd7322b6beaf7afdda3b88ee76b9b', NULL, ''), +(4, 'admin petugas', '77c10df6c2867dddbe812c3c950b0a73', NULL, 'petugas'), +(5, '23213123123123', '38f93121eee2c37c5aaf7902ecad0843', NULL, ''), +(6, '78787878787878', '81bdbd39af125a6bfb21282c810ecb86', NULL, ''), +(7, '65656566666665', '4a29f705441a615ef353fcae6cf781e1', NULL, ''); + +-- +-- Indexes for dumped tables +-- + +-- +-- Indexes for table `tb_absensi` +-- +ALTER TABLE `tb_absensi` + ADD PRIMARY KEY (`id_absensi`); + +-- +-- Indexes for table `tb_karyawan` +-- +ALTER TABLE `tb_karyawan` + ADD PRIMARY KEY (`nik_karyawan`); + +-- +-- Indexes for table `tb_login` +-- +ALTER TABLE `tb_login` + ADD PRIMARY KEY (`id_login`), + ADD KEY `nik_karyawan` (`nik_karyawan`); + +-- +-- AUTO_INCREMENT for dumped tables +-- + +-- +-- AUTO_INCREMENT for table `tb_absensi` +-- +ALTER TABLE `tb_absensi` + MODIFY `id_absensi` int(4) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=10; + +-- +-- AUTO_INCREMENT for table `tb_login` +-- +ALTER TABLE `tb_login` + MODIFY `id_login` int(3) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=8; + +-- +-- Constraints for dumped tables +-- + +-- +-- Constraints for table `tb_login` +-- +ALTER TABLE `tb_login` + ADD CONSTRAINT `tb_login_ibfk_1` FOREIGN KEY (`nik_karyawan`) REFERENCES `tb_karyawan` (`nik_karyawan`) ON DELETE CASCADE ON UPDATE CASCADE; +COMMIT; + +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; +/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; +/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;