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

class ControllerPengajuanPinjaman extends CI_Controller
{

    public function __construct()
    {
        parent::__construct();
        check_not_login();
        if ($this->session->userdata('level') != 6) {
            redirect();
        }
        $this->load->library('encrypt');
        $this->load->library('form_validation');
        $this->load->library('mycustom');
        $this->load->library('Notifikasi');
        $this->load->library('pdfgenerator');
        $this->load->model('kabag_marketing/insert_model');
        $this->load->model('kabag_marketing/select_model');
        $this->load->model('kabag_marketing/update_model');
        $this->set_timezone();
    }
    public function set_timezone()
    {
        date_default_timezone_set("Asia/Jakarta");
    }

    public function index()
    {
        $notif                 = $this->notifikasi->notif_kabag_marketing();
        // Data Login
        $data_login            = $this->userlogin->user_login();
        $data_id_login         = $this->session->userdata('isloggedin');
        $data_kotkab           = $this->select_model->vd_kotkab();
        // Data Isian Konten
        // Tampilkan Jenis Pinjaman
        $jenis_pinjaman        = $this->select_model->vd_jenisPinjamanKabag();
        $data_pengajuan        = $this->select_model->vd_pengajuanPinjaman();
        $data_jaminan          = $this->select_model->vd_jaminanPinjaman();
        $data = array(
            // Untuk memanggil halaman sesuai menu
            'folder'              => 'operasional/pengajuan',
            'page'                => 'index',
            'judul'               => 'Kegiatan Pengajuan Pinjaman || Bagian Kepala Marketing',
            'data_id_login'       => $data_id_login,
            'data_login'          => $data_login,
            'data_kota'           => $data_kotkab,
            'notif'               => $notif,
            // Isi dalam konten
            'jenis_pinjaman'      => $jenis_pinjaman,
            'data_pengajuan'      => $data_pengajuan,
            'data_jaminan'        => $data_jaminan
        );
        $this->load->view('kabag_marketing/index', $data);
    }
    public function riwayat()
    {
        $notif                 = $this->notifikasi->notif_kabag_marketing();
        // Data Login
        $data_login            = $this->userlogin->user_login();
        $data_id_login         = $this->session->userdata('isloggedin');
        // Data Isian Konten
        // Tampilkan Jenis Pinjaman
        $jenis_pinjaman        = $this->select_model->vd_jenisPinjaman();
        $data_pengajuan        = $this->select_model->vd_RiwayatPengajuanPinjaman();
        $data_jaminan          = $this->select_model->vd_jaminanPinjaman();
        // echo '<pre>';
        // var_dump($data_pengajuan);
        // die;
        $data = array(
            // Untuk memanggil halaman sesuai menu
            'folder'              => 'operasional/riwayat',
            'page'                => 'index',
            'judul'               => 'Riwayat Pengajuan Pinjaman || Bagian Kepala Marketing',
            'data_id_login'       => $data_id_login,
            'data_login'          => $data_login,
            'notif'               => $notif,
            // Isi dalam konten
            'jenis_pinjaman'      => $jenis_pinjaman,
            'data_pengajuan'      => $data_pengajuan,
            'data_jaminan'        => $data_jaminan
        );
        $this->load->view('kabag_marketing/index', $data);
    }
    public function crud()
    {
        // Verifikasi Pengajuan dari Marketing
        if (isset($_POST['terimaPengajuanPinjaman'])) :
            $kontrak_id = htmlspecialchars($this->input->post('kontrak_id'));
            $data = array(
                'status_kontrak' => 'TERIMA'
            );
            $this->db->where('id', $kontrak_id);
            $this->db->update('p_koperasi_kontrak', $data);
            $data_progress = array(
                'tgl_konfirmasi' => date('Y-m-d')
            );
            $this->db->where('kontrak_id', $kontrak_id);
            $this->db->update('p_koperasi_progres', $data_progress);
            $this->_notifWADiterima($kontrak_id);
            $this->session->set_flashdata('pesan_berhasil', '<div class="alert alert-success" id="pesan_berhasil" role="alert">Berhasil Menerima Pengajuan Pinjaman!</div>');
            redirect('kabag_marketing/kegiatan/pengajuan_pinjaman');
        endif;
        if (isset($_POST['tolakPengajuanPinjaman'])) :
            $kontrak_id = htmlspecialchars($this->input->post('kontrak_id'));
            $data = array(
                'status_kontrak' => 'TOLAK'
            );
            $this->db->where('id', $kontrak_id);
            $this->db->update('p_koperasi_kontrak', $data);
            $data_progress = array(
                'tgl_konfirmasi' => date('Y-m-d'),
                'ket_progress'   => htmlspecialchars($this->input->post('alasan_tolak'))
            );
            $this->db->where('kontrak_id', $kontrak_id);
            $this->db->update('p_koperasi_progres', $data_progress);
            $this->_notifWADitolak($kontrak_id);
            $this->session->set_flashdata('pesan_berhasil', '<div class="alert alert-success" id="pesan_berhasil" role="alert">Berhasil Menolak Pengajuan Pinjaman!</div>');
            redirect('kabag_marketing/kegiatan/pengajuan_pinjaman');
        endif;
        // Pengajuan dari kabag marketing
        if (isset($_POST['simpanPengajuanPinjaman'])) :
            $data_inputan       = $this->_dataInputanAnggotaKoperasi();
            $alamat_id          = $this->_cekDataAlamat($data_inputan);
            $cek_anggota = $this->db->get_where('anggota', ['nik' => $data_inputan['nik']])->row_array();
            if ($cek_anggota > 0) :
                // Sudah Melakukan Pengajuan Pinjaman
                $anggota_id = $cek_anggota['id'];
                $cek_pengajuan = $this->db->get_where('p_koperasi_kontrak', ['anggota_id' => $anggota_id, 'status_kontrak' => 'KONFIRMASI'])->row_array();
                if ($cek_pengajuan > 0) :
                    $this->session->set_flashdata('pesan_gagal', '<div class="alert alert-danger" id="pesan_gagal" role="alert">Sudah Melakukan Pengajuan Pinjaman!</div>');
                    redirect('kabag_marketing/kegiatan/pengajuan_pinjaman');
                endif;
                // Menunggu Untuk Melakukan Pencairan Pinjaman
                $cek_terima = $this->db->get_where('p_koperasi_kontrak', ['anggota_id' => $anggota_id, 'status_kontrak' => 'TERIMA'])->row_array();
                if ($cek_terima > 0) :
                    $this->session->set_flashdata('pesan_gagal', '<div class="alert alert-danger" id="pesan_gagal" role="alert">Menunggu Untuk Melakukan Pencairan Pinjaman!</div>');
                    redirect('kabag_marketing/kegiatan/pengajuan_pinjaman');
                endif;
                // Masih Ada Pinjaman Aktif
                $cek_aktif = $this->db->get_where('p_koperasi_kontrak', ['anggota_id' => $anggota_id, 'status_kontrak' => 'AKTIF'])->row_array();
                if ($cek_aktif > 0) :
                    $this->session->set_flashdata('pesan_gagal', '<div class="alert alert-danger" id="pesan_gagal" role="alert">Masih Ada Pinjaman Aktif!</div>');
                    redirect('kabag_marketing/kegiatan/pengajuan_pinjaman');
                endif;
                // Masih Ada Pinjaman Aktif namun Macet
                $cek_macet = $this->db->get_where('p_koperasi_kontrak', ['anggota_id' => $anggota_id, 'status_kontrak' => 'MACET'])->row_array();
                if ($cek_macet > 0) :
                    $this->session->set_flashdata('pesan_gagal', '<div class="alert alert-danger" id="pesan_gagal" role="alert">Masih Ada Pinjaman Aktif!</div>');
                    redirect('kabag_marketing/kegiatan/pengajuan_pinjaman');
                endif;
            else :
                $this->_cekKTPAnggota($data_inputan);
                $this->_validasiComboBox($data_inputan);
                $this->_validasiNomorHP($data_inputan);
                $anggota_id = $this->insert_model->simpanDataPengajuanKoperasi($data_inputan, $alamat_id);
                $this->update_model->menambahFotoKKAnggota($anggota_id);
            endif;
            $kd_produk          = htmlspecialchars($this->input->post('produk_id'));
            if ($kd_produk == 121) :
                $detail_kontrak = $this->_dataIdentitasPinjamanMingguan($data_inputan, $anggota_id);
                $this->insert_model->tambahPengajuanPinjamanMingguan($detail_kontrak);
            elseif ($kd_produk == 122) :
                $detail_kontrak = $this->_dataIdentitasPinjamanMingguan($data_inputan, $anggota_id);
                $this->insert_model->tambahPengajuanPinjamanMingguan($detail_kontrak);
            elseif ($kd_produk == 124) :
                $detail_kontrak = $this->_dataIdentitasPinjamanMusiman($data_inputan, $anggota_id);
                $this->insert_model->tambahPengajuanPinjamanMusiman($detail_kontrak);
            else :
                $detail_kontrak = $this->_dataIdentitasPinjaman($data_inputan, $anggota_id);
                $this->insert_model->tambahPengajuanPinjaman($detail_kontrak);
            endif;
            $this->session->set_flashdata('pesan_berhasil', '<div class="alert alert-success" id="pesan_berhasil" role="alert">Berhasil Mengajukan Pinjaman!</div>');
            redirect('kabag_marketing/kegiatan/pengajuan_pinjaman');
        endif;
        // Menambahkan Foto Jaminan
        if (isset($_POST['tambahFotoJaminan'])) :
            $this->update_model->tambahFotoJaminan1();
            $this->update_model->tambahFotoJaminan2();
            $this->update_model->tambahFotoJaminan3();
            $this->update_model->tambahFotoJaminan4();
            if (htmlspecialchars($this->input->post('aturan_id')) == 1) :
                $data_proses = array(
                    'status_kontrak'       => 'TERIMA'
                );
                $data_new = array(
                    'tgl_konfirmasi' => date('Y-m-d')
                );
                $this->db->where('kontrak_id', htmlspecialchars($this->input->post('kontrak_id')));
                $this->db->update('p_koperasi_progres', $data_new);

            elseif (htmlspecialchars($this->input->post('aturan_id')) == 2) :
                $data_proses = array(
                    'status_kontrak'       => 'TERIMA'
                );
                $data_new = array(
                    'tgl_konfirmasi' => date('Y-m-d')
                );
                $this->db->where('kontrak_id', htmlspecialchars($this->input->post('kontrak_id')));
                $this->db->update('p_koperasi_progres', $data_new);
            else :
                $data_proses = array(
                    'status_kontrak'       => 'KONFIRMASI'
                );
            endif;
            $this->db->where('id', htmlspecialchars($this->input->post('kontrak_id')));
            $this->db->update('p_koperasi_kontrak', $data_proses);
            $this->session->set_flashdata('pesan_berhasil', '<div class="alert alert-success" id="pesan_berhasil" role="alert">Berhasil Menambah Foto Jaminan Pinjaman!</div>');
            redirect('kabag_marketing/kegiatan/pengajuan_pinjaman');
        endif;
        // Menambahkan Foto Jaminan
        if (isset($_POST['pencairanDanaNasabah'])) :
            // Ubah Status Kontrak menjadi Aktif
            $kontrak_id = $this->db->get_where('p_koperasi_kontrak', ['id' => htmlspecialchars($this->input->post('kontrak_id'))])->row_array();
            $data_kontrak = array(
                'status_kontrak' => 'AKTIF'
            );
            $this->db->where('id', htmlspecialchars($this->input->post('kontrak_id')));
            $this->db->update('p_koperasi_kontrak', $data_kontrak);
            // Menambahkan data tanggal realisasi
            // Menambahkan data dokumen perjanjian
            $this->update_model->pencairanDanaNasabah(); // Merubah Data Doc Kontrak dan tanggal realisasi
            // Menambahkan data bukti terima pencairan
            $this->_buktiTerimaPencairan(); // Bukti Menambahkan kas umum keluar
            // Menambahkan Alur Kas Umum Operasional / Keluar
            $this->insert_model->pencairanKasKeluar();  // Menambahkan transaksi operasional kas umum
            // Menambahkan Alur Kas Umum Omset / Masuk 
            $this->_buktiOmsetPencairan(); // Bukti Omset Admin dan RK
            // Membuat Jadwal Angsuran
            $this->_buatJadwalAngsuran();
            $this->session->set_flashdata('pesan_berhasil', '<div class="alert alert-success" id="pesan_berhasil" role="alert">Berhasil Mencairkan Dana Pinjaman!</div>');
            redirect('kabag_marketing/kegiatan/realisasi_pinjaman');
        endif;
    }
    // Kumpulan private function
    // Kelompok Data Inputan
    private function _dataInputanAnggotaKoperasi()
    {
        // Cek Status Hubungan
        if (htmlspecialchars($this->input->post('status_hubungan')) == 0) :
            $suami_istri = 'BELUM MENIKAH';
        elseif (htmlspecialchars($this->input->post('status_hubungan')) == 1) :
            $suami_istri = htmlspecialchars($this->input->post('tambah_suami_istri'));
        elseif (htmlspecialchars($this->input->post('status_hubungan')) == 2) :
            $suami_istri = 'DUDA/JANDA';
        endif;
        $data_inputan = array(
            'nik'            => htmlspecialchars($this->input->post('tambah_nik_anggota')),
            'login_id'       => htmlspecialchars($this->input->post('login_id')),
            'nomor_kk'       => htmlspecialchars($this->input->post('tambah_nomor_kk')),
            'nm_anggota'     => htmlspecialchars($this->input->post('tambah_nm_anggota')),
            'jk'             => htmlspecialchars($this->input->post('tambah_jk')),
            'alamat_lengkap' => htmlspecialchars($this->input->post('tambah_alamat_lengkap')),
            'kode_pos'       => htmlspecialchars($this->input->post('tambah_kode_pos')),
            'nm_rt'          => htmlspecialchars($this->input->post('tambah_nm_rt')),
            'nm_rw'          => htmlspecialchars($this->input->post('tambah_nm_rw')),
            'nm_desa'        => htmlspecialchars($this->input->post('tambah_dk_ds')),
            'nm_kecamatan'   => htmlspecialchars($this->input->post('tambah_kecamatan_baru')),
            'kot_kab'        => htmlspecialchars($this->input->post('tambah_kota_kabupaten')),
            'tempat_lahir'   => htmlspecialchars($this->input->post('tambah_tempat_lahir')),
            'tgl_lahir'      => htmlspecialchars($this->input->post('tambah_tgl_lahir')),
            'no_hp'          => htmlspecialchars($this->input->post('tambah_no_hp')),
            'pekerjaan'      => htmlspecialchars($this->input->post('tambah_pekerjaan')),
            'suami_istri'    => $suami_istri,
            'foto_ktp'       => htmlspecialchars($this->input->post('foto_ktp')),
            'produk_id'      => htmlspecialchars($this->input->post('produk_id')),
            'pokok_pinjaman' => htmlspecialchars($this->input->post('pokok_pinjaman'))
        );
        return $data_inputan;
    }
    // Cek Alamat
    private function _cekDataAlamat($data_inputan)
    {
        $cek_alamat = $this->db->get_where('sistem_alamat', ['nm_desa' => $data_inputan['nm_desa'], 'nm_kecamatan' => $data_inputan['nm_kecamatan'], 'kot_kab' => $data_inputan['kot_kab']])->row_array();
        if ($cek_alamat > 0) :
            $alamat_id = $cek_alamat['id'];
            return $alamat_id;
        else :
            $this->session->set_flashdata('pesan_gagal', '<div class="alert alert-danger" id="pesan_gagal" role="alert">Alamat Tidak Tersedia, Hubungi Developer!</div>');
            redirect('kabag_marketing/kegiatan/pengajuan_pinjaman');
        endif;
    }
    // Validasi KTP
    private function _cekKTPAnggota($data_inputan)
    {
        $nik = $data_inputan['nik'];
        // Cek Apakah 16 karakter
        $hitung_nik      = strlen($nik);
        if ($hitung_nik != 16) :
            $this->session->set_flashdata('pesan_gagal', '<div class="alert alert-danger" id="pesan_gagal" role="alert">NIK Harus 16 Karakter!</div>');
            redirect('kabag_marketing/kegiatan/pengajuan_pinjaman');
        endif;
    }
    // Validasi Inputan Combo Box
    private function _validasiComboBox($data_inputan)
    {
        if ($data_inputan['jk'] == 'ok') :
            $this->session->set_flashdata('pesan_gagal', '<div class="alert alert-danger" id="pesan_gagal" role="alert">Jenis Kelamin Harus Di Isi!</div>');
            redirect('kabag_marketing/kegiatan/pengajuan_pinjaman');
        endif;
        if ($data_inputan['nm_rt'] == 'ok') :
            $this->session->set_flashdata('pesan_gagal', '<div class="alert alert-danger" id="pesan_gagal" role="alert">Kolom RT Harus Diisi!</div>');
            redirect('kabag_marketing/kegiatan/pengajuan_pinjaman');
        endif;
        if ($data_inputan['nm_rw'] == 'ok') :
            $this->session->set_flashdata('pesan_gagal', '<div class="alert alert-danger" id="pesan_gagal" role="alert">Kolom RW Harus Diisi!</div>');
            redirect('kabag_marketing/kegiatan/pengajuan_pinjaman');
        endif;
    }
    // Validasi Nomor HP
    private function _validasiNomorHP($data_inputan)
    {
        $cek_nomor = $this->db->get_where('anggota', ['no_hp' => $data_inputan['no_hp']])->row_array();
        if ($cek_nomor > 0) :
            $this->session->set_flashdata('pesan_gagal', '<div class="alert alert-danger" id="pesan_gagal" role="alert">Nomor HP Sudah Di Gunakan Anggota Lain!</div>');
            redirect('kabag_marketing/kegiatan/pengajuan_pinjaman');
        endif;
        $cek_nomor_cadangan = $this->db->get_where('anggota_hp_cadangan', ['no_hp' => $data_inputan['no_hp']])->row_array();
        if ($cek_nomor_cadangan > 0) :
            $this->session->set_flashdata('pesan_gagal', '<div class="alert alert-danger" id="pesan_gagal" role="alert">Nomor HP Sudah Di Gunakan Anggota Lain!</div>');
            redirect('kabag_marketing/kegiatan/pengajuan_pinjaman');
        endif;
    }
    // Menunjukkan data identitas pinjaman
    private function _dataIdentitasPinjaman($data_inputan, $anggota_id)
    {
        $tempo              = htmlspecialchars($this->input->post('lama_pinjaman'));
        $produk_id          = htmlspecialchars($this->input->post('produk_id'));
        if ($produk_id == 124) :
            if ($tempo < 1) :
                $this->session->set_flashdata('pesan_gagal', '<div class="alert alert-danger" id="pesan_gagal" role="alert">Tempo Bulan Harus Lebih Dari atau Sama Dengan 1 Bulan!</div>');
                redirect('kabag_marketing/kegiatan/pengajuan_pinjaman');
            else :
                if ($tempo > 6) :
                    $this->session->set_flashdata('pesan_gagal', '<div class="alert alert-danger" id="pesan_gagal" role="alert">Tempo Bulan Harus Kurang Dari atau Sama Dengan 6 Bulan!</div>');
                    redirect('kabag_marketing/kegiatan/pengajuan_pinjaman');
                endif;
            endif;
        else :
            if ($tempo < 1) :
                $this->session->set_flashdata('pesan_gagal', '<div class="alert alert-danger" id="pesan_gagal" role="alert">Tempo Bulan Harus Lebih Dari atau Sama Dengan 1 Bulan!</div>');
                redirect('kabag_marketing/kegiatan/pengajuan_pinjaman');
            else :
                if ($tempo > 24) :
                    $this->session->set_flashdata('pesan_gagal', '<div class="alert alert-danger" id="pesan_gagal" role="alert">Tempo Bulan Harus Kurang Dari atau Sama Dengan 6 Bulan!</div>');
                    redirect('kabag_marketing/kegiatan/pengajuan_pinjaman');
                endif;
            endif;
        endif;
        $cek_ap             = $this->db->get_where('p_koperasi_aturan', ['produk_id' => $data_inputan['produk_id']])->row_array();
        $nomor_kontrak      = $data_inputan['login_id'] . $data_inputan['produk_id'] . date('ymdhis');
        // Potongan Awal saat pencairan
        $pot_admin          = $data_inputan['pokok_pinjaman'] * $cek_ap['administrasi'] / 100;
        $pot_rk             = $data_inputan['pokok_pinjaman'] * $cek_ap['rk'] / 100;
        // Besaran Pokok Setiap kali Pembayaran
        $pokok_angsuran    = $data_inputan['pokok_pinjaman'] / $tempo;
        $pokokangsuran     = ceil($pokok_angsuran);
        $bsr_pokok         = round($pokokangsuran, -2);
        // Simpanan atau tabungan setiap pembayaran
        $b_simpanan        = ($data_inputan['pokok_pinjaman'] * $cek_ap['simpanan'] / 100);
        $simpananpokok     = ceil($b_simpanan);
        $bsr_simpanan      = round($simpananpokok, -2);
        // Besar Angsuran setiap bulan
        // Biaya Jasa Setiap transaksi pembayaran
        $bsr_jasa          =  round(ceil(($data_inputan['pokok_pinjaman'] * $cek_ap['jasa'] / 100)), -2);
        // Biaya yang harus di bayar
        $bsr_angsuran      = round($bsr_pokok + $bsr_simpanan + $bsr_jasa, -3);
        // Total Pembayaran sampai lunas
        $ttl_bayar         = $bsr_angsuran * $tempo;
        $detail_kontrak = array(
            'id'              => $nomor_kontrak,
            'anggota_id'      => $anggota_id,
            'aturan_id'       => $cek_ap['id'],
            'pokok_pinjaman'  => $data_inputan['pokok_pinjaman'],
            'bsr_admin'       => $pot_admin,
            'bsr_rk'          => $pot_rk,
            'bsr_pokok'       => $bsr_pokok,
            'bsr_simpanan'    => $bsr_simpanan,
            'bsr_jasa'        => $bsr_jasa,
            'bsr_angsuran'    => $bsr_angsuran,
            'tempo_pinjaman'  => $tempo,
            'ttl_bayar'       => $ttl_bayar,
            'status_kontrak'  => 'KONFIRMASI',
            'login_id'        => $data_inputan['login_id']
        );
        return $detail_kontrak;
    }
    private function _dataIdentitasPinjamanMingguan($data_inputan, $anggota_id)
    {
        if ($data_inputan['produk_id'] == 122) :
            if ($data_inputan['pokok_pinjaman'] == 1000000) :
                $tambahan = 500;
            elseif ($data_inputan['pokok_pinjaman'] == 1500000) :
                $tambahan = 750;
            elseif ($data_inputan['pokok_pinjaman'] == 2000000) :
                $tambahan = 1000;
            elseif ($data_inputan['pokok_pinjaman'] == 2500000) :
                $tambahan = 1250;
            elseif ($data_inputan['pokok_pinjaman'] == 3000000) :
                $tambahan = 1500;
            elseif ($data_inputan['pokok_pinjaman'] == 3500000) :
                $tambahan = 1750;
            elseif ($data_inputan['pokok_pinjaman'] == 4000000) :
                $tambahan = 2000;
            elseif ($data_inputan['pokok_pinjaman'] == 4500000) :
                $tambahan = 2250;
            elseif ($data_inputan['pokok_pinjaman'] == 5000000) :
                $tambahan = 2500;
            elseif ($data_inputan['pokok_pinjaman'] == 5500000) :
                $tambahan = 2750;
            elseif ($data_inputan['pokok_pinjaman'] == 6000000) :
                $tambahan = 3000;
            elseif ($data_inputan['pokok_pinjaman'] == 6500000) :
                $tambahan = 3250;
            elseif ($data_inputan['pokok_pinjaman'] == 7000000) :
                $tambahan = 3500;
            elseif ($data_inputan['pokok_pinjaman'] == 7500000) :
                $tambahan = 3750;
            elseif ($data_inputan['pokok_pinjaman'] == 8000000) :
                $tambahan = 4000;
            elseif ($data_inputan['pokok_pinjaman'] == 8500000) :
                $tambahan = 4250;
            elseif ($data_inputan['pokok_pinjaman'] == 9000000) :
                $tambahan = 4500;
            elseif ($data_inputan['pokok_pinjaman'] == 9500000) :
                $tambahan = 4750;
            elseif ($data_inputan['pokok_pinjaman'] == 10000000) :
                $tambahan = 0;
            endif;
        else :
            $tambahan = 0;
        endif;
        $cek_ap             = $this->db->get_where('p_koperasi_aturan', ['produk_id' => $data_inputan['produk_id']])->row_array();
        $nomor_kontrak      = $data_inputan['login_id'] . $data_inputan['produk_id'] . date('ymdhis');
        // Potongan Awal saat pencairan
        $pot_admin          = $data_inputan['pokok_pinjaman'] * $cek_ap['administrasi'] / 100;
        $pot_rk             = $data_inputan['pokok_pinjaman'] * $cek_ap['rk'] / 100;
        // Besaran Pokok Setiap kali Pembayaran
        $pokok_angsuran    = $data_inputan['pokok_pinjaman'] / $cek_ap['tempo'];
        $pokokangsuran     = ceil($pokok_angsuran);
        $bsr_pokok         = round($pokokangsuran, -2);
        // Simpanan atau tabungan setiap pembayaran
        $b_simpanan        = ($data_inputan['pokok_pinjaman'] * $cek_ap['simpanan'] / 100) / $cek_ap['tempo'];
        $simpananpokok     = ceil($b_simpanan);
        $bsr_simpanan      = round($simpananpokok, -2);
        // Besar Angsuran setiap bulan
        // Biaya Jasa Setiap transaksi pembayaran
        $bsr_jasa          = (($data_inputan['pokok_pinjaman'] * $cek_ap['jasa'] / 100) / $cek_ap['tempo']) + $tambahan;
        // Biaya yang harus di bayar
        $bsr_angsuran      = $bsr_pokok + $bsr_simpanan + $bsr_jasa;
        // Total Pembayaran sampai lunas
        $ttl_bayar         = $bsr_angsuran * $cek_ap['tempo'];
        $detail_kontrak = array(
            'id'              => $nomor_kontrak,
            'anggota_id'      => $anggota_id,
            'aturan_id'       => $cek_ap['id'],
            'pokok_pinjaman'  => $data_inputan['pokok_pinjaman'],
            'bsr_admin'       => $pot_admin,
            'bsr_rk'          => $pot_rk,
            'bsr_pokok'       => $bsr_pokok,
            'bsr_simpanan'    => $bsr_simpanan,
            'bsr_jasa'        => $bsr_jasa,
            'bsr_angsuran'    => $bsr_angsuran,
            'tempo_pinjaman'  => $cek_ap['tempo'],
            'ttl_bayar'       => $ttl_bayar,
            'status_kontrak'  => 'KONFIRMASI',
            'login_id'        => $data_inputan['login_id']
        );
        return $detail_kontrak;
    }
    // Musiman
    private function _dataIdentitasPinjamanMusiman($data_inputan, $anggota_id)
    {
        $cek_ap             = $this->db->get_where('p_koperasi_aturan', ['produk_id' => $data_inputan['produk_id']])->row_array();
        $nomor_kontrak      = $data_inputan['login_id'] . $data_inputan['produk_id'] . date('ymdhis');
        $lama_pinjaman      = htmlentities($this->input->post('lama_pinjaman'));
        // Potongan Awal saat pencairan
        $pot_admin          = $data_inputan['pokok_pinjaman'] * $cek_ap['administrasi'] / 100;
        $pot_rk             = $data_inputan['pokok_pinjaman'] * $cek_ap['rk'] / 100;
        // Besaran Pokok Setiap kali Pembayaran
        $pokok_angsuran    = $data_inputan['pokok_pinjaman'];
        $pokokangsuran     = ceil($pokok_angsuran);
        $bsr_pokok         = round($pokokangsuran, -2);
        // Simpanan atau tabungan setiap pembayaran
        $b_simpanan        = ($data_inputan['pokok_pinjaman'] * $cek_ap['simpanan'] / 100) * $lama_pinjaman;
        $simpananpokok     = ceil($b_simpanan);
        $bsr_simpanan      = round($simpananpokok, -2);
        // Besar Angsuran setiap bulan
        // Biaya Jasa Setiap transaksi pembayaran
        $bsr_jasa          = (($data_inputan['pokok_pinjaman'] * $cek_ap['jasa'] / 100) * $lama_pinjaman);
        // Biaya yang harus di bayar
        $bsr_angsuran      = $bsr_pokok + $bsr_simpanan + $bsr_jasa;
        // Total Pembayaran sampai lunas
        $ttl_bayar         = $bsr_angsuran;
        $detail_kontrak = array(
            'id'              => $nomor_kontrak,
            'anggota_id'      => $anggota_id,
            'aturan_id'       => $cek_ap['id'],
            'pokok_pinjaman'  => $data_inputan['pokok_pinjaman'],
            'bsr_admin'       => $pot_admin,
            'bsr_rk'          => $pot_rk,
            'bsr_pokok'       => $data_inputan['pokok_pinjaman'],
            'bsr_simpanan'    => $bsr_simpanan,
            'bsr_jasa'        => $bsr_jasa,
            'bsr_angsuran'    => $ttl_bayar,
            'tempo_pinjaman'  => $lama_pinjaman,
            'ttl_bayar'       => $ttl_bayar,
            'status_kontrak'  => 'KONFIRMASI',
            'login_id'        => $data_inputan['login_id']
        );
        return $detail_kontrak;
    }
    // Kumpulan private function
    private function _buktiTerimaPencairan()
    {
        $nomor_kontrak         = htmlspecialchars($this->input->post('kontrak_id'));
        $cek_kontrak           = $this->db->get_where('p_koperasi_kontrak', ['id' => $nomor_kontrak])->row_array();
        $cek_aturan            = $this->db->get_where('p_koperasi_aturan', ['id' => $cek_kontrak['aturan_id']])->row_array();
        $cek_progress          = $this->db->get_where('p_koperasi_progres', ['kontrak_id' => $nomor_kontrak])->row_array();
        $data_invoice          = $this->db->get_where('anggota', ['id' => $cek_kontrak['anggota_id']])->row_array();
        $cek_anggota           = $this->db->get_where('anggota', ['id' => $cek_kontrak['anggota_id']])->row_array();
        $cek_kasir             = $this->db->get_where('sistem_login', ['id' => $this->session->userdata('isloggedin')])->row_array();
        $data = array(
            // Untuk memanggil halaman sesuai menu
            'title_pdf'           => 'Bukti Terima Pencairan Pinjaman',
            // Data isi konten
            'kontrak'         => $cek_kontrak,
            'aturan'          => $cek_aturan,
            'progress'        => $cek_progress,
            'anggota'         => $cek_anggota,
            'kasir'           => $cek_kasir
        );
        // $this->load->view('nota/nota_bayar_arisan', $data_halaman);
        // filename dari pdf ketika didownload
        $file_pdf = 'bukti_terima_pencairan_' . $nomor_kontrak;
        // setting paper
        $paper = 'A5';
        //orientasi paper potrait / landscape
        $orientation = "landscape";
        // $this->load->view('nota/nota_bayar_arisan_petugas', $data);
        $html = $this->load->view('document/nota/nota_terima_pencairan', $data, true);
        $tahun = date('Y');
        $bulan = date('m');
        // run dompdf
        $lokasi_file = 'assets/invoice/kas_umum/' . $tahun . '/' . $bulan . '/';
        $this->pdfgenerator->generate($html, $file_pdf, $paper, $lokasi_file, $orientation);
        $data_update_progress     = array(
            'bukti_terima' => $file_pdf . '.pdf'
        );
        $this->db->where('kontrak_id', $nomor_kontrak);
        $this->db->update('p_koperasi_progres', $data_update_progress);
        $nama_file = $file_pdf . '.pdf';
        $cek_option = $this->db->get_where('sistem_option')->row_array();
        $this->_notifWABuktiSetorAsli($nama_file, $lokasi_file, $data_invoice, $cek_option, $nomor_kontrak);
    }
    private function _buktiOmsetPencairan()
    {
        $nomor_kontrak         = htmlspecialchars($this->input->post('kontrak_id'));
        $cek_kontrak           = $this->db->get_where('p_koperasi_kontrak', ['id' => $nomor_kontrak])->row_array();
        $cek_aturan            = $this->db->get_where('p_koperasi_aturan', ['id' => $cek_kontrak['aturan_id']])->row_array();
        $cek_progress          = $this->db->get_where('p_koperasi_progres', ['kontrak_id' => $nomor_kontrak])->row_array();
        $cek_anggota           = $this->db->get_where('anggota', ['id' => $cek_kontrak['anggota_id']])->row_array();
        $cek_kasir             = $this->db->get_where('sistem_login', ['id' => $this->session->userdata('isloggedin')])->row_array();
        $data = array(
            // Untuk memanggil halaman sesuai menu
            'title_pdf'           => 'Bukti Omset Pencairan Pinjaman',
            // Data isi konten
            'kontrak'         => $cek_kontrak,
            'aturan'          => $cek_aturan,
            'progress'        => $cek_progress,
            'anggota'         => $cek_anggota,
            'kasir'           => $cek_kasir
        );
        // $this->load->view('nota/nota_bayar_arisan', $data_halaman);
        // filename dari pdf ketika didownload
        $file_pdf = 'bukti_omset_pencairan_' . $nomor_kontrak;
        // setting paper
        $paper = 'A5';
        //orientasi paper potrait / landscape
        $orientation = "landscape";
        // $this->load->view('nota/nota_bayar_arisan_petugas', $data);
        $html = $this->load->view('document/nota/nota_omset_pencairan', $data, true);
        $tahun = date('Y');
        $bulan = date('m');
        // run dompdf
        $lokasi_file = 'assets/invoice/kas_umum/' . $tahun . '/' . $bulan . '/';
        $this->pdfgenerator->generate($html, $file_pdf, $paper, $lokasi_file, $orientation);
        $nama_file = $file_pdf . '.pdf';
        $this->insert_model->omsetPencairanKasMasuk($nama_file, $cek_kontrak, $cek_aturan);
    }
    // Jadwal Angsuran
    private function _buatJadwalAngsuran()
    {
        $cek_kontrak = $this->db->get_where('p_koperasi_kontrak', ['id' => htmlspecialchars($this->input->post('kontrak_id'))])->row_array();
        $a = 1;
        if ($cek_kontrak['aturan_id'] == 1) :
            // Mingguan
            while ($a <= $cek_kontrak['tempo_pinjaman']) :
                $data = array(
                    'kontrak_id' => htmlspecialchars($this->input->post('kontrak_id')),
                    'angs_ke'    => $a,
                    'tgl_tempo'  => date('Y-m-d', strtotime('+' . $a . ' week', strtotime(date('Y-m-d')))),
                    'bsr_bayar'  => $cek_kontrak['bsr_angsuran'],
                    'bsr_pokok'  => $cek_kontrak['bsr_pokok'],
                    'bsr_jasa'   => $cek_kontrak['bsr_jasa'],
                    'bsr_simpanan' => $cek_kontrak['bsr_simpanan'],
                    'status_angsuran' => 'BELUM'
                );
                $this->db->insert('p_koperasi_angsuran', $data);
                $a++;
            endwhile;
        elseif ($cek_kontrak['aturan_id'] == 2) :
            // Dua Mingguan
            while ($a <= $cek_kontrak['tempo_pinjaman']) :
                $data = array(
                    'kontrak_id'      => htmlspecialchars($this->input->post('kontrak_id')),
                    'angs_ke'         => $a,
                    'tgl_tempo'       => date('Y-m-d', strtotime('+' . ($a * 2) . ' week', strtotime(date('Y-m-d')))),
                    'bsr_bayar'       => $cek_kontrak['bsr_angsuran'],
                    'bsr_pokok'       => $cek_kontrak['bsr_pokok'],
                    'bsr_jasa'        => $cek_kontrak['bsr_jasa'],
                    'bsr_simpanan'    => $cek_kontrak['bsr_simpanan'],
                    'status_angsuran' => 'BELUM'
                );
                $this->db->insert('p_koperasi_angsuran', $data);
                $a++;
            endwhile;
        elseif ($cek_kontrak['aturan_id'] == 3) :
            // Bulanan Calon Anggota
            while ($a <= $cek_kontrak['tempo_pinjaman']) :
                $data = array(
                    'kontrak_id'      => htmlspecialchars($this->input->post('kontrak_id')),
                    'angs_ke'         => $a,
                    'tgl_tempo'       => date('Y-m-d', strtotime('+' . $a . ' month', strtotime(date('Y-m-d')))),
                    'bsr_bayar'       => $cek_kontrak['bsr_angsuran'],
                    'bsr_pokok'       => $cek_kontrak['bsr_pokok'],
                    'bsr_jasa'        => $cek_kontrak['bsr_jasa'],
                    'bsr_simpanan'    => $cek_kontrak['bsr_simpanan'],
                    'status_angsuran' => 'BELUM'
                );
                $this->db->insert('p_koperasi_angsuran', $data);
                $a++;
            endwhile;
        elseif ($cek_kontrak['aturan_id'] == 4) :
            // Musiman
            $data = array(
                'kontrak_id'      => htmlspecialchars($this->input->post('kontrak_id')),
                'angs_ke'         => 1,
                'tgl_tempo'       => date('Y-m-d', strtotime('+' . $cek_kontrak['tempo_pinjaman'] . ' month', strtotime(date('Y-m-d')))),
                'bsr_bayar'       => $cek_kontrak['bsr_angsuran'],
                'bsr_pokok'       => $cek_kontrak['bsr_pokok'],
                'bsr_jasa'        => $cek_kontrak['bsr_jasa'],
                'bsr_simpanan'    => $cek_kontrak['bsr_simpanan'],
                'status_angsuran' => 'BELUM'
            );
            $this->db->insert('p_koperasi_angsuran', $data);
        elseif ($cek_kontrak['aturan_id'] == 5) :
            // Bulanan Anggota
            while ($a <= $cek_kontrak['tempo_pinjaman']) :
                $data = array(
                    'kontrak_id'      => htmlspecialchars($this->input->post('kontrak_id')),
                    'angs_ke'         => $a,
                    'tgl_tempo'       => date('Y-m-d', strtotime('+' . $a . ' month', strtotime(date('Y-m-d')))),
                    'bsr_bayar'       => $cek_kontrak['bsr_angsuran'],
                    'bsr_pokok'       => $cek_kontrak['bsr_pokok'],
                    'bsr_jasa'        => $cek_kontrak['bsr_jasa'],
                    'bsr_simpanan'    => $cek_kontrak['bsr_simpanan'],
                    'status_angsuran' => 'BELUM'
                );
                $this->db->insert('p_koperasi_angsuran', $data);
                $a++;
            endwhile;
        elseif ($cek_kontrak['aturan_id'] == 6) :
            // Bulanan Karyawan
            while ($a <= $cek_kontrak['tempo_pinjaman']) :
                $data = array(
                    'kontrak_id'      => htmlspecialchars($this->input->post('kontrak_id')),
                    'angs_ke'         => $a,
                    'tgl_tempo'       => date('Y-m-d', strtotime('+' . $a . ' month', strtotime(date('Y-m-d')))),
                    'bsr_bayar'       => $cek_kontrak['bsr_angsuran'],
                    'bsr_pokok'       => $cek_kontrak['bsr_pokok'],
                    'bsr_jasa'        => $cek_kontrak['bsr_jasa'],
                    'bsr_simpanan'    => $cek_kontrak['bsr_simpanan'],
                    'status_angsuran' => 'BELUM'
                );
                $this->db->insert('p_koperasi_angsuran', $data);
                $a++;
            endwhile;
        endif;
    }
    // Notifikasi WA
    // Notif WA Pencairan Kabag
    // Notifikasi WA Bukti Setor Nomor Saya
    private function _notifWABuktiSetorAsli($nama_file, $lokasi_file, $data_invoice, $cek_option, $nomor_kontrak)
    {
        $sett_wa = $this->db->get_where('sistem_wa', ['id' => 2])->row_array();
        $cek_nomor = substr($data_invoice['no_hp'], 0, 1);
        if ($cek_nomor == 0) :
            $no_hp = '62' . substr($data_invoice['no_hp'], 1, 20);
        else :
            $no_hp = $data_invoice['no_hp'];
        endif;
        $link_file = base_url($lokasi_file . $nama_file);

        $caption = 'Yth. ' . $data_invoice['nm_anggota'] . '

Pencairan dana pinjaman anda dengan nomor kontrak ' . $nomor_kontrak . ' sudah selesai, mohon untuk pembayaran angsuran sesuai jatuh tempo agar tidak mendapatkan denda keterlambatan, Terimakasih.

*Info Pembayaran Koperasi Bina Artha Prima dapat dilakukan dengan :*
1. Langsung ke Kantor 
2. Diambil Petugas Marketing
3. Via Transfer.

*Daftar Rekening Pembayaran :*
Nama Bank   : BRI
No Rekening : 593101043282536
Atas Nama    : Suwito

Sempatkan waktu anda untuk memberikan kritik dan saran kepada kami :

https://kspbinaartha.com/marketing/review_konsumen/' . $this->encrypt->encode($nomor_kontrak) . '

*Info Hub:* ' . $cek_option['cs_koperasi'] . '
*_PESAN OTOMATIS ROBIN_*';

        $footer = '*KSP Bina Artha Prima*';
        $data_inputan = array(
            'api_key'    => $sett_wa['api_key'],
            'sender'     => $sett_wa['no_hp'],
            'number'     => $no_hp,
            'media_type' => 'document',
            'caption'    => $caption,
            'footer'     => $footer,
            'url'        => $link_file
        );
        $curl = curl_init($sett_wa['endpoint_url']);
        curl_setopt($curl, CURLOPT_POST, true);
        curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($data_inputan));
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
        curl_exec($curl);
        curl_close($curl);
    }
    // Notif WA Pengajuan diterima
    private function _notifWADiterima($kontrak_id)
    {
        $kontrak_detail = $this->select_model->nvd_pengajuanPinjaman($kontrak_id);
        $cek_nomor = substr($kontrak_detail['nomor_anggota'], 0, 1);
        $tgl = date('d', strtotime($kontrak_detail['tgl_konfirmasi'])) . ' ' . $this->mycustom->bulanIndo(date('m', strtotime($kontrak_detail['tgl_konfirmasi']))) . ' ' .  date('Y', strtotime($kontrak_detail['tgl_konfirmasi']));
        if ($cek_nomor == 0) :
            $no_hp = '62' . substr($kontrak_detail['nomor_anggota'], 1, 20);
        else :
            $no_hp = $kontrak_detail['nomor_anggota'];
        endif;
        // echo '<pre>';
        // var_dump($no_hp, $kontrak_detail['nomor_anggota']);
        // die;
        $opt = $this->db->get_where('sistem_option')->row_array();
        $pesan = 'Yth. ' . $kontrak_detail['nm_anggota'] . '

Pengajuan pinjaman sebesar *Rp ' . $kontrak_detail['pokok_pinjaman'] . ',-* di Koperasi Bina Artha Prima Kudus sudah disetujui pada tanggal ' . $tgl . ' dengan Nomor Kontrak Pinjaman : _*' . $kontrak_id . '*_.
Silahkan menghubungi dan menemui marketing pengajuan untuk pencairan pinjaman dan penandatangan kontrak pinjaman.
 

*Info Hub:* ' . $opt['cs_koperasi'] . '
*_PESAN OTOMATIS ROBIN_*';

        $sett_wa = $this->db->get_where('sistem_wa', ['id' => 1])->row_array();
        $footer = '*KSP Bina Artha Prima*';
        $data_inputan = array(
            'api_key'    => $sett_wa['api_key'],
            'sender'     => $sett_wa['no_hp'],
            'number'     => $no_hp,
            'message'    => $pesan,
            'footer'     => $footer
        );
        $curl = curl_init($sett_wa['endpoint_url']);
        curl_setopt($curl, CURLOPT_POST, true);
        curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($data_inputan));
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
        curl_exec($curl);
        curl_close($curl);
    }
    // Notif WA Pengajuan ditolak
    private function _notifWADitolak($kontrak_id)
    {
        $kontrak_detail = $this->select_model->nvd_pengajuanPinjaman($kontrak_id);
        $cek_nomor = substr($kontrak_detail['nomor_anggota'], 0, 1);
        if ($cek_nomor == 0) :
            $no_hp = '62' . substr($kontrak_detail['nomor_anggota'], 1, 20);
        else :
            $no_hp = $kontrak_detail['nomor_anggota'];
        endif;
        // echo '<pre>';
        // var_dump($no_hp, $kontrak_detail['nomor_anggota']);
        // die;
        $tgl = date('d', strtotime($kontrak_detail['tgl_konfirmasi'])) . ' ' . $this->mycustom->bulanIndo(date('m', strtotime($kontrak_detail['tgl_konfirmasi']))) . ' ' .  date('Y', strtotime($kontrak_detail['tgl_konfirmasi']));
        $opt = $this->db->get_where('sistem_option')->row_array();
        $pesan = 'Yth. ' . $kontrak_detail['nm_anggota'] . '

Mohon Maaf, Pengajuan pinjaman sebesar *Rp ' . $kontrak_detail['pokok_pinjaman'] . ',-* di Koperasi Bina Artha Prima Kudus telah ditolak pada tanggal ' . $tgl . ' dengan alasan :  _*' . $kontrak_detail['ket_progress'] . '*_.


*Info Hub:* ' . $opt['cs_koperasi'] . '
*_PESAN OTOMATIS ROBIN_*';

        $sett_wa = $this->db->get_where('sistem_wa', ['id' => 1])->row_array();
        $footer = '*KSP Bina Artha Prima*';
        $data_inputan = array(
            'api_key'    => $sett_wa['api_key'],
            'sender'     => $sett_wa['no_hp'],
            'number'     => $no_hp,
            'message'    => $pesan,
            'footer'     => $footer
        );
        $curl = curl_init($sett_wa['endpoint_url']);
        curl_setopt($curl, CURLOPT_POST, true);
        curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($data_inputan));
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
        curl_exec($curl);
        curl_close($curl);
    }
}

/* End of file ControllerPengajuanPinjaman.php and path \application\controllers\kabag_marketing\operasional_bisnis\ControllerPengajuanPinjaman.php */