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

class ControllerAktifPinjaman 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 Isian Konten
        // Tampilkan Jenis Pinjaman
        $pinjaman_aktif        = $this->select_model->vd_PinjamanAktif();
        $data_jaminan          = $this->select_model->vd_jaminanPinjaman();
        // echo '<pre>';
        // var_dump($pinjaman_aktif);
        // die;
        $data = array(
            // Untuk memanggil halaman sesuai menu
            'folder'              => 'operasional/aktif',
            'page'                => 'index',
            'judul'               => 'Pinjaman Aktif || Bagian Kabag Marketing',
            'data_id_login'       => $data_id_login,
            'data_login'          => $data_login,
            'notif'               => $notif,
            // Isi dalam konten
            'pinjaman_aktif'      => $pinjaman_aktif,
            'data_jaminan'        => $data_jaminan
        );
        $this->load->view('kabag_marketing/index', $data);
    }
    // Detail Kontrak pinjaman
    public function kontrak($id)
    {
        $notif                 = $this->notifikasi->notif_kabag_marketing();
        // 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('p_koperasi_kontrak', ['id' => $kontrak_id])->row_array();
        $data_angsuran         = $this->select_model->vd_angsuran($kontrak_id);
        $sudah_bayar           = $this->select_model->vd_SudahBayarAngsuran($kontrak_id);
        $data_anggota          = $this->db->get_where('anggota', ['id' => $rincian_kontrak['anggota_id']])->row_array();
        // echo '<pre>';
        // var_dump($data_angsuran);
        // die;
        $data = array(
            // Untuk memanggil halaman sesuai menu
            'folder'              => 'operasional/kontrak',
            'page'                => 'index',
            'judul'               => 'Detail Kontrak Pinjaman || Bagian Kabag Marketing',
            'data_id_login'       => $data_id_login,
            'data_login'          => $data_login,
            'notif'               => $notif,
            // Isi dalam konten
            'rincian_kontrak'     => $rincian_kontrak,
            'data_angsuran'       => $data_angsuran,
            'sudah_bayar'         => $sudah_bayar,
            'data_anggota'        => $data_anggota
        );
        $this->load->view('kabag_marketing/index', $data);
    }
    public function bayar_lancar($id)
    {
        // Data Login
        $angsuran_id           = $this->encrypt->decode($id);
        $status_nota            = 'LANCAR';
        $data_angsuran         = $this->db->get_where('p_koperasi_angsuran', ['id' => $angsuran_id])->row_array();
        $data_kontrak          = $this->db->get_where('p_koperasi_kontrak', ['id' => $data_angsuran['kontrak_id']])->row_array();
        $data_aturan           = $this->db->get_where('p_koperasi_aturan', ['id' => $data_kontrak['aturan_id']])->row_array();
        $data_marketing        = $this->db->get_where('sistem_login', ['id' => $data_kontrak['login_id']])->row_array();
        $data_anggota          = $this->db->get_where('anggota', ['id' => $data_kontrak['anggota_id']])->row_array();
        $jml_bayar              = count($this->select_model->get_vdAngsuranBayar($data_kontrak));
        // Merubah data angsuran
        // echo '<pre>'; 
        // var_dump($angsuran_id, $data_angsuran);
        // die;
        $cek_option = $this->db->get_where('sistem_option')->row_array();
        $this->update_model->merubahDataAngsuran($angsuran_id);
        // Menambahkan Nota
        $nomor_invoice               = $data_aturan['produk_id'] . $data_kontrak['id'] . date('ymdhis');
        $this->insert_model->md_NotaAngsuran($angsuran_id, $nomor_invoice, $data_aturan, $data_kontrak, $status_nota);
        $this->_cetakTandaTerima($nomor_invoice, $data_kontrak, $data_angsuran, $data_aturan, $data_marketing, $cek_option, $data_anggota);
        if ($jml_bayar == $data_kontrak['tempo_pinjaman']) :
            $this->update_model->pinjamanSelesai($data_kontrak);
            $this->_notifLunas($data_kontrak, $cek_option, $data_anggota);
        endif;
        $this->session->set_flashdata('pesan_berhasil', '<div class="alert alert-success" id="pesan_berhasil" role="alert">Berhasil Bayar Angsuran!</div>');
        redirect('kabag_marketing/kegiatan/kontrak_pinjaman/' . $this->encrypt->encode($data_kontrak['id']));
    }
    // Macet
    public function bayar_macet($id)
    {
        // Data Login
        $angsuran_id           = $this->encrypt->decode($id);
        $status_nota           = 'TUNGGAKAN';
        $data_angsuran         = $this->db->get_where('p_koperasi_angsuran', ['id' => $angsuran_id])->row_array();
        $data_kontrak          = $this->db->get_where('p_koperasi_kontrak', ['id' => $data_angsuran['kontrak_id']])->row_array();
        $data_aturan           = $this->db->get_where('p_koperasi_aturan', ['id' => $data_kontrak['aturan_id']])->row_array();
        $data_marketing        = $this->db->get_where('sistem_login', ['id' => $data_kontrak['login_id']])->row_array();
        $data_anggota          = $this->db->get_where('anggota', ['id' => $data_kontrak['anggota_id']])->row_array();
        $jml_bayar             = count($this->select_model->get_vdAngsuranBayar($data_kontrak));
        // Merubah data angsuran
        // echo '<pre>'; 
        // var_dump($angsuran_id, $data_angsuran);
        // die;
        $cek_option = $this->db->get_where('sistem_option')->row_array();
        $this->update_model->merubahDataAngsuran($angsuran_id);
        // Menambahkan Nota
        $nomor_invoice               = $data_aturan['produk_id'] . $data_kontrak['id'] . date('ymdhis');
        $this->insert_model->md_NotaAngsuran($angsuran_id, $nomor_invoice, $data_aturan, $data_kontrak, $status_nota);
        $this->_cetakTandaTerima($nomor_invoice, $data_kontrak, $data_angsuran, $data_aturan, $data_marketing, $cek_option, $data_anggota);
        if ($jml_bayar == $data_kontrak['tempo_pinjaman']) :
            $this->update_model->pinjamanSelesai($data_kontrak);
            $this->_notifLunas($data_kontrak, $cek_option, $data_anggota);
        endif;
        $this->session->set_flashdata('pesan_berhasil', '<div class="alert alert-success" id="pesan_berhasil" role="alert">Berhasil Bayar Angsuran!</div>');
        redirect('kabag_marketing/kegiatan/kontrak_pinjaman/' . $this->encrypt->encode($data_kontrak['id']));
    }
    // Kumpulan Provate Function
    // Konversi Nota Tanda Terima
    private function _cetakTandaTerima($nomor_invoice, $data_kontrak, $data_angsuran, $data_aturan, $data_marketing, $cek_option, $data_anggota)
    {
        $kd_invoice            = $nomor_invoice;
        $data_invoice          = $this->select_model->getDataInvoice($kd_invoice); // DONE
        $data_rinci            = $this->select_model->getDataInvoiceRinci($kd_invoice);
        $data = array(
            // Data isi konten
            'data_invoice'        => $data_invoice,
            'data_rinci'          => $data_rinci,
            'data_marketing'      => $data_marketing
        );
        // $this->load->view('nota/nota_bayar_arisan', $data_halaman);
        // filename dari pdf ketika didownload
        $file_pdf = 'invoice_' . $kd_invoice;
        // 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_pinjaman_koperasi_petugas', $data, true);
        $tahun = date('Y');
        $bulan = date('m');
        // run dompdf
        if ($data_aturan['produk_id'] == 121) :
            $lokasi_file = 'assets/invoice/koperasi_mingguan/' . $tahun . '/' . $bulan . '/';
        elseif ($data_aturan['produk_id'] == 122) :
            $lokasi_file = 'assets/invoice/koperasi_dua_mingguan/' . $tahun . '/' . $bulan . '/';
        elseif ($data_aturan['produk_id'] == 123) :
            $lokasi_file = 'assets/invoice/koperasi_bulanan/' . $tahun . '/' . $bulan . '/';
        elseif ($data_aturan['produk_id'] == 124) :
            $lokasi_file = 'assets/invoice/koperasi_musiman/' . $tahun . '/' . $bulan . '/';
        elseif ($data_aturan['produk_id'] == 125) :
            $lokasi_file = 'assets/invoice/anggota_bulanan/' . $tahun . '/' . $bulan . '/';
        elseif ($data_aturan['produk_id'] == 126) :
            $lokasi_file = 'assets/invoice/karyawan_bulanan/' . $tahun . '/' . $bulan . '/';
        endif;
        $this->pdfgenerator->generate($html, $file_pdf, $paper, $lokasi_file, $orientation);
        $data_update22     = array(
            'invoice_pdf' => $file_pdf . '.pdf'
        );
        $this->db->where('id', $kd_invoice);
        $this->db->update('nota', $data_update22);
        $data_update23     = array(
            'invoice_pdf' => $file_pdf . '.pdf'
        );
        $this->db->where('id', $data_angsuran['id']);
        $this->db->update('p_koperasi_angsuran', $data_update23);
        $nama_file = $file_pdf . '.pdf';
        $this->_notifWABuktiSetor($nama_file, $data_kontrak, $data_angsuran, $lokasi_file, $data_invoice, $cek_option, $data_anggota);
    }
    // Notifikasi Lunas
    // Notifikasi WA Bukti Setor Nomor Saya
    private function _notifLunas($data_kontrak, $cek_option, $data_anggota)
    {
        $cek_nomor = substr($data_anggota['no_hp'], 0, 1);
        if ($cek_nomor == 0) :
            $no_hp = '62' . substr($data_anggota['no_hp'], 1, 20);
        else :
            $no_hp = $data_anggota['no_hp'];
        endif;
        $data_invoice = $this->db->get_where('anggota', ['id' => $data_kontrak['anggota_id']])->row_array();
        $pesan = 'Yth. *_pelanggan setia Koperasi Bina Artha Prima_*

*Terimakasih!*
Pinjaman dengan nomor kontrak *' . $data_kontrak['id'] . '* a/n *_' . $data_invoice['nm_anggota'] . '_* di Koperasi Bina Artha Prima dinyatakan *LUNAS* pada ' . date('d-m-Y') . ' Jam ' . date('H:i:s') . '.
Silahkan jika anda ingin mengajukan kembali pinjaman pada kami, bisa menghubungi marketing kami.

Sempatkan waktu anda untuk memberikan kritik dan saran kepada kami :

https://kspbinaartha.com/marketing/review_konsumen/' . $this->encrypt->encode($data_kontrak['id']) . '

*Info Hub :* ' . $cek_option['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);
    }
    // Notifikasi WA Bukti Setor Nomor Saya
    private function _notifWABuktiSetor($nama_file, $data_kontrak, $data_angsuran, $lokasi_file, $data_invoice, $cek_option, $data_anggota)
    {
        // WA Baru
        // setting WA
        $sett_wa = $this->db->get_where('sistem_wa', ['id' => 2])->row_array();
        $cek_nomor = substr($data_anggota['no_hp'], 0, 1);
        if ($cek_nomor == 0) :
            $no_hp = '62' . substr($data_anggota['no_hp'], 1, 20);
        else :
            $no_hp = $data_anggota['no_hp'];
        endif;
        $link_file = base_url($lokasi_file . $nama_file);

        // Contoh URL http://localhost/binaartha/assets/slip_gaji/2025016.pdf
        $caption = 'Yth. *_pelanggan setia Koperasi Bina Artha Prima_*

*Terimakasih!*
Pembayaran Tagihan ke- ' . $data_angsuran['angs_ke'] . '/' . $data_kontrak['tempo_pinjaman'] . ' a/n *_' . $data_invoice['nm_anggota'] . '_* sebesar Rp ' . $data_invoice['ttl_bayar'] . ',- untuk nomor kontrak *' . $data_kontrak['id'] . '*, Melalui Marketing ' . $data_invoice['nm_panggilan'] . ' sudah kami terima pada ' . date('d-m-Y') . ' Jam ' . date('H:i:s') . '.

Sempatkan waktu anda untuk memberikan kritik dan saran kepada kami :

https://kspbinaartha.com/marketing/review_konsumen/' . $this->encrypt->encode($data_kontrak['id']) . '

*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);
    }
}

/* End of file ControllerAktifPinjaman.php and path \application\controllers\kabag_marketing\operasional\ControllerAktifPinjaman.php */