MIF_E31211958/app/Controllers/Absensi.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!');
}
}