added karyawan edit & delete,laporan, and libur

This commit is contained in:
kicap1992
2021-05-07 01:33:33 +08:00
parent 85ec0bc8dc
commit 9546b781db
7 changed files with 897 additions and 23 deletions

View File

@ -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 <br>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');

View File

@ -40,7 +40,7 @@ class Home extends CI_Controller {
$row[] = $no;
$row[] = $field->nik_karyawan;
$row[] = $field->nama;
$row[] = '<center><button type="button" onclick="detail_karyawan('.$field->nik_karyawan.')" class="btn btn-primary btn-circle btn-sm waves-effect waves-light"><i class="ico fa fa-edit"></i></button></center>';
$row[] = '<center><button type="button" onclick="detail_karyawan('.$field->nik_karyawan.','."'".$field->nama."'".')" class="btn btn-primary btn-circle btn-sm waves-effect waves-light"><i class="ico fa fa-edit"></i></button></center>';
$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);
}

View File

@ -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",

View File

@ -0,0 +1,233 @@
<!DOCTYPE html>
<html lang="en">
<head>
<?php $this->load->view('home/head');?>
<link rel="stylesheet" href="<?=base_url()?>assets/plugin/datatables/media/css/dataTables.bootstrap.min.css">
</head>
<body>
<?php $this->load->view('home/header');?>
<div class="modal fade" id="sini_modalnya" role="dialog">
<div class="modal-dialog ">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">&times;</button>
<h4 class="modal-title">Modal Header</h4>
</div>
<div class="modal-body row">
<p>This is a small modal.</p>
</div>
<div class="modal-footer">
</div>
</div>
</div>
</div>
<div id="wrapper">
<div class="main-content">
<div class="row small-spacing">
<div class="col-lg-2 col-md-2 col-xs-12">
<input type="hidden" id="val_bulan" value="<?=$bulan?>">
<input type="hidden" id="val_tahun" value="<?=$tahun?>">
</div>
<div class="col-lg-8 col-md-8 col-xs-12">
<div class="box-content card">
<h4 class="box-title" style="background: #0055FF ;cursor: pointer;" onclick="myFunction('div_laporan')">Laporan Absensi</h4>
<!-- /.box-title -->
<div class="card-content" style="overflow-x: auto; display: none;" id="div_laporan">
<table id="table_absensi" class="table table-striped table-bordered display" style="width:100%">
<!-- <thead>
<tr>
<th>No</th>
<th>Tanggal</th>
<th>Aksi</th>
</tr>
</thead> -->
</table>
</div>
<!-- /.card-content -->
</div>
<!-- /.box-content -->
</div>
<div class="col-lg-2 col-md-2 col-xs-12"></div>
</div>
<?php $this->load->view('home/footer');?>
</div>
<!-- /.main-content -->
</div><!--/#wrapper -->
<?php $this->load->view('home/script'); ?>
<script src="<?=base_url()?>assets/plugin/datatables/media/js/jquery.dataTables.min.js"></script>
<script src="<?=base_url()?>assets/plugin/datatables/media/js/dataTables.bootstrap.min.js"></script>
<script>
var table;
function datatables() {
$('#table_absensi').DataTable({
responsive: true,
"ajax": {
"type": "POST",
"url": url+'home/laporan/',
"data" :{'proses' : 'table_absensi_detail', 'bulan' : $("#val_bulan").val(), 'tahun' : $("#val_tahun").val()},
"timeout": 120000,
"dataSrc": function (json) {
// console.log(json);
if(json != null){
return json
} else {
return "";
}
}
},
"sAjaxDataProp": "",
"width": "100%",
"order": [[ 0, "asc" ]],
"aoColumns": [
{
"mData": null,
"title": "No",
render: function (data, type, row, meta) {
return meta.row + meta.settings._iDisplayStart + 1;
}
},
{
"mData": null,
"title": "Tanggal",
"render": function (data, row, type, meta) {
return data.tanggal;
}
},
{
"mData": null,
"title": "Hari",
"render": function (data, row, type, meta) {
return data.hari;
}
},
{
"mData": null,
"title": "Aksi",
"sortable": false,
"render": function (data, row, type, meta) {
let btn = '';
btn += `<button title="Lihat Detail Absensi Tanggal ${data.tanggal}" class="btn btn-primary btn-circle btn-sm waves-effect waves-light" onclick="detail_absensi('${data.tanggal}')"><i class="fa fa-search"></i></button>`;
return btn;
}
}
]
});
}
datatables();
async function detail_absensi(tanggal){
var tanggal = await tanggal.split('-');
// console.log(tanggal);
await block_ui();
await $("#sini_modalnya .modal-header .modal-title").html(`Absensi Tanggal ${tanggal[0]}-${tanggal[1]}-${tanggal[2]}`)
await $("#sini_modalnya .modal-dialog").attr('class','modal-dialog')
let html = await `<div class="row small-spacing">
<div class="col-lg-12 col-xs-12" style="overflow-x: auto; ">
<table id="table_absensi_detail" class="table table-striped table-bordered display" style="width:100%"></table
</div>
</div>`
await $("#sini_modalnya .modal-body").html(html)
$('#table_absensi_detail').DataTable({
responsive: true,
"ajax": {
"type": "POST",
"url": url+'home/laporan/',
"data" :{'proses' : 'table_absensi_detail_tanggal', 'bulan' : tanggal[1], 'tahun' : tanggal[2], 'tanggal' : tanggal[0]},
"timeout": 120000,
"dataSrc": function (json) {
// console.log(json);
if(json != null){
return json
} else {
return "";
}
}
},
"sAjaxDataProp": "",
"width": "100%",
"order": [[ 0, "asc" ]],
"aoColumns": [
{
"mData": null,
"title": "NIK",
render: function (data, type, row, meta) {
return data.nik_karyawan;
}
},
{
"mData": null,
"title": "Nama",
"render": function (data, row, type, meta) {
return data.nama;
}
},
{
"mData": null,
"title": "Jam Masuk",
"render": function (data, row, type, meta) {
return data.jam_masuk;
}
},
{
"mData": null,
"title": "Jam Masuk",
"render": function (data, row, type, meta) {
return data.jam_keluar;
}
},
// {
// "mData": null,
// "title": "Jam Keluar",
// "sortable": false,
// "render": function (data, row, type, meta) {
// let btn = '';
// btn += `<button title="Lihat Detail Absensi Tanggal ${data.tanggal}" class="btn btn-primary btn-circle btn-sm waves-effect waves-light" onclick="detail_absensi('${data.tanggal}')"><i class="fa fa-search"></i></button>`;
// return btn;
// }
// }
]
});
await $.unblockUI()
await $('#sini_modalnya').modal('show');
}
</script>
</body>
</html>

View File

@ -0,0 +1,278 @@
<!DOCTYPE html>
<html lang="en">
<head>
<?php $this->load->view('home/head');?>
<link rel="stylesheet" href="<?=base_url()?>assets/plugin/datatables/media/css/dataTables.bootstrap.min.css">
</head>
<body>
<?php $this->load->view('home/header');?>
<div class="modal fade" id="sini_modalnya" role="dialog">
<div class="modal-dialog ">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">&times;</button>
<h4 class="modal-title">Modal Header</h4>
</div>
<div class="modal-body row">
<p>This is a small modal.</p>
</div>
<div class="modal-footer">
</div>
</div>
</div>
</div>
<div id="wrapper">
<div class="main-content">
<div class="row small-spacing">
<div class="col-lg-2 col-md-2"></div>
<div class="col-lg-8 col-md-8 col-xs-12">
<div class="box-content card">
<h4 class="box-title" style="background: #0055FF ;cursor: pointer;" onclick="myFunction('div_table_user')">List Karyawan</h4>
<!-- /.box-title -->
<div class="card-content" style="overflow-x: auto; display: none;" id="div_table_user">
<table id="table_list_karyawan" class="table table-striped table-bordered display" style="width:100%">
<thead>
<tr>
<th>No</th>
<th>NIK</th>
<th>Nama</th>
<th>Aksi</th>
</tr>
</thead>
</table>
<hr>
<center><button type="button" class="btn btn-primary btn-sm waves-effect waves-light">Cetak Laporan</button></center>
</div>
<!-- /.card-content -->
</div>
<!-- /.box-content -->
</div>
<div class="col-lg-2 col-md-2"></div>
</div>
<?php $this->load->view('home/footer');?>
</div>
<!-- /.main-content -->
</div><!--/#wrapper -->
<?php $this->load->view('home/script'); ?>
<script src="<?=base_url()?>assets/plugin/datatables/media/js/jquery.dataTables.min.js"></script>
<script src="<?=base_url()?>assets/plugin/datatables/media/js/dataTables.bootstrap.min.js"></script>
<script>
var table;
function datatables() {
table = $('#table_list_karyawan').DataTable({
// "searching": false,
"lengthMenu": [ [5, 10, 15, -1], [5, 10, 15, "All"] ],
"pageLength": 15,
"ordering": true,
"processing": true,
"serverSide": true,
"order": [],
"ajax": {
"url": url+"home/karyawan",
"type": "POST",
data : {proses : 'table_karyawan'}
},
"columnDefs": [
{
"targets": [ 0 ],
"orderable": false,
},
],
});
}
datatables()
async function detail_karyawan(nik_karyawan,nama){
// console.log(nik_karyawan);
await block_ui();
let html = await `<div class="row small-spacing">
<div class="col-lg-12 col-xs-12">
<form class="card-content" id="sini_form_detail" >
<div class="form-group">
<label for="exampleInputEmail1">NIK Karyawan</label>
<input type="text" class="form-control" id="nik_karyawan_detail" name="nik_karyawan" placeholder="Masukkan NIK Karyawan" maxlength="14" onkeypress="return isNumberKey(event)" disabled="" value="${nik_karyawan}">
</div>
<div class="form-group">
<label for="exampleInputPassword1">Nama Karyawan</label>
<input type="text" class="form-control" id="nama_detail" name="nama" placeholder="Masukkan Nama" disabled="" value="${nama}">
</div>
<div class="form-group">
<label for="exampleInputPassword1">Tanggal Mulai Libur</label>
<input type="date" class="form-control" id="tanggal_mulai_libur" name="tanggal_mulai_libur" value="${get_tomorrow('hari')}" min="${get_tomorrow('hari')}">
</div>
<div class="form-group">
<label for="exampleInputPassword1">Tanggal Selesai Libur</label>
<input type="date" class="form-control" id="tanggal_selesai_libur" name="tanggal_selesai_libur" value="${get_tomorrow('hari')}" min="${get_tomorrow('hari')}">
</div>
<div class="form-group">
<label for="exampleInputPassword1">Keterangan Libur</label>
<textarea style="resize:none" class="form-control" id="keterangan_libur" name="keterangan_libur" placeholder="Masukkan Ketrangan Libur"></textarea>
</div>
<div class="form-group"><center><button type="button" class="btn btn-primary btn-sm waves-effect waves-light" onclick="tambah_libur()">Tambah Libur</button></center></div>
<hr>
<div class="form-group" style="overflow-x:auto">
<table id="table_libur_detail" class="table table-striped table-bordered display" style="width:100%"></table>
</div>
</form>
<!-- /.card-content -->
</div>
</div>`
await $("#sini_modalnya .modal-body").html(html)
await $('#table_libur_detail').DataTable({
responsive: true,
"ajax": {
"type": "POST",
"url": url+'home/libur/',
"data" :{'proses' : 'table_libur_detail', nik_karyawan : nik_karyawan},
"timeout": 120000,
"dataSrc": function (json) {
// console.log(json);
if(json != null){
return json
} else {
return "";
}
}
},
"sAjaxDataProp": "",
"width": "100%",
"order": [[ 0, "asc" ]],
"aoColumns": [
{
"mData": null,
"title": "No",
render: function (data, type, row, meta) {
return meta.row + meta.settings._iDisplayStart + 1;
}
},
{
"mData": null,
"title": "Tanggal",
"render": function (data, row, type, meta) {
return data.tanggal;
}
},
{
"mData": null,
"title": "Hari",
"render": function (data, row, type, meta) {
return data.hari;
}
},
{
"mData": null,
"title": "Keterangan",
"render": function (data, row, type, meta) {
return data.keterangan;
}
},
]
});
await $("#sini_modalnya .modal-header .modal-title").html("Pengaturan Libur Karyawan")
await $("#sini_modalnya .modal-dialog").attr('class','modal-dialog')
await $.unblockUI();
await $('#sini_modalnya').modal('show');
}
async function tambah_libur(){
let nik_karyawan = $("#nik_karyawan_detail").val();
let tanggal_mulai_libur = $("#tanggal_mulai_libur").val();
let tanggal_selesai_libur = $("#tanggal_selesai_libur").val();
let keterangan_libur = $("#keterangan_libur").val();
if (tanggal_mulai_libur > tanggal_selesai_libur) {
toastnya('Tanggal Mulai Libur Lebih Besar Dari Tanggal Selesai Libur<br>Sila Atur Kembali Tanggal Libur');
$("#tanggal_mulai_libur").focus();
}else if (keterangan_libur == '') {
toastnya('Keterangan Libur Harus Diisi');
$("#keterangan_libur").focus();
}else{
const listDate = [];
const startDate =tanggal_mulai_libur;
const endDate = tanggal_selesai_libur;
const dateMove = new Date(startDate);
let strDate = startDate;
let array;
if (startDate == endDate) {
array = {tanggal : startDate, ket : keterangan_libur}
listDate.push(array);
} else {
while (strDate < endDate) {
strDate = dateMove.toISOString().slice(0, 10);
array = {tanggal : strDate, ket : keterangan_libur}
listDate.push(array);
dateMove.setDate(dateMove.getDate() + 1);
}
}
let where = {nik_karyawan : nik_karyawan}
let detail = {detail : JSON.stringify(listDate)}
// console.log(listDate)
$.ajax({
url: url+"api_server/libur",
type: 'put',
data: {where : where, detail : detail},
beforeSend: function(res) {
block_ui()
},
success: function (response) {
$.unblockUI();
console.log(response)
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
// console.log(errorThrown)
bad_request(errorThrown,JSON.parse(XMLHttpRequest.responseText).message,null)
$.unblockUI();
}
});
}
}
</script>
</body>
</html>

View File

@ -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,

154
barcode_absensi.sql Normal file
View File

@ -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 */;