<?php
defined('BASEPATH') or exit('No direct script access allowed');

class ControllerPinjamanKaryawan extends CI_Controller
{

    public function __construct()
    {
        parent::__construct();
        //validasi jika user belum login
        check_not_login();
        if ($this->session->userdata('level') != 3) {
            redirect();
        }
        $this->set_timezone();
        $this->load->library('encrypt');
        $this->load->library('form_validation');
        $this->load->library('Mycustom');
        $this->load->library('pdfgenerator');
        $this->load->library('Notifikasi');
        $this->load->model('bagian_keuangan/insert_model');
        $this->load->model('bagian_keuangan/select_model');
        $this->load->model('bagian_keuangan/update_model');
    }
    public function set_timezone()
    {
        date_default_timezone_set("Asia/Jakarta");
    }
    // Index halaman pinjaman karyawan
    public function index()
    {
        $notif = $this->notifikasi->notif_keuangan();
        // Data Login
        $data_login                   = $this->userlogin->user_login();
        $data_id_login                = $this->session->userdata('isloggedin');
        // Query SQL Data atau isi data page
        // Data Karyawan Data Lengkap
        $data_karyawan                = $this->select_model->vd_karyawanDataLengkap();
        $data_pinjaman_aktif          = $this->select_model->vd_pinjamanKaryawanAktif();
        $data_pinjaman_lunas          = $this->select_model->vd_pinjamanKaryawanLunas();
        $total_pinjaman               = $this->select_model->vd_totalpinjamanKaryawan();
        $total_kembali                = $this->select_model->vd_totalBayarKaryawan();
        // echo '<pre>';
        // var_dump($total_kembali);
        // die;
        $pendapatan_jasa              = $this->select_model->vd_totalPendapatanKaryawan();
        $data = array(
            // Untuk memanggil halaman sesuai menu
            'folder'              => 'koperasi/pinjaman_karyawan',
            'page'                => 'index',
            'judul'               => 'Bagian Pinjaman Karyawan || Bagian Keuangan',
            'notif'               => $notif,
            // Isi data
            'data_id_login'       => $data_id_login,
            'data_login'          => $data_login,
            // Data isian konten
            'data_karyawan'       => $data_karyawan,
            'data_pinjaman_aktif' => $data_pinjaman_aktif,
            'data_pinjaman_lunas' => $data_pinjaman_lunas,
            // Data ringkas pinjaman karyawan
            'total_pinjaman'      => $total_pinjaman,
            'total_kembali'      => $total_kembali,
            'pendapatan_jasa'      => $pendapatan_jasa
        );
        $this->load->view('keuangan/index', $data);
    }
    // Index bagian bayar pinjaman karyawan
    public function kontrak($id)
    {
        $notif                 = $this->notifikasi->notif_keuangan();
        // Data Login
        $data_login            = $this->userlogin->user_login();
        $data_id_login         = $this->session->userdata('isloggedin');
        $kontrak_id            = $this->encrypt->decode($id);
        // Rincian Kontrak
        $rincian_kontrak       = $this->db->get_where('s_pinjaman_kontrak', ['id' => $kontrak_id])->row_array();
        $data_jaminan          = $this->db->get_where('s_pinjaman_jaminan', ['kontrak_id' => $kontrak_id])->row_array();
        $data_angsuran         = $this->db->get_where('s_pinjaman_angsuran', ['kontrak_id' => $kontrak_id])->result();
        $sudah_bayar           = $this->select_model->vd_SudahBayarAngsuranKaryawan($kontrak_id);
        $identitas_karyawan    = $this->select_model->vd_identitasKaryawan($rincian_kontrak);
        // echo '<pre>';
        // var_dump($identitas_karyawan);
        // die;
        $data = array(
            // Untuk memanggil halaman sesuai menu
            'folder'              => 'koperasi/kontrak_karyawan',
            'page'                => 'index',
            'judul'               => 'Detail Kontrak Pinjaman Karyawan || Bagian Keuangan',
            'data_id_login'       => $data_id_login,
            'data_login'          => $data_login,
            'notif'               => $notif,
            'identitas'               => $identitas_karyawan,
            // Isi dalam konten
            'rincian_kontrak'     => $rincian_kontrak,
            'jaminan'             => $data_jaminan,
            'data_angsuran'       => $data_angsuran,
            'sudah_bayar'         => $sudah_bayar
        );
        $this->load->view('keuangan/index', $data);
    }
    // Aktivitas bayar pinjaman
    // Bayar Lunas
    public function bayar_lunas($id)
    {
        $angs_id            = $this->encrypt->decode($id);
        $data_angsuran      = $this->db->get_where('s_pinjaman_angsuran', ['id' => $angs_id])->row_array();
        $data_kontrak       = $this->db->get_where('s_pinjaman_kontrak', ['id' => $data_angsuran['kontrak_id']])->row_array();
        if ($data_angsuran['angs_ke'] == $data_kontrak['tempo_pinjaman']) :
            $data_kontrak = array(
                'status_kontrak' => 'LUNAS'
            );
            $this->db->where('id', $data_angsuran['kontrak_id']);
            $this->db->update('s_pinjaman_kontrak', $data_kontrak);
        endif;
        $data_angsuran = array(
            'tgl_bayar'      => date('Y-m-d'),
            'status_angsuran' => 'LUNAS_LANCAR'
        );
        $this->db->where('id', $angs_id);
        $this->db->update('s_pinjaman_angsuran', $data_angsuran);


        $this->session->set_flashdata('pesan_berhasil', '<div class="alert alert-success" id="pesan_berhasil" role="alert">Berhasil Bayar Angsuran!</div>');
        redirect('keuangan/sistem/kontrak_pinjaman/' . $this->encrypt->encode($data_kontrak['id']));
    }
    // Bayar Macet
    public function bayar_macet($id)
    {
        $angs_id            = $this->encrypt->decode($id);
        $data_angsuran      = $this->db->get_where('s_pinjaman_angsuran', ['id' => $angs_id])->row_array();
        $data_kontrak       = $this->db->get_where('s_pinjaman_kontrak', ['id' => $data_angsuran['kontrak_id']])->row_array();
        if ($data_angsuran['angs_ke'] == $data_kontrak['tempo_pinjaman']) :
            $data_kontrak = array(
                'status_kontrak' => 'LUNAS'
            );
            $this->db->where('id', $data_angsuran['kontrak_id']);
            $this->db->update('s_pinjaman_kontrak', $data_kontrak);
        endif;
        $data_angsuran = array(
            'tgl_bayar'      => date('Y-m-d'),
            'status_angsuran' => 'LUNAS_MACET'
        );
        $this->db->where('id', $angs_id);
        $this->db->update('s_pinjaman_angsuran', $data_angsuran);


        $this->session->set_flashdata('pesan_berhasil', '<div class="alert alert-success" id="pesan_berhasil" role="alert">Berhasil Bayar Angsuran!</div>');
        redirect('keuangan/sistem/kontrak_pinjaman/' . $this->encrypt->encode($data_kontrak['id']));
    }
    public function crud()
    {
        if (isset($_POST['simpanPinjamanAktif'])) :
            $login_id           = htmlspecialchars($this->input->post('login_id'));
            $pokok_pinjaman     = htmlspecialchars($this->input->post('pokok_pinjaman'));
            $tempo              = htmlspecialchars($this->input->post('lama_pinjaman'));
            $jaminan            = htmlspecialchars($this->input->post('pakai_jaminan'));
            $tgl_realisasi      = htmlspecialchars($this->input->post('tgl_realisasi'));
            $aturan_pinjaman    = $this->db->get_where('p_koperasi_aturan', ['id' => 6])->row_array();
            // Potongan Awal saat pencairan
            $pot_admin          = $pokok_pinjaman * $aturan_pinjaman['administrasi'] / 100;
            $pot_rk             = $pokok_pinjaman * $aturan_pinjaman['rk'] / 100;
            // Besaran Pokok Setiap kali Pembayaran
            $pokok_angsuran    = $pokok_pinjaman / $tempo;
            $pokokangsuran     = ceil($pokok_angsuran);
            $bsr_pokok         = round($pokokangsuran, -2);
            // Besar Angsuran setiap bulan
            // Biaya Jasa Setiap transaksi pembayaran
            $bsr_jasa          =  round(ceil(($pokok_pinjaman * $aturan_pinjaman['jasa'] / 100)), -2);
            // Biaya yang harus di bayar
            $bsr_angsuran      = round($bsr_pokok + $bsr_jasa, -3);
            // Total Pembayaran sampai lunas
            $ttl_bayar         = $bsr_angsuran * $tempo;
            $nomor_kontrak     = $login_id . date('Ymdhis');
            $data_kontrak       = array(
                'id'             => $nomor_kontrak,
                'login_id'       => $login_id,
                'pokok_pinjaman' => $pokok_pinjaman,
                'bsr_admin'      => $pot_admin,
                'bsr_rk'         => $pot_rk,
                'bsr_pokok'      => $bsr_pokok,
                'bsr_jasa'       => $bsr_jasa,
                'bsr_angsuran'   => $bsr_angsuran,
                'tempo_pinjaman' => $tempo,
                'ttl_bayar'      => $ttl_bayar,
                'jaminan'        => $jaminan,
                'tgl_realisasi'  => $tgl_realisasi,
                'status_kontrak' => 'AKTIF'
            );
            $this->db->insert('s_pinjaman_kontrak', $data_kontrak);
            $this->_buatJadwalAngsuran($nomor_kontrak);
            if ($jaminan == 'Y') :
                $data_isi_jaminan = array(
                    'kontrak_id' => $nomor_kontrak,
                    'nm_jaminan' => htmlspecialchars($this->input->post('tambah_pakai_jaminan'))
                );
                $this->db->insert('s_pinjaman_jaminan', $data_isi_jaminan);
                $this->update_model->tambahFotoJaminan1($nomor_kontrak);
                $this->update_model->tambahFotoJaminan2($nomor_kontrak);
                $this->update_model->tambahFotoJaminan3($nomor_kontrak);
                $this->update_model->tambahFotoJaminan4($nomor_kontrak);
            endif;
            $this->session->set_flashdata('pesan_berhasil', '<div class="alert alert-success" id="pesan_berhasil" role="alert">Berhasil Menambah Pinjaman Karyawan!</div>');
            redirect('keuangan/sistem/pinjaman_karyawan');
        endif;
    }
    // Jadwal Angsuran
    private function _buatJadwalAngsuran($nomor_kontrak)
    {
        $cek_kontrak = $this->db->get_where('s_pinjaman_kontrak', ['id' => $nomor_kontrak])->row_array();
        $a = 1;
        // Bulanan Karyawan
        while ($a <= $cek_kontrak['tempo_pinjaman']) :
            $data = array(
                'kontrak_id'      => $cek_kontrak['id'],
                'angs_ke'         => $a,
                'tgl_tempo'       => date('Y-m-d', strtotime('+' . $a . ' month', strtotime($cek_kontrak['tgl_realisasi']))),
                'bsr_bayar'       => $cek_kontrak['bsr_angsuran'],
                'bsr_pokok'       => $cek_kontrak['bsr_pokok'],
                'bsr_jasa'        => $cek_kontrak['bsr_jasa'],
                'status_angsuran' => 'BELUM'
            );
            $this->db->insert('s_pinjaman_angsuran', $data);
            $a++;
        endwhile;
    }
}

/* End of file ControllerPinjamanKaryawan.php and path \application\controllers\keuangan\ControllerPinjamanKaryawan.php */
