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

class ControllerDataKelompokHeboh extends CI_Controller
{

    public function __construct()
    {
        parent::__construct();
        check_not_login();
        if ($this->session->userdata('level') != 4) {
            redirect();
        }
        $this->load->library('encrypt');
        $this->load->library('mycustom');
        $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');
        $this->load->library('form_validation');
        $this->set_timezone();
    }
    public function set_timezone()
    {
        date_default_timezone_set("Asia/Jakarta");
    }
    // Index Awal
    public function index()
    {
        // Notifikasi
        $jml_pengajuan        = count($this->notifikasi_arisan->Notifikasi_pengajuan());
        // End_notifikasi
        $data_login           = $this->userlogin->user_login('isloggedin');
        $data_id_login        = $this->session->userdata('isloggedin');
        // Query SQL Data atau isi data page
        $data_arisan_heboh    = $this->select_model->getAllDataArisanHeboh();
        $jumlah_anggota       = $this->select_model->getDataJmlAnggota();
        $pengajuan_anggota    = $this->select_model->getDataJmlPengajuanAnggota();
        $data = array(
            // Untuk memanggil halaman sesuai menu
            'folder'            => 'keloladata/arisanheboh',
            'page'              => 'index',
            'judul'             => 'Kelola Data Arisan Heboh || Bagian Arisan',
            'data_id_login'     => $data_id_login,
            // Isi data
            'data_login'        => $data_login,
            'data_arisan_heboh' => $data_arisan_heboh,
            'jml_anggota'       => $jumlah_anggota,
            'pengajuan_anggota' => $pengajuan_anggota,
            'jml_pengajuan'     => $jml_pengajuan
        );
        $this->load->view('arisan/index', $data);
    }
    // Detail kelompok arisan heboh
    public function kelompok($id)
    {
        // Notifikasi
        $jml_pengajuan          = count($this->notifikasi_arisan->Notifikasi_pengajuan());
        $data_kotkab            = $this->select_model->vd_kotkab();
        // End_notifikasi
        $regist_arisan          = $this->encrypt->decode($id);
        // Data Login Identitas Karyawan
        $data_id_login          = $this->session->userdata('isloggedin');
        $data_login             = $this->userlogin->user_login();
        // Query SQL Data atau isi data page.
        $data_arisan            = $this->db->get_where('p_arisan', ['id' => $regist_arisan])->row_array();  //Data Identitas Arisan
        $data_anggota           = $this->select_model->getDataAnggotaArisanHeboh($regist_arisan); // Data Anggota Arisan Heboh
        $data_pemenang          = $this->select_model->getDataAnggotaArisanHebohMenang($regist_arisan); // Data Anggota Pemenang Arisan
        $anggota                = count($this->select_model->getDataAnggotaArisanHebohAktif($regist_arisan)); // Data Anggota Aktif Arisan
        $anggota_mundur         = count($this->select_model->getDataAnggotaArisanHebohMundur($regist_arisan)); // Data Anggota Mundur Arisan
        $anggota_menang         = count($data_pemenang); // Menghitung jumlah pemenang
        $realisasi_tagihan      = $this->select_model->getDataRealisasiTagihan($regist_arisan); // Data Realisasi Tagihan bulan dan tahun berjalan
        $data_saldo             = $this->select_model->getDataSaldoKelompok($regist_arisan); // Data Saldo Kelompok
        $data_jadwal            = $this->db->get_where('p_arisan_jadwal', ['regist_arisan' => $regist_arisan, 'status_undian' => 'BELUM'])->row_array();

        if ($data_jadwal > 0) :
            $jadwal_id = $data_jadwal['id'];
        else :
            $jadwal_id = '';
        endif;
        if ($data_saldo > 0) :
            $saldo_kelompok = $data_saldo['saldo_akhir'];
        else :
            $saldo_kelompok = 0;
        endif;
        $data = array(
            // Untuk memanggil halaman sesuai menu
            'folder'              => 'keloladata/arisanheboh',
            'page'                => 'detail',
            'judul'               => 'Kelola Data Arisan Heboh || Bagian Arisan',
            'data_id_login'       => $data_id_login,
            // Isi data
            'data_login'          => $data_login,
            'data_arisan'         => $data_arisan,
            'data_anggota'        => $data_anggota,
            'data_pemenang'       => $data_pemenang,
            'saldo_kelompok'      => $saldo_kelompok,
            'anggota_aktif'       => $anggota,
            'anggota_mundur'      => $anggota_mundur,
            'anggota_menang'      => $anggota_menang,
            'realisasi'           => $realisasi_tagihan,
            'jadwal_id'           => $jadwal_id,
            'jml_pengajuan'       => $jml_pengajuan,
            'data_kota'           => $data_kotkab
        );
        $this->load->view('arisan/index', $data);
    }
    // Bagian Create Read Update Delete
    public function crud()
    {
        // DONE
        if (isset($_POST['simpanArisanHeboh'])) {
            $cek_kelompok     = $this->db->get_where('p_arisan', ['produk_id' => 21, 'nm_kelompok' => htmlspecialchars($this->input->post('nm_kelompok'))])->row_array();
            if ($cek_kelompok > 0) :
                $this->session->set_flashdata('pesan_gagal', '<div class="alert alert-danger" id="pesan_gagal" role="alert">Nama Kelompok Sudah Ada!</div>');
            else :
                $this->insert_model->simpanArisanHeboh();
            endif;
            redirect('arisan/data/kelompok_heboh');
        }
        // DONE
        if (isset($_POST['hapusDataArisan'])) {
            $regist_arisan = htmlspecialchars($this->input->post('regist_arisan'));
            $this->update_model->hapusDataArisan($regist_arisan);
            $this->session->set_flashdata('pesan_berhasil', '<div class="alert alert-success" id="pesan_berhasil" role="alert">Berhasil Hapus Kelompok Arisan Heboh!</div>');
            redirect('arisan/data/kelompok_heboh');
        }
        // DONE
        if (isset($_POST['ubahDataArisan'])) {
            $regist_arisan = htmlspecialchars($this->input->post('regist_arisan'));
            $this->update_model->ubahDataArisan($regist_arisan);
            $this->session->set_flashdata('pesan_berhasil', '<div class="alert alert-success" id="pesan_berhasil" role="alert">Berhasil Ubah Data Kelompok Arisan Heboh!</div>');
            redirect('arisan/data/kelompok_heboh');
        }
        // DONE
        if (isset($_POST['aktifDataArisan'])) {
            $this->_cekTargetAnggota();
            $tgl   = htmlspecialchars($this->input->post('tgl_undian'));
            if ($tgl > 0 and $tgl < 30) :
                $regist_arisan = htmlspecialchars($this->input->post('regist_arisan'));
                $bulan = date('m');
                $tahun = date('Y');
                $date  = $tahun . '-' . $bulan . '-' . $tgl;
                $data = [
                    'regist_arisan' => $regist_arisan,
                    'tgl_undian'    => date('Y-m-d', strtotime('+1 month', strtotime($date))),
                    'undian_ke'     => 1
                ];
                $this->db->insert('p_arisan_jadwal', $data);
                $this->update_model->aktifDataArisan($regist_arisan);
                $this->_notifikasiArisanHebohAktif($regist_arisan);
                $this->session->set_flashdata('pesan_berhasil', '<div class="alert alert-success" id="pesan_berhasil" role="alert">Berhasil Aktifasi Kelompok Arisan Heboh!</div>');
            else :
                $this->session->set_flashdata('pesan_gagal', '<div class="alert alert-danger" id="pesan_gagal" role="alert">Kolom tanggal di isi antara 1 sampai 30!</div>');
            endif;
            redirect('arisan/data/kelompok_heboh');
        }
        // DONE
        if (isset($_POST['simpanAnggotaArisanHeboh'])) {
            $buat_regist_undian     = $this->_BuatResgistArisan();
            $alamat_id              = $this->_cekDataAlamat();
            $data_inputan           = $this->_inputanDaftarAnggota($alamat_id);
            $this->_kapasitasAnggota($data_inputan);
            $this->_v_anggota($data_inputan, $buat_regist_undian, $alamat_id);
            $this->session->set_flashdata('pesan_berhasil', '<div class="alert alert-success" id="pesan_berhasil" role="alert">Berhasil Menambahkan anggota arisan heboh!</div>');
            redirect('arisan/data/kelompok_heboh/kelompok/' . $this->encrypt->encode($data_inputan['regist_arisan']));
        }
        // DONE
        if (isset($_POST['gantiAnggotaArisanHeboh'])) {
            $produk_id = 21;
            // Inputan
            $data_inputan = $this->_inpuranDaftarAnggota();
            // Cek apakah inputan sudah memenuhi persyaratan atau belum (Ketikan dan EYD)
            $this->_inputanAnggotaBaru($data_inputan); // Cek apakah inputan sudah memenuhi persyaratan atau belum (Ketikan dan EYD)
            // Cek apakah nik dan nomor telepon sudah sesuai standard pengisian
            $cek_nik_hp   = $this->_cekDataAnggotaBaru($data_inputan); // Cek apakah nik dan nomor telepon sudah sesuai standard pengisian
            // Cek apakah alamat ada didalam database atau tidak
            $cek_alamat   = $this->_cekDataAlamat($data_inputan); // Cek apakah alamat ada didalam database atau tidak
            $alamat_id    = $cek_alamat;
            // Membuat nomor registrasi undian dan nomor undian
            $regist_undian = htmlspecialchars($this->input->post('regist_undian'));
            if ($cek_nik_hp['nik_hp'] == '2') :
                // Input semua data
                $this->update_model->gantiAnggotaArisanHebohBaru($data_inputan, $alamat_id, $regist_undian, $produk_id);
            else :
                if ($cek_nik_hp['nik_hp'] == '1') :
                    // Update data yang sudah ada
                    $anggota_id = $cek_nik_hp['anggota_id'];
                    // Mengahapus data keterkaitan produk
                    // Mengubah data anggota arisan
                    $data_anggota_baru = array(
                        'anggota_id' => $anggota_id,
                        'status'     => 'AKTIF'
                    );
                    // echo '<pre>';
                    // var_dump($data_anggota_baru, $regist_undian);
                    // die;
                    $this->db->where('regist_undian', $regist_undian);
                    $this->db->update('p_arisan_anggota', $data_anggota_baru);
                    // Tambah Nomor Cadangan
                    $data_cadangan = array(
                        'anggota_id'   => $anggota_id,
                        'no_hp'        => $data_inputan['no_hp'],
                        'ket_cadangan' => 'Nomor ' . $data_inputan['no_hp'] . ' di daftarkan sebagai nomor Cadangan Anggota Arisan Heboh ' . $regist_undian
                    );
                    $this->db->insert('anggota_hp_cadangan', $data_cadangan);
                // Menambah data anggota keterkaitan
                else :
                    // Updata data yang sudah ada di tambah masukkan nomor cadangan
                    $anggota_id = $cek_nik_hp['anggota_id'];
                    // Mengahapus data keterkaitan produk
                    // Mengubah data anggota arisan
                    $data_anggota_baru = array(
                        'anggota_id' => $anggota_id,
                        'status'     => 'AKTIF'
                    );
                    $this->db->where('regist_undian', $regist_undian);
                    $this->db->update('p_arisan_anggota', $data_anggota_baru);
                    // Menambah data anggota keterkaitan
                    // Tambah Nomor Cadangan
                    $data_cadangan = array(
                        'anggota_id'   => $anggota_id,
                        'no_hp'        => $data_inputan['no_hp'],
                        'ket_cadangan' => 'Nomor ' . $data_inputan['no_hp'] . ' di daftarkan sebagai nomor Cadangan Anggota Arisan Heboh ' . $regist_undian
                    );
                    $this->db->insert('anggota_hp_cadangan', $data_cadangan);
                endif;
            endif;
            $this->session->set_flashdata('pesan_berhasil', '<div class="alert alert-success" id="pesan_berhasil" role="alert">Berhasil Merubah Anggota Kelompok Arisan Heboh!</div>');
            redirect('arisan/data/kelompok_heboh/kelompok/' . $this->encrypt->encode($data_inputan['arisan_id']));
        }
    }
    // DONE
    // Anggota tidak jadi mengikuti arisan
    public function hapus_anggota($id)
    {
        $regist_undian = $this->encrypt->decode($id);
        $cek_data = $this->db->get_where('p_arisan_anggota', ['regist_undian' => $regist_undian])->row_array();
        $regist_arisan = $cek_data['regist_arisan'];
        $this->update_model->anggotaKoperasiMundurHapus($regist_undian);
        $this->session->set_flashdata('pesan_berhasil', '<div class="alert alert-success" id="pesan_berhasil" role="alert">Berhasil Hapus Data Anggota Kelompok Arisan Motor!</div>');
        redirect('arisan/data/kelompok_heboh/kelompok/' . $this->encrypt->encode($regist_arisan));
    }
    public function anggota_mundur($id)
    {
        $regist_undian = $this->encrypt->decode($id);
        $cek_data = $this->db->get_where('p_arisan_anggota', ['regist_undian' => $regist_undian])->row_array();
        $regist_arisan = $cek_data['regist_arisan'];
        $this->update_model->anggotaKoperasiMundur($regist_undian);
        $this->session->set_flashdata('pesan_berhasil', '<div class="alert alert-success" id="pesan_berhasil" role="alert">Berhasil Merubah Status Anggota Kelompok Arisan Heboh!</div>');
        redirect('arisan/data/kelompok_heboh/kelompok/' . $this->encrypt->encode($regist_arisan));
    }
    // Cek target
    private function _cekTargetAnggota()
    {
        $cek_target = $this->db->get_where('p_arisan', ['id' => htmlspecialchars($this->input->post('regist_arisan'))])->row_array();
        $anggota = $this->db->get_where('p_arisan_anggota', ['regist_arisan' => htmlspecialchars($this->input->post('regist_arisan'))])->result();
        $ttl_pendaftar = count($anggota);
        $min_aktif = $this->db->get_where('sistem_option')->row_array();
        // Minimal anggota untuk bisa aktif
        $min_aktif = $cek_target['tempo'] * $min_aktif['min_aktif_21'];
        if ($ttl_pendaftar < $min_aktif) :
            $this->session->set_flashdata('pesan_gagal', '<div class="alert alert-danger" id="pesan_gagal" role="alert">Gagal Aktivasi Arisan Heboh! Anggota Minimal ' . $min_aktif . '</div>');
            redirect('arisan/data/kelompok_heboh');
        endif;
    }
    // Membuat kode registrasi anggota arisan
    private function _BuatResgistArisan()
    {
        $regist_arisan = htmlspecialchars($this->input->post('regist_arisan'));
        $no_undian    = $this->select_model->getDataNomorUndian($regist_arisan);
        $no_undian_selanjutnya = $no_undian['no_urut'] + 1;
        $total_huruf = strlen($no_undian_selanjutnya);
        if ($total_huruf == 1) :
            $regist_undian = $regist_arisan . '00' . $no_undian_selanjutnya;
            $no_urut = $no_undian_selanjutnya;
        elseif ($total_huruf == 2) :
            $regist_undian = $regist_arisan . '0' . $no_undian_selanjutnya;
            $no_urut = $no_undian_selanjutnya;
        else :
            $regist_undian = $regist_arisan . $no_undian_selanjutnya;
            $no_urut = $no_undian_selanjutnya;
        endif;
        $data = array(
            'no_urut' => $no_urut,
            'regist_undian' => $regist_undian
        );
        return $data;
    }
    // Validasi Tambah Anggota
    private function _inputanDaftarAnggota($alamat_id)
    {
        $data_inputan = array(
            'regist_arisan'  => htmlspecialchars($this->input->post('regist_arisan')),
            'login_id'       => htmlspecialchars($this->input->post('login_id')),
            'nik'            => htmlspecialchars($this->input->post('nik_anggota')),
            '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')),
            'id_alamat'      => $alamat_id,
            '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'    => htmlspecialchars($this->input->post('tambah_suami_istri')),
            'foto_ktp'       => htmlspecialchars($this->input->post('tambah_foto_ktp')),
            'foto_ktplama'   => htmlspecialchars($this->input->post('tambah_foto_ktplama'))
        );
        return $data_inputan;
    }
    // Validasi ganti anggota
    private function _inpuranDaftarAnggota()
    {
        $id_arisan         = htmlspecialchars($this->input->post('id_arisan'));
        $nik               = htmlspecialchars($this->input->post('nik'));
        $nm_anggota        = htmlspecialchars($this->input->post('nm_anggota'));
        $login_id          = htmlspecialchars($this->input->post('login_id'));
        $jk                = htmlspecialchars($this->input->post('jk'));
        $alamat_lengkap    = htmlspecialchars($this->input->post('alamat_lengkap'));
        $kode_pos          = htmlspecialchars($this->input->post('kode_pos'));
        $nm_rt             = htmlspecialchars($this->input->post('nm_rt'));
        $nm_rw             = htmlspecialchars($this->input->post('nm_rw'));
        $nm_desa           = htmlspecialchars($this->input->post('tambah_nm_desa'));
        $nm_kecamatan      = htmlspecialchars($this->input->post('tambah_nm_kecamatan'));
        $kot_kab           = htmlspecialchars($this->input->post('tambah_kot_kab'));
        $prov              = htmlspecialchars($this->input->post('tambah_prov'));
        $tempat_lahir      = htmlspecialchars($this->input->post('tempat_lahir'));
        $tgl_lahir         = htmlspecialchars($this->input->post('tgl_lahir'));
        $no_hp             = htmlspecialchars($this->input->post('no_hp'));
        $pekerjaan         = htmlspecialchars($this->input->post('pekerjaan'));
        $suami_istri       = htmlspecialchars($this->input->post('suami_istri'));
        $foto_ktp          = htmlspecialchars($this->input->post('foto_ktp'));
        $foto_ktplama      = htmlspecialchars($this->input->post('foto_ktplama'));
        $data_inputan = array(
            'arisan_id'      => $id_arisan,
            'nik'            => $nik,
            'nm_anggota'     => $nm_anggota,
            'login_id'       => $login_id,
            'jk'             => $jk,
            'alamat_lengkap' => $alamat_lengkap,
            'kode_pos'       => $kode_pos,
            'nm_rt'          => $nm_rt,
            'nm_rw'          => $nm_rw,
            'nm_desa'        => $nm_desa,
            'nm_kecamatan'   => $nm_kecamatan,
            'kot_kab'        => $kot_kab,
            'prov'           => $prov,
            'tempat_lahir'   => $tempat_lahir,
            'tgl_lahir'      => $tgl_lahir,
            'no_hp'          => $no_hp,
            'pekerjaan'      => $pekerjaan,
            'suami_istri'    => $suami_istri,
            'foto_ktp'       => $foto_ktp,
            'foto_ktplama'   => $foto_ktplama
        );
        return $data_inputan;
    }
    private function _inputanAnggotaBaru($data_inputan)
    {
        // Cek NIK
        if (strlen($data_inputan['nik']) < 16 && strlen($data_inputan['nik']) > 16) :
            $this->session->set_flashdata('pesan_gagal', '<div class="alert alert-danger" id="pesan_gagal" role="alert">NIK Harus berisi 16 karakter!</div>');
            redirect('arisan/data/kelompok_heboh/kelompok/' . $this->encrypt->encode($data_inputan['arisan_id']));
        endif;
        // Cek Jenis Kelamin
        if ($data_inputan['jk'] == 'ok') :
            $this->session->set_flashdata('pesan_gagal', '<div class="alert alert-danger" id="pesan_gagal" role="alert">Pilih Jenis Kelamin Dengan Benar!</div>');
            redirect('arisan/data/kelompok_heboh/kelompok/' . $this->encrypt->encode($data_inputan['arisan_id']));
        endif;
        // Cek RT
        if ($data_inputan['nm_rt'] == 'ok') :
            $this->session->set_flashdata('pesan_gagal', '<div class="alert alert-danger" id="pesan_gagal" role="alert">Pilih RT Dengan Benar!</div>');
            redirect('arisan/data/kelompok_heboh/kelompok/' . $this->encrypt->encode($data_inputan['arisan_id']));
        endif;
        // Cek RW
        if ($data_inputan['nm_rw'] == 'ok') :
            $this->session->set_flashdata('pesan_gagal', '<div class="alert alert-danger" id="pesan_gagal" role="alert">Pilih RW Dengan Benar!</div>');
            redirect('arisan/data/kelompok_heboh/kelompok/' . $this->encrypt->encode($data_inputan['arisan_id']));
        endif;
        // Cek Nomor HP substr($data_inputan['no_hp'])
        if (substr($data_inputan['no_hp'], 0, 1) != '0') :
            $this->session->set_flashdata('pesan_gagal', '<div class="alert alert-danger" id="pesan_gagal" role="alert">Nomor HP diawali dengan 0!</div>');
            redirect('arisan/data/kelompok_heboh/kelompok/' . $this->encrypt->encode($data_inputan['arisan_id']));
        endif;
    }
    private function _cekDataAnggotaBaru($data_inputan)
    {
        // Cek data NIK
        $cek_nik = $this->db->get_where('anggota', ['nik' => $data_inputan['nik']])->row_array();
        if ($cek_nik > 0) :
            $cek_nomor = $this->db->get_where('anggota', ['no_hp' => $data_inputan['no_hp']])->row_array();
            if ($cek_nomor > 0) :
                if ($cek_nomor['no_hp'] == $cek_nik['no_hp']) :
                    $data_info = array(
                        'nik_hp' => 1,
                        'anggota_id' => $cek_nik['id']
                    );
                // NIK terdaftar dan nomor HP sama
                else :
                    $this->session->set_flashdata('pesan_gagal', '<div class="alert alert-danger" id="pesan_gagal" role="alert">Nomor HP sudah ada terdaftar pada anggota lain!</div>');
                    redirect('arisan/data/kelompok_heboh/kelompok/' . $this->encrypt->encode($data_inputan['arisan_id']));
                endif;
            else :
                $data_info = array(
                    'nik_hp' => 3,
                    'anggota_id' => $cek_nik['id']
                );
            // NIK terdaftar namun nomor HP berbeda dan nomor HP tidak ada yang memakai
            endif;
        else :
            $cek_nomor = $this->db->get_where('anggota', ['no_hp' => $data_inputan['no_hp']])->row_array();
            if ($cek_nomor > 0) :
                redirect('arisan/data/kelompok_heboh/kelompok/' . $this->encrypt->encode($data_inputan['arisan_id']));
            endif;
            $data_info = array(
                'nik_hp' => 2
            );
        endif;
        return $data_info;
    }
    // Mencari ID alamat database
    private function _cekDataAlamat()
    {
        $cek_alamat = $this->db->get_where('sistem_alamat', ['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'))])->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 di Temukan, silahkan hubungi developer!</div>');
            redirect('arisan/data/kelompok_heboh/kelompok/' . $this->encrypt->encode(htmlspecialchars($this->input->post('regist_arisan'))));
        endif;
    }
    // validasi calon anggota koperasi daftar arisan
    private function _v_anggota($data_inputan, $buat_regist_undian, $alamat_id)
    {
        $cek_anggota = $this->db->get_where('anggota', ['nik' => $data_inputan['nik']])->row_array();
        if ($cek_anggota > 0) :
            // Daftar Arisan Langsung
            $this->_daftarAnggotaArisanHeboh($data_inputan, $cek_anggota, $buat_regist_undian);
        else :
            // Daftar ID Anggota terlebih dahulu
            $this->_daftarAnggotaKoperasi($data_inputan);
            $this->insert_model->tambahAnggotaKoperasi($data_inputan, $buat_regist_undian, $alamat_id);
        endif;
    }
    // Validasi nomor HP
    private function _daftarAnggotaArisanHeboh($data_inputan, $cek_anggota, $buat_regist_undian)
    {
        if ($cek_anggota['no_hp'] == $data_inputan['no_hp']) :
            $this->insert_model->daftarAnggotaArisan($data_inputan, $cek_anggota, $buat_regist_undian);
        else :
            $this->insert_model->daftarAnggotaArisan($data_inputan, $cek_anggota, $buat_regist_undian);
            $this->insert_model->masukNoHPCadangan($data_inputan, $cek_anggota, $buat_regist_undian);
        endif;
    }
    // Menambahkan data calon koperasi
    private function _daftarAnggotaKoperasi($data_inputan)
    {
        // Validasi Nomor HP
        $cek_hp = $this->db->get_where('anggota', ['no_hp' => $data_inputan['no_hp']])->row_array();
        if ($cek_hp > 0) :
            $this->session->set_flashdata('pesan_gagal', '<div class="alert alert-danger" id="pesan_gagal" role="alert">Nomor HP anda sudah di pakai orang lain!</div>');
            redirect('arisan/data/kelompok_heboh/kelompok/' . $this->encrypt->encode($data_inputan['regist_arisan']));
        endif;
        $cek_hp2 = $this->db->get_where('anggota_hp_cadangan', ['no_hp' => $data_inputan['no_hp']])->row_array();
        $cek_hp2 = $this->db->get_where('anggota', ['no_hp' => $data_inputan['no_hp']])->row_array();
        if ($cek_hp2 > 0) :
            $this->session->set_flashdata('pesan_gagal', '<div class="alert alert-danger" id="pesan_gagal" role="alert">Nomor HP anda sudah di pakai orang lain!</div>');
            redirect('arisan/data/kelompok_heboh/kelompok/' . $this->encrypt->encode($data_inputan['regist_arisan']));
        endif;
    }
    // Validasi total anggota
    private function _kapasitasAnggota($data_inputan)
    {
        $cek_arisan = $this->db->get_where('p_arisan', ['id' => $data_inputan['regist_arisan']])->row_array();
        $cek_anggota = $this->db->get_where('p_arisan_anggota', ['regist_arisan' => $data_inputan['regist_arisan']])->result();
        $ttl_anggota = count($cek_anggota);
        if ($ttl_anggota >= $cek_arisan['target_anggota']) :
            $this->session->set_flashdata('pesan_gagal', '<div class="alert alert-danger" id="pesan_gagal" role="alert">Gagal Tambah Anggota, Target Anggota Arisan Sudah Penuh!</div>');
            redirect('arisan/data/kelompok_heboh/kelompok/' . $this->encrypt->encode($data_inputan['regist_arisan']));
        endif;
    }
    // Notifikasi Arisan Aktif
    private function _notifikasiArisanHebohAktif($regist_arisan)
    {
        $detail_anggota = $this->select_model->getDataAnggotaArisanHeboh($regist_arisan);
        $cek_api        = $this->db->get_where('sistem_option')->row_array();
        $data_arisan    = $this->db->get_where('p_arisan', ['id' => $regist_arisan])->row_array();  //Data Identitas Arisan
        foreach ($detail_anggota as $Detail_anggota) :
            $cek_nomor = substr($Detail_anggota->no_hp, 0, 1);
            if ($cek_nomor == 0) :
                $no_hp = '62' . substr($Detail_anggota->no_hp, 1, 20);
            else :
                $no_hp = $Detail_anggota->no_hp;
            endif;
            $pesan = 'Hei, *_' . $Detail_anggota->nm_anggota . '_*,
            
Arisan Heboh ' . $data_arisan['nm_kelompok'] . ' Bina Artha Sudah Mulai Berjalan, Nomor Urut Undian Anda adalah ' . $Detail_anggota->no_urut . '.
Estimasi pengundian Arisan Heboh ' . $data_arisan['nm_kelompok'] . ' Bina Artha setiap tanggal ' . $data_arisan['tgl_undian'] . ', iuran anda setiap bulan Rp ' . $data_arisan['tagihan_iuran'] . ',- dan maksimal pembayaran 1 hari sebelum pengundian.

Terimakasih,


*Info : ' . $cek_api['cs_arisan'] . '*';

            $body = array(
                "api_key" => $cek_api['api_arisan'],
                "receiver" => $no_hp,
                "data" => array("message" => $pesan)
            );

            $curl = curl_init();
            curl_setopt_array($curl, [
                CURLOPT_URL => $cek_api['web_api_pesan'],
                CURLOPT_RETURNTRANSFER => true,
                CURLOPT_ENCODING => "",
                CURLOPT_MAXREDIRS => 10,
                CURLOPT_TIMEOUT => 30,
                CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                CURLOPT_CUSTOMREQUEST => "POST",
                CURLOPT_POSTFIELDS => json_encode($body),
                CURLOPT_HTTPHEADER => [
                    "Accept: */*",
                    "Content-Type: application/json",
                ],
            ]);

            $response = curl_exec($curl);
            $err = curl_error($curl);
            curl_close($curl);
        endforeach;
    }
}

/* End of file ControllerDataKelompokHeboh.php and path \application\controllers\arisan\keloladata\ControllerDataKelompokHeboh.php */