190 lines
6.3 KiB
PHP
190 lines
6.3 KiB
PHP
<?php
|
|
|
|
namespace App\Controllers;
|
|
|
|
use App\Models\ModelAbsensi;
|
|
|
|
class Absensi extends BaseController
|
|
{
|
|
protected $AbsensiModel;
|
|
|
|
function __construct()
|
|
{
|
|
$this->AbsensiModel = new ModelAbsensi();
|
|
}
|
|
|
|
public function index()
|
|
{
|
|
if (session()->has('nip') && session()->has('username')) {
|
|
$data = array(
|
|
'body' => 'Absensi/list',
|
|
'absensi' => $this->AbsensiModel->getAbsensi(),
|
|
'username' => session('username'),
|
|
'nama' => session('nama'),
|
|
'hak_akses' => session('hak_akses'),
|
|
);
|
|
return view('index', $data);
|
|
} else {
|
|
// Jika pengguna belum login, arahkan ke halaman login
|
|
return redirect()->to(base_url() . 'login');
|
|
}
|
|
}
|
|
|
|
public function input()
|
|
{
|
|
if (session()->has('nip') && session()->has('username')) {
|
|
$data = array(
|
|
'body' => 'Absensi/input',
|
|
'username' => session('username'),
|
|
'nama' => session('nama'),
|
|
'hak_akses' => session('hak_akses'),
|
|
);
|
|
return view('index', $data);
|
|
} else {
|
|
// Jika pengguna belum login, arahkan ke halaman login
|
|
return redirect()->to(base_url() . 'login');
|
|
}
|
|
}
|
|
|
|
public function insert()
|
|
{
|
|
$data = array(
|
|
'bulan' => $this->request->getPost('bulan'),
|
|
'tahun' => $this->request->getPost('tahun'),
|
|
'nip' => $this->request->getPost('nip'),
|
|
'nama' => $this->request->getPost('nama'),
|
|
'sakit' => $this->request->getPost('sakit'),
|
|
'ijin' => $this->request->getPost('ijin'),
|
|
'alpa' => $this->request->getPost('alpa'),
|
|
'cuti' => $this->request->getPost('cuti'),
|
|
'total_kehadiran' => $this->request->getPost('total_kehadiran'),
|
|
'total_kerja' => $this->request->getPost('total_kerja'),
|
|
);
|
|
if ($this->AbsensiModel->insert_absensi($data)) {
|
|
session()->setFlashdata('success', 'Berhasil Menambahkan Data Absensi');
|
|
return redirect()->to(base_url() . 'absensi/list');
|
|
} else {
|
|
session()->setFlashdata('error', 'Gagal Menambahkan Data Absensi');
|
|
return redirect()->to(base_url() . 'absensi/input');
|
|
}
|
|
}
|
|
|
|
public function insertExcel()
|
|
{
|
|
$bulan = $this->request->getPost('bulan');
|
|
$tahun = $this->request->getPost('tahun');
|
|
|
|
$file_excel = $this->request->getFile('fileexcel');
|
|
$ext = $file_excel->getClientExtension();
|
|
if ($ext == 'xls') {
|
|
$render = new \PhpOffice\PhpSpreadsheet\Reader\Xls();
|
|
} else {
|
|
$render = new \PhpOffice\PhpSpreadsheet\Reader\Xlsx();
|
|
}
|
|
$spreadsheet = $render->load($file_excel);
|
|
|
|
$data = $spreadsheet->getActiveSheet()->toArray();
|
|
|
|
$errors = [];
|
|
$successCount = 0;
|
|
|
|
foreach ($data as $x => $row) {
|
|
if ($x < 4) {
|
|
continue;
|
|
}
|
|
if (empty($row[0])) {
|
|
break;
|
|
}
|
|
|
|
$nip = $row[0];
|
|
$nama = $row[1];
|
|
$sakit = $row[2];
|
|
$ijin = $row[3];
|
|
$alpa = $row[4];
|
|
$cuti = $row[5];
|
|
$total_kehadiran = $row[11];
|
|
$total_kerja = $row[6];
|
|
|
|
$cek = $this->AbsensiModel->getByBulanTahun($bulan, $tahun, $nip);
|
|
if (count($cek) > 0) {
|
|
$errors[] = "Data gagal diimport, guru dengan NIP $nip pada bulan $bulan dan tahun $tahun sudah ada.";
|
|
} else {
|
|
$dataInsert = [
|
|
'bulan' => $bulan,
|
|
'tahun' => $tahun,
|
|
'nip' => $nip,
|
|
'nama' => $nama,
|
|
'sakit' => $sakit,
|
|
'ijin' => $ijin,
|
|
'alpa' => $alpa,
|
|
'cuti' => $cuti,
|
|
'total_kehadiran' => $total_kehadiran,
|
|
'total_kerja' => $total_kerja,
|
|
];
|
|
|
|
if ($this->AbsensiModel->insert_absensi($dataInsert)) {
|
|
$successCount++;
|
|
} else {
|
|
$errors[] = "Gagal mengimport data untuk NIP $nip.";
|
|
}
|
|
}
|
|
}
|
|
|
|
if ($successCount > 0) {
|
|
session()->setFlashdata('success', "Berhasil mengimport $successCount data Excel.");
|
|
}
|
|
|
|
if (!empty($errors)) {
|
|
session()->setFlashdata('error', $errors);
|
|
}
|
|
|
|
return redirect()->to(base_url() . 'absensi/list');
|
|
}
|
|
|
|
|
|
public function edit($id)
|
|
{
|
|
if (session()->has('nip') && session()->has('username')) {
|
|
$data_absensi = new ModelAbsensi();
|
|
$data = array(
|
|
'body' => 'Absensi/edit',
|
|
'data' => $data_absensi->getById($id)->getRow(),
|
|
'username' => session('username'),
|
|
'nama' => session('nama'),
|
|
'hak_akses' => session('hak_akses'),
|
|
);
|
|
return view('index', $data);
|
|
} else {
|
|
// Jika pengguna belum login, arahkan ke halaman login
|
|
return redirect()->to(base_url() . 'login');
|
|
}
|
|
}
|
|
|
|
public function update($id)
|
|
{
|
|
$data = $this->AbsensiModel->update($id, [
|
|
'nip' => $this->request->getVar('nip'),
|
|
'nama_guru' => $this->request->getVar('nama_guru'),
|
|
'tanggal_lahir' => $this->request->getVar('tanggal_lahir'),
|
|
'jenis_kelamin' => $this->request->getVar('jenis_kelamin'),
|
|
'alamat' => $this->request->getVar('alamat'),
|
|
'jabatan' => $this->request->getVar('jabatan'),
|
|
'username' => $this->request->getVar('username'),
|
|
'password' => $this->request->getVar('password'),
|
|
'hak_akses' => $this->request->getVar('hak_akses'),
|
|
]);
|
|
if ($data == true) {
|
|
return redirect()->to(base_url() . 'absensin/list')->with('success', 'Data Berhasil Diubah!');
|
|
} else {
|
|
return redirect()->to(base_url() . 'absensi/edit')->with('error', 'Data Gagal Diubah!');
|
|
}
|
|
}
|
|
|
|
public function delete($id)
|
|
{
|
|
$this->AbsensiModel->delete($id);
|
|
return redirect()->to(base_url() . 'absensin/list')->with('success', 'Data Berhasil Dihapus!');
|
|
}
|
|
|
|
}
|