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

class ControllerTagihanAktifitas extends CI_Controller
{

    public function __construct()
    {
        parent::__construct();
        check_not_login();
        if ($this->session->userdata('level') != 4) {
            redirect();
        }
        $this->set_timezone();
        $this->load->library('encrypt');
        $this->load->library('form_validation');
        $this->load->library('Mycustom');
        $this->load->library('pdfgenerator');
        $this->load->model('notifikasi_arisan');
        $this->load->model('bagian_arisan/insert_model');
        $this->load->model('bagian_arisan/select_model');
        $this->load->model('bagian_arisan/update_model');
    }
    public function set_timezone()
    {
        date_default_timezone_set("Asia/Jakarta");
    }
    // Menu bagian tagihan kelompok belum proses
    public function kelompok($id)
    {
        // Notifikasi
        $jml_pengajuan        = count($this->notifikasi_arisan->Notifikasi_pengajuan());
        // End_notifikasi 
        // Cek ID Arisan atau Kode Jadwal
        $cek_id                       = $this->encrypt->decode($id);
        $regist_arisan                = substr($cek_id, 0, 7);
        $produk_id                    = substr($cek_id, 2, 2);
        $jadwal_id                    = substr($cek_id, 7, 10);
        $jml_id                       = strlen($cek_id);
        if ($jml_id < 8) :
            $melihat_jadwal = $this->db->get_where('p_arisan_jadwal', ['regist_arisan' => $cek_id, 'status_undian' => 'BELUM'])->row_array();
            redirect('arisan/aktifitas/tagihan/kelompok/' . $this->encrypt->encode($regist_arisan . $melihat_jadwal['id']));
        endif;
        $undian = $this->db->get_where('p_arisan_jadwal', ['id' => $jadwal_id])->row_array();
        if ($undian['status_undian'] == 'PROSES') :
            if ($produk_id == 21) :
                redirect('arisan/aktifitas/undian/proses/' . $this->encrypt->encode($regist_arisan));
            else :
                redirect('arisan/aktifitas/lelang/proses/' . $this->encrypt->encode($regist_arisan));
            endif;
        endif;
        // Kode Jadwal Arisan
        $identitas_jadwal         = $this->db->get_where('p_arisan_jadwal', ['id' => $jadwal_id])->row_array();
        $kode_arisan              = $identitas_jadwal['regist_arisan'];
        // Data Login Identitas Karyawan
        $data_id_login            = $this->session->userdata('isloggedin');
        $data_login               = $this->userlogin->user_login();
        // Data Konten Isi
        $data_arisan              = $this->db->get_where('p_arisan', ['id' => $kode_arisan])->row_array(); // Menampilkan data arisan sesuai kode arisan
        $data_jadwal              = $this->select_model->getDataJadwalArisanTerbesar($kode_arisan); // Menampilkan data jadwal arisan sesuai kode arisan dan kode jadwal terbesar
        if ($produk_id == 21) :
            $data_anggota_belum_bayar = $this->select_model->getDataAnggotaTagihan($jadwal_id, $kode_arisan);  // Menampilkan anggota arisan heboh yang belum bayar
            $data_anggota_bayar       = $this->select_model->getDataAnggotaTagihanSelesai($jadwal_id, $kode_arisan); // Menampilkan anggota arisan heboh yang sudah bayar
            $anggota_aktif            = $this->select_model->getDataAnggotaArisanHebohAktif($regist_arisan); // Menampilkan data anggota aktif
        else :
            $anggota_aktif            = $this->select_model->getDataAnggotaArisanMotorAktifTerus($kode_arisan); // Menampilkan data anggota aktif
            $data_anggota_belum_bayar = $this->select_model->getDataAnggotaTagihanMotor($jadwal_id, $kode_arisan);  // Menampilkan anggota arisan heboh yang belum bayar
            $data_anggota_bayar       = $this->select_model->getDataAnggotaTagihanMotorSelesai($jadwal_id, $kode_arisan); // Menampilkan anggota arisan heboh yang sudah bayar
        endif;
        // echo '<pre>';
        // var_dump($data_anggota_bayar);
        // die;
        $ttl_belum_bayar          = count($data_anggota_belum_bayar); // Menampilkan total anggota yang belum bayar
        $jml_aktif                = count($anggota_aktif);  // Menampilkan total anggota aktif
        $syarat_mulai_undian      = $this->db->get_where('sistem_option')->row_array();
        $jml_bayar                = count($data_anggota_bayar);
        if (($jml_aktif / $syarat_mulai_undian['min_mulai_undian']) > $jml_bayar) :
            $undian_mulai = 0;
        else :
            $undian_mulai = 1;
        endif;
        $data = array(
            // Untuk memanggil halaman sesuai menu
            'folder'              => 'aktifitas/tagihan',
            'page'                => 'index',
            'judul'               => 'Detail Tagihan Arisan || Bagian Arisan',
            // Memanggil data identitas login
            'data_id_login'       => $data_id_login,
            'data_login'          => $data_login,
            // Isi data konten
            'data_arisan'         => $data_arisan,
            'jadwal_arisan'        => $data_jadwal,
            'anggota_belum_bayar' => $data_anggota_belum_bayar,
            'blm_bayar'           => $ttl_belum_bayar,
            'jml_aktif'           => $jml_aktif,
            'anggota_bayar'       => $data_anggota_bayar,
            'produk_id'           => $produk_id,
            'jml_pengajuan'       => $jml_pengajuan,
            'undian_mulai'        => $undian_mulai
        );
        $this->load->view('arisan/index', $data);
    }
    // Bayar Sesuai Undian Arisan
    // FIX
    public function bayar_undian($id)
    {
        $regist_undian                       = $this->encrypt->decode($id);
        $regist_arisan                       = substr($regist_undian, 0, 7);
        $produk_id                           = substr($regist_arisan, 2, 2);
        $data_arisan                         = $this->db->get_where('p_arisan', ['id' => $regist_arisan])->row_array();
        $data_jadwal                         = $this->db->get_where('p_arisan_jadwal', ['regist_arisan' => $regist_arisan, 'status_undian' => 'BELUM'])->row_array();
        $jadwal_id                           = $data_jadwal['id'];
        $cek_anggota                         = $this->db->get_where('p_arisan_anggota', ['regist_undian' => $regist_undian])->row_array();
        // Menampilkan data terakhir invoice
        if ($produk_id == 21) :
            $data_invoice           = $this->select_model->getDataTagihanUrutHeboh();
        else :
            $data_invoice           = $this->select_model->getDataTagihanUrutMotor();
        endif;
        $cek_nomor_urut         = substr($data_invoice['id'], 8, 5);
        $no_invoice_selanjutnya = $cek_nomor_urut + 1;
        $total_huruf            = strlen($no_invoice_selanjutnya);
        // Membuat kode invoice
        if ($total_huruf == 1) :
            $nomor_invoice = date('ymd') . $produk_id . '000' . $no_invoice_selanjutnya;
        elseif ($total_huruf == 2) :
            $nomor_invoice = date('ymd') . $produk_id . '00' . $no_invoice_selanjutnya;
        elseif ($total_huruf == 3) :
            $nomor_invoice = date('ymd') . $produk_id . '0' . $no_invoice_selanjutnya;
        else :
            $nomor_invoice = date('ymd') . $produk_id . $no_invoice_selanjutnya;
        endif;
        // Data untuk tabel invoice
        $data_voice = array(
            'id'              => $nomor_invoice,
            'produk_id'       => $produk_id,
            'anggota_id'      => $cek_anggota['anggota_id'],
            'tgl_pembayaran'  => date('Y-m-d'),
            'qty_pembayaran'  => 1,
            'ttl_bayar'       => $data_arisan['tagihan_iuran'] * 1,
            'status_kas'      => 'MASUK',
            'status_nota'     => 'PROSES',
            'ket_nota'        => 'Iuran Arisan ' . $regist_arisan . ' Nomor Undian ' . $regist_undian,
            'petugas'         => $this->session->userdata('isloggedin')
        );
        $this->db->insert('nota', $data_voice);
        $data_rinci = array(
            'nota_id'       => $nomor_invoice,
            'jadwal_id'     => $jadwal_id,
            'regist_arisan' => $regist_arisan,
            'regist_undian' => $regist_undian,
            'bayar'         => $data_arisan['tagihan_iuran'],
            'status_bayar'  => 'LANCAR',
        );
        $this->db->insert('p_arisan_nota', $data_rinci);
        $this->_cetakTandaTerima($nomor_invoice, $produk_id);
        $this->session->set_flashdata('pesan_berhasil', '<div class="alert alert-success" id="pesan_berhasil" role="alert">Berhasil Bayar Tagihan Arisan!</div>');
        redirect('arisan/aktifitas/tagihan/kelompok/' . $this->encrypt->encode($regist_arisan . $jadwal_id));
    }
    // Bayar Sesuai Undian Arisan Namun Nunggak
    public function bayar_susulan($id)
    {
        $inputan_id                       = $this->encrypt->decode($id);
        $produk_id                        = substr($inputan_id, 2, 2);
        $regist_arisan                    = substr($inputan_id, 0, 7);
        $jadwal_id                        = substr($inputan_id, 10, 20);
        $regist_undian                    = substr($inputan_id, 0, 10);
        $data_anggota                     = $this->db->get_where('p_arisan_anggota', ['regist_undian' => $regist_undian])->row_array();
        $data_arisan                      = $this->db->get_where('p_arisan', ['id' => $regist_arisan])->row_array();
        // Menampilkan data terakhir invoice
        if ($produk_id == 21) :
            $data_invoice           = $this->select_model->getDataTagihanUrutHeboh();
        else :
            $data_invoice           = $this->select_model->getDataTagihanUrutMotor();
        endif;
        // Membuat kode invoice
        $cek_nomor_urut         = substr($data_invoice['id'], 8, 5);
        $no_invoice_selanjutnya = $cek_nomor_urut + 1;
        $total_huruf            = strlen($no_invoice_selanjutnya);
        // Membuat kode invoice
        if ($total_huruf == 1) :
            $nomor_invoice = date('ymd') . $produk_id . '000' . $no_invoice_selanjutnya;
        elseif ($total_huruf == 2) :
            $nomor_invoice = date('ymd') . $produk_id . '00' . $no_invoice_selanjutnya;
        elseif ($total_huruf == 3) :
            $nomor_invoice = date('ymd') . $produk_id . '0' . $no_invoice_selanjutnya;
        else :
            $nomor_invoice = date('ymd') . $produk_id . $no_invoice_selanjutnya;
        endif;
        // Data untuk tabel invoice
        $data_voice = array(
            'id'              => $nomor_invoice,
            'produk_id'       => $produk_id,
            'anggota_id'      => $data_anggota['anggota_id'],
            'tgl_pembayaran'  => date('Y-m-d'),
            'qty_pembayaran'  => 1,
            'ttl_bayar'       => $data_arisan['tagihan_iuran'] * 1,
            'status_kas'      => 'MASUK',
            'status_nota'     => 'PROSES_TUNGGAKAN',
            'ket_nota'        => 'Iuran Arisan ' . $regist_arisan . ' Nomor Undian ' . $regist_undian,
            'petugas'         => $this->session->userdata('isloggedin')
        );
        $this->db->insert('nota', $data_voice);
        $data_rinci = array(
            'nota_id'       => $nomor_invoice,
            'jadwal_id'     => $jadwal_id,
            'regist_arisan' => $regist_arisan,
            'regist_undian' => $regist_undian,
            'bayar'         => $data_arisan['tagihan_iuran'],
            'status_bayar'  => 'TUNGGAKAN',
        );
        $this->db->insert('p_arisan_nota', $data_rinci);
        $data_tunggakan = array(
            'status_tunggakan' => 'LUNAS'
        );
        $this->db->where('regist_undian', $regist_undian);
        $this->db->where('jadwal_id', $jadwal_id);
        $this->db->update('lap_arisan_nunggak', $data_tunggakan);
        $this->_cetakTandaTerima($nomor_invoice, $produk_id);
        $this->session->set_flashdata('pesan_berhasil', '<div class="alert alert-success" id="pesan_berhasil" role="alert">Berhasil Bayar Tagihan Arisan Tunggakan!</div>');
        redirect('arisan/laporan/laporan_heboh/lap_detail/' . $this->encrypt->encode($regist_arisan . $jadwal_id));
    }
    // Bayar Semua sesuai ID Anggota dalam satu arisan 
    // FIX
    public function bayar()
    {
        // FIX
        if (isset($_POST['simpanBayarAnggota'])) {
            // Data Inputan
            $regist_arisan  = htmlspecialchars($this->input->post('regist_arisan'));
            $jadwal_id      = htmlspecialchars($this->input->post('jadwal_id'));
            $anggota_id     = htmlspecialchars($this->input->post('id_anggota')); // Kode Anggota pada tabel anggota
            $qty_bayar      = htmlspecialchars($this->input->post('ttl_tagihan')); // Total tagihan sesuai mengikuti arisan berapa banyak
            $iuran_bulanan  = htmlspecialchars($this->input->post('iuran_bulanan')); // Jumlah Iuran bulanan
            $bayar_custom   = htmlspecialchars($this->input->post('ttl_bayar')); // Pembayaran yang di custom
            $produk_id      = substr($regist_arisan, 2, 2);
            // Menampilkan data terakhir invoice
            if ($produk_id == 21) :
                $data_invoice           = $this->select_model->getDataTagihanUrutHeboh();
            else :
                $data_invoice           = $this->select_model->getDataTagihanUrutMotor();
            endif;
            $cek_nomor_urut         = substr($data_invoice['id'], 8, 7);
            $no_invoice_selanjutnya = $cek_nomor_urut + 1;
            $total_huruf            = strlen($no_invoice_selanjutnya);
            // Menampilkan identitas Arisan
            $data_arisan            = $this->db->get_where('p_arisan', ['id' => $regist_arisan])->row_array();
            // Cek Apakah anggota sudah bayar atau belum
            $cek_tagihan            = $this->select_model->getDataTagihanAnggota($jadwal_id, $regist_arisan, $anggota_id);
            if ($bayar_custom > 0) :
                // Membuat kode invoice
                if ($total_huruf == 1) :
                    $nomor_invoice = date('ymd') . $produk_id . '000' . $no_invoice_selanjutnya;
                elseif ($total_huruf == 2) :
                    $nomor_invoice = date('ymd') . $produk_id . '00' . $no_invoice_selanjutnya;
                elseif ($total_huruf == 3) :
                    $nomor_invoice = date('ymd') . $produk_id . '0' . $no_invoice_selanjutnya;
                else :
                    $nomor_invoice = date('ymd') . $produk_id . $no_invoice_selanjutnya;
                endif;
                // Data untuk tabel invoice
                $data_voice = array(
                    'id'              => $nomor_invoice,
                    'produk_id'       => $produk_id,
                    'anggota_id'      => $anggota_id,
                    'tgl_pembayaran'  => date('Y-m-d'),
                    'qty_pembayaran'  => $qty_bayar,
                    'ttl_bayar'       => $bayar_custom,
                    'status_kas'      => 'MASUK',
                    'status_nota'     => 'PROSES',
                    'ket_nota'        => 'Iuran Arisan ' . $regist_arisan . ' Bayar Sekelompok',
                    'petugas'         => $this->session->userdata('isloggedin')
                );
                $this->db->insert('nota', $data_voice);
                // Data untuk inputan tabel rincian invoice
                foreach ($cek_tagihan as $Cek_anggota) :
                    $data_detail = array(
                        'nota_id'       => $nomor_invoice,
                        'jadwal_id'     => $jadwal_id,
                        'regist_arisan' => $regist_arisan,
                        'regist_undian' => $Cek_anggota->regist_undian,
                        'bayar'         => $iuran_bulanan
                    );
                    $this->db->insert('p_arisan_nota', $data_detail);
                endforeach;
                // Selesai Buat invoice
                $this->_cetakTandaTerima($nomor_invoice, $produk_id);
                $this->session->set_flashdata('pesan_berhasil', '<div class="alert alert-success" id="pesan_berhasil" role="alert">Berhasil Bayar Tagihan Arisan!</div>');
                redirect('arisan/aktifitas/tagihan/kelompok/' . $this->encrypt->encode($regist_arisan . $jadwal_id));
            else :
                $this->session->set_flashdata('pesan_gagal', '<div class="alert alert-danger" id="pesan_gagal" role="alert">Anggota Sudah Bayar!</div>');
                redirect('arisan/aktifitas/tagihan/kelompok/' . $this->encrypt->encode($regist_arisan . $jadwal_id));
            endif;
        }
        // FIX
        if (isset($_POST['simpanBayarKeluarga'])) {
            // Data Inputan
            // Vakidasi Inputan NIK
            $anggota_id        = $this->v_inputNik();
            $jadwal_id         = htmlspecialchars($this->input->post('jadwal_id'));
            $regist_arisan     = htmlspecialchars($this->input->post('regist_arisan'));
            $produk_id         = substr($regist_arisan, 2, 2);
            $data_arisan       = $this->db->get_where('p_arisan', ['id' => $regist_arisan])->row_array();
            $data_kepala       = $this->db->get_where('p_arisan_anggota', ['anggota_id' => $anggota_id, 'regist_arisan' => $regist_arisan])->row_array();
            $cek_nota          = $this->select_model->v_dataKepalaKeluargaBayar($anggota_id, $jadwal_id, $regist_arisan);
            // Menampilkan data terakhir invoice
            if ($produk_id == 21) :
                $data_invoice           = $this->select_model->getDataTagihanUrutHeboh();
            else :
                $data_invoice           = $this->select_model->getDataTagihanUrutMotor();
            endif;
            $cek_nomor_urut             = substr($data_invoice['id'], 8, 5);
            $no_invoice_selanjutnya = $cek_nomor_urut + 1;
            $total_huruf            = strlen($no_invoice_selanjutnya);
            // Membuat kode invoice
            if ($total_huruf == 1) :
                $nomor_invoice = date('ymd') . $produk_id . '000' . $no_invoice_selanjutnya;
            elseif ($total_huruf == 2) :
                $nomor_invoice = date('ymd') . $produk_id . '00' . $no_invoice_selanjutnya;
            elseif ($total_huruf == 3) :
                $nomor_invoice = date('ymd') . $produk_id . '0' . $no_invoice_selanjutnya;
            else :
                $nomor_invoice = date('ymd') . $produk_id . $no_invoice_selanjutnya;
            endif;
            // Data untuk tabel invoice
            $data_anggotabayar = $this->select_model->v_dataAnggotaKeluargaBayar($anggota_id, $jadwal_id, $regist_arisan);
            $jml_data          = count($data_anggotabayar);
            $data_voice = array(
                'id'              => $nomor_invoice,
                'produk_id'       => $produk_id,
                'anggota_id'      => $data_kepala['anggota_id'],
                'tgl_pembayaran'  => date('Y-m-d'),
                'qty_pembayaran'  => $jml_data,
                'ttl_bayar'       => $data_arisan['tagihan_iuran'] * $jml_data,
                'status_kas'      => 'MASUK',
                'status_nota'     => 'PROSES',
                'ket_nota'        => 'Iuran Arisan ' . $regist_arisan . ' Bayar Sekeluarga',
                'petugas'         => $this->session->userdata('isloggedin')
            );
            $this->db->insert('nota', $data_voice);
            if ($cek_nota == null) :
                if ($data_kepala['status'] == 'AKTIF') :
                    $data_rinci = array(
                        'nota_id'       => $nomor_invoice,
                        'jadwal_id'     => $jadwal_id,
                        'regist_arisan' => $regist_arisan,
                        'regist_undian' => $data_kepala['regist_undian'],
                        'bayar'         => $data_arisan['tagihan_iuran'],
                        'status_bayar'  => 'LANCAR',
                    );
                    $this->db->insert('p_arisan_nota', $data_rinci);
                endif;
                $data_ubah = array(
                    'qty_pembayaran' => $jml_data + 1
                );
                $this->db->where('id', $nomor_invoice);
                $this->db->update('nota', $data_ubah);
            endif;
            foreach ($data_anggotabayar as $Data_anggotabayar) :
                $data_rinci = array(
                    'nota_id'       => $nomor_invoice,
                    'jadwal_id'     => $jadwal_id,
                    'regist_arisan' => $regist_arisan,
                    'regist_undian' => $Data_anggotabayar->regist_undian,
                    'bayar'         => $data_arisan['tagihan_iuran'],
                    'status_bayar'  => 'LANCAR',
                );
                $this->db->insert('p_arisan_nota', $data_rinci);
            endforeach;
            $cek_nota_kosong = $this->db->get_where('p_arisan_nota', ['nota_id' => $nomor_invoice])->row_array();
            if ($cek_nota_kosong > 0) :
                $this->_cetakTandaTerima($nomor_invoice, $produk_id);
                $this->session->set_flashdata('pesan_berhasil', '<div class="alert alert-success" id="pesan_berhasil" role="alert">Berhasil Bayar Tagihan Arisan!</div>');
                redirect('arisan/aktifitas/tagihan/kelompok/' . $this->encrypt->encode($regist_arisan . $jadwal_id));
            else :
                $this->db->where('id', $nomor_invoice);
                $this->db->delete('nota');
                $this->session->set_flashdata('pesan_gagal', '<div class="alert alert-danger" id="pesan_gagal" role="alert">Keluarga Sudah Bayar Semua!</div>');
                redirect('arisan/aktifitas/tagihan/kelompok/' . $this->encrypt->encode($regist_arisan . $jadwal_id));
            endif;
        }
    }
    // Pembayaran tunggakan yang tercatat pada beranda
    function tunggakan_beranda($id)
    {
        // Data Inputan
        $no_undian   = substr($this->encrypt->decode($id), 0, 10);
        $kategori_id = substr($this->encrypt->decode($id), 2, 2);
        $jadwal_id   = substr($this->encrypt->decode($id), 10, 20);
        $id_arisan   = substr($this->encrypt->decode($id), 0, 7);
        // var_dump($id_arisan, $kategori_id, $jadwal_id, $id_anggota);
        // die;
        // Menampilkan data anggota
        $cek_data = $this->db->get_where('tbl_arisan_anggota', ['no_regist' => $no_undian])->row_array();
        $id_anggota = $cek_data['id_anggota'];
        $cek_anggota = $this->select_model->setDataAnggota($id_anggota, $id_arisan);
        // Menampilkan data terakhir invoice
        if ($kategori_id == 21) :
            $data_invoice = $this->select_model->getDataTagihanUrutHeboh();
        else :
            $data_invoice = $this->select_model->getDataTagihanUrutMotor();
        endif;
        $cek_nomor_urut = substr($data_invoice['id'], 8, 3);
        $no_invoice_selanjutnya = $cek_nomor_urut + 1;
        $total_huruf = strlen($no_invoice_selanjutnya);
        // Menampilkan identitas Arisan
        $data_arisan = $this->db->get_where('tbl_arisan', ['id' => $id_arisan])->row_array();
        // Cek Apakah anggota sudah bayar atau belum
        $cek_tagihan = $this->select_model->getDataTagihanAnggota($jadwal_id, $id_arisan, $id_anggota);
        // var_dump($cek_tagihan);
        // die;
        if ($cek_tagihan > 0) :
            $this->session->set_flashdata('pesan_gagal', '<div class="alert alert-danger" id="pesan_gagal" role="alert">Anggota Sudah Bayar!</div>');
            redirect('arisan');
        else :
            // Membuat kode invoice
            if ($total_huruf == 1) :
                $nomor_invoice = date('ymd') . $kategori_id . '00' . $no_invoice_selanjutnya;
            elseif ($total_huruf == 2) :
                $nomor_invoice = date('ymd') . $kategori_id . '0' . $no_invoice_selanjutnya;
            else :
                $nomor_invoice = date('ymd') . $kategori_id . $no_invoice_selanjutnya;
            endif;
            // Data untuk tabel invoice
            $data_voice = array(
                'id' => $nomor_invoice,
                'anggota_id' => $id_anggota,
                'tgl_bayar' => date('Y-m-d'),
                'qty' => 1,
                'ttl_bayar' => $data_arisan['tagihan_iuran'],
                'status' => 'VERIFIKASI',
                'ket_nota'        => 'Iuran Arisan ' . $id_arisan . ' Nomor Undian ' . $no_undian,
                'login_id' => $this->session->userdata('isloggedin')
            );
            $this->db->insert('tbl_tagihan_arisan', $data_voice);
            // Data untuk inputan tabel rincian invoice
            foreach ($cek_anggota as $Cek_anggota) :
                $data_detail = array(
                    'tagihan_id' => $nomor_invoice,
                    'jadwal_id' => $jadwal_id,
                    'regist_arisan' => $id_arisan,
                    'regist_undian' => $Cek_anggota->no_regist,
                    'bayar' => $data_arisan['tagihan_iuran']
                );
                $this->db->insert('tbl_tagihan_arisan_detail', $data_detail);
            endforeach;
            $data_ubah = array(
                'status' => 'VERIFIKASI'
            );
            $this->db->where('id', $nomor_invoice);
            $this->db->update('tbl_tagihan_arisan', $data_ubah);
            // Selesai Buat invoice
            $this->db->where('jadwal_id', $jadwal_id);
            $this->db->where('regist_undian', $no_undian);
            $this->db->delete('tbl_tagihan_arisan_nunggak');
            $this->_cetakTandaTerima($nomor_invoice, $kategori_id);
            $this->session->set_flashdata('pesan_berhasil', '<div class="alert alert-success" id="pesan_berhasil" role="alert">Berhasil Bayar Tagihan Arisan!</div>');
            redirect('arisan');
        endif;
    }
    // Konversi Nota Tanda Terima
    private function _cetakTandaTerima($nomor_invoice, $produk_id)
    {
        $kd_invoice            = $nomor_invoice;
        $data_invoice          = $this->select_model->getDataInvoice($kd_invoice); // DONE
        $data_rinci            = $this->select_model->getDataInvoiceRinci($kd_invoice);
        // Data Login
        $data_login            = $this->userlogin->user_login();
        $data_id_login         = $this->session->userdata('isloggedin');
        // Nama Marketing
        $data_marketing        = $this->select_model->getDataMarketing($kd_invoice);
        $data = array(
            // Untuk memanggil halaman sesuai menu
            'title_pdf'           => 'Invoice Pembayaran Arisan Heboh',
            'folder'              => 'arisan/heboh',
            'page'                => 'index',
            'judul'               => 'Kelola Bayar Arisan Heboh || Bagian Kasir',
            'data_id_login'       => $data_id_login,
            'data_login'          => $data_login,
            // 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_bayar_arisan_petugas', $data, true);
        $tahun = date('Y');
        $bulan = date('m');
        // run dompdf
        if ($produk_id == 21) :
            $lokasi_file = 'assets/invoice/arisan_heboh/' . $tahun . '/' . $bulan . '/';
        else :
            $lokasi_file = 'assets/invoice/arisan_motor/' . $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);
        $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);
    }
    // Private Function
    private function v_inputNik()
    {
        // 2421043001
        $nik2                   = htmlspecialchars($this->input->post('nik2'));
        $jadwal_id              = htmlspecialchars($this->input->post('jadwal_id'));
        $regist_arisan          = htmlspecialchars($this->input->post('regist_arisan'));
        if (strlen($nik2) <= 3) :
            $nomor_urut    = $nik2;
            $data_cek = $this->db->get_where('p_arisan_anggota', ['no_urut' => $nomor_urut, 'regist_arisan' => $regist_arisan])->row_array();
            $anggota_id = $data_cek['anggota_id'];
        elseif (strlen($nik2) >= 4 && strlen($nik2) <= 10) :
            $regist_undian = $nik2;
            $data_cek = $this->db->get_where('p_arisan_anggota', ['regist_undian' => $regist_undian, 'regist_arisan' => $regist_arisan])->row_array();
            $anggota_id = $data_cek['anggota_id'];
        elseif (strlen($nik2) >= 10 && strlen($nik2) < 15) :
            $no_hp = $nik2;
            $data_cek = $this->db->get_where('anggota', ['no_hp' => $no_hp])->row_array();
            $anggota_id = $data_cek['id'];
        elseif (strlen($nik2) == 16) :
            $nik = $nik2;
            $data_cek = $this->db->get_where('anggota', ['nik' => $nik])->row_array();
            $anggota_id = $data_cek['id'];
        else :
            $this->session->set_flashdata('pesan_gagal', '<div class="alert alert-danger" id="pesan_gagal" role="alert">Inputan Tidak di Mengerti!</div>');
            redirect('arisan/aktifitas/tagihan/kelompok/' . $this->encrypt->encode($regist_arisan . $jadwal_id));
        endif;
        return $anggota_id;
    }
    // Notifikasi WA Bukti Setor Nomor Saya
    private function _notifWABuktiSetorAsli($nama_file, $lokasi_file, $data_invoice, $cek_option)
    {
        $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;

        if ($data_invoice['produk_id'] == 21) :
            $produk = 'Arisan Heboh';
        elseif ($data_invoice['produk_id'] == 22) :
            $produk = 'Arisan Motor';
        endif;

        $pesan = 'Yth. *_pelanggan setia Koperasi Bina Artha Prima_*,

Terimakasih sudah melakukan pembayaran iuran ' . $produk . ', Klik link dibawah untuk melihat invoice pembayaran Anda.

Link Invoice : https://siap.kspbinaartha.com/' . $lokasi_file .  $nama_file . '

*Info :* ' . $cek_option['cs_arisan'] . '
*_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 ControllerTagihanAktifitas.php and path
\application\controllers\arisan\aktifitas\ControllerTagihanAktifitas.php */