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

class ControllerLaporanHeboh extends CI_Controller
{
    public function __construct()
    {
        parent::__construct();
        //validasi jika user belum login
        check_not_login();
        if ($this->session->userdata('level') != 3) {
            redirect();
        }
        $this->set_timezone();
        $this->load->library('encrypt');
        $this->load->library('form_validation');
        $this->load->library('Mycustom');
        $this->load->library('pdfgenerator');
        $this->load->library('Notifikasi');
        $this->load->model('bagian_keuangan/insert_model');
        $this->load->model('bagian_keuangan/select_model');
        $this->load->model('bagian_keuangan/update_model');
    }
    public function set_timezone()
    {
        date_default_timezone_set("Asia/Jakarta");
    }

    public function index()
    {
        $notif                 = $this->notifikasi->notif_keuangan();
        // Data Login
        $data_login            = $this->userlogin->user_login(); // Menampilkan siapa yang login
        $data_id_login         = $this->session->userdata('isloggedin'); // Menampilkan data session
        $data_kotkab           = $this->select_model->vd_kotkab();
        // Data Isian Konten
        // Query SQL Data atau isi data page
        $data_arisan_heboh    = $this->select_model->getAllDataArisanHeboh(); // Menampilkan data semua produk arisan heboh
        $jumlah_anggota       = $this->select_model->getDataJmlAnggotaHeboh(); // Menampilkan data semua anggota Aktif produk arisan heboh
        $anggota_menang       = $this->select_model->getDataJmlAnggotaHebohMenang(); // Menampilkan data semua anggota Menang produk arisan heboh
        $anggota_mundur       = $this->select_model->getDataJmlAnggotaHebohMundur(); // Menampilkan data semua anggota Mundur produk arisan heboh
        $jml_laporan          = $this->select_model->getJumlahLaporanArisan(); // Menampilkan data semua produk arisan heboh
        $jml_laporanverif     = $this->select_model->getJumlahLaporanArisanVerif(); // Menampilkan data semua produk arisan heboh
        $data_arisanheboh     = $this->select_model->getProdukArisanHebohBelum();
        $data = array(
            // Untuk memanggil halaman sesuai menu
            'folder'              => 'laporan/arisan/heboh',
            'page'                => 'index',
            'judul'               => 'Daftar Laporan Arisan Heboh || Bagian Keuangan',
            'data_id_login'       => $data_id_login,
            'data_login'          => $data_login,
            'notif'               => $notif,
            'data_kota'           => $data_kotkab,
            // Isi data
            'data_arisan_heboh' => $data_arisan_heboh,
            'jml_anggota'       => $jumlah_anggota,
            'anggota_menang'    => $anggota_menang,
            'anggota_mundur'    => $anggota_mundur,
            'jml_laporan'       => $jml_laporan,
            'laporan_verif'     => $jml_laporanverif,
            'arisan_heboh_belum' => $data_arisanheboh
        );
        $this->load->view('keuangan/index', $data);
    }
    public function list($id)
    {
        $notif                = $this->notifikasi->notif_manager();
        $regist_arisan        = $this->encrypt->decode($id);
        // Data Login
        $data_login           = $this->userlogin->user_login(); // Menampilkan siapa yang login
        $data_id_login        = $this->session->userdata('isloggedin'); // Menampilkan data session
        // Data Isian Konten
        // Query SQL Data atau isi data page
        $identitas_arisan     = $this->select_model->getDataArisanHebohKelompok($regist_arisan);
        $pendapatan_heboh     = $this->select_model->getPendapatanArisanHebohKelompok($regist_arisan);
        $kas_heboh_bulan      = $this->select_model->getDataKasArisanHebohBulanKelompok($regist_arisan);
        $kas_heboh_seluruh    = $this->select_model->getDataKasArisanHebohSeluruhKelompok($regist_arisan);
        $data_laporan         = $this->select_model->getSemuaLaporanArisanHebohKelompok($regist_arisan); // Data Anggota Pemenang Arisan
        $laporan_verifikasi   = $this->select_model->getVerifikasiLaporanArisanHebohKelompok($regist_arisan); // Data Anggota Pemenang Arisan
        $jml_verifikasi       = count($laporan_verifikasi); // Data Anggota Pemenang Arisan
        $data = array(
            // Untuk memanggil halaman sesuai menu
            'folder'              => 'laporan/arisan/heboh',
            'page'                => 'list_laporan',
            'judul'               => 'Detail Laporan Arisan Heboh || Bagian Manager',
            'data_id_login'       => $data_id_login,
            'data_login'          => $data_login,
            'notif'               => $notif,
            // Isi data
            'kas_bulanan'         => $kas_heboh_bulan,
            'kas_seluruh'         => $kas_heboh_seluruh,
            'pendapatan_arisan'   => $pendapatan_heboh,
            'data_pemenang'       => $data_laporan,
            'jml_verifikasi'      => $jml_verifikasi,
            'identitas'           => $identitas_arisan
        );
        $this->load->view('keuangan/index', $data);
    }
    public function detail($id)
    {
        $notif                = $this->notifikasi->notif_manager();
        // Cek ID apakah kode laporan atau kode arisan dan jadwal
        $cek_id = strlen($this->encrypt->decode($id));
        if ($cek_id > 15) :
            $kd_laporan = $this->encrypt->decode($id);
        else :
            $regist_arisan = substr($this->encrypt->decode($id), 0, 7);
            $jadwal_id = substr($this->encrypt->decode($id), 7, 4);
            $cek_laporan = $this->db->get_where('lap_arisan', ['regist_arisan' => $regist_arisan, 'jadwal_id' => $jadwal_id])->row_array();
            $kd_laporan = $cek_laporan['id'];
        endif;
        // Data Login Identitas Karyawan
        $data_login            = $this->userlogin->user_login('isloggedin');
        $data_id_login         = $this->session->userdata('isloggedin');
        // Data Arisan
        $data_laporan          = $this->select_model->getDataDetailLaporan($kd_laporan);
        $data_tunggakan        = $this->select_model->getDataLaporanAnggotaTunggakan($kd_laporan);
        $data_tunggakan_bayar  = $this->select_model->getDataLaporanAnggotaTunggakanBayar($kd_laporan);
        $jml_tunggakan         = count($data_tunggakan);
        $jml_tunggakan_bayar   = count($data_tunggakan_bayar);
        $data_arisan           = $this->db->get_where('p_arisan', ['id' => $data_laporan['regist_arisan']])->row_array();
        $data_jadwal           = $this->db->get_where('p_arisan_jadwal', ['id' => $data_laporan['jadwal_id']])->row_array();
        $data = array(
            // Untuk memanggil halaman sesuai menu
            'folder'            => 'laporan/arisan/heboh',
            'page'              => 'detail_laporan',
            'judul'             => 'Laporan Arisan Heboh || Bagian Manager',
            // Login Data
            'data_id_login'     => $data_id_login,
            'data_login'        => $data_login,
            'notif'             => $notif,
            // Data Konten
            'laporan'                => $data_laporan,
            'anggota_tunggakan'      => $data_tunggakan,
            'tunggakan_bayar'        => $data_tunggakan_bayar,
            'jml_tunggakan'          => $jml_tunggakan,
            'jml_tunggakanbayar'     => $jml_tunggakan_bayar,
            'data_arisan'            => $data_arisan,
            'jadwal_arisan'          => $data_jadwal

        );
        $this->load->view('keuangan/index', $data);
    }
    public function crud($id)
    {
        $kd_laporan = $this->encrypt->decode($id);
        $data = array(
            'status_laporan' => 'OWNER'
        );
        $this->db->where('id', $kd_laporan);
        $this->db->update('lap_arisan', $data);
        $this->session->set_flashdata('pesan_berhasil', '<div class="alert alert-success" id="pesan_berhasil" role="alert">Verifikasi Laporan Berhasil, diteruskan ke Pengurus Koperasi!</div>');
        redirect('keuangan/laporan_arisan/kelompok_heboh/detail_laporan/' . $this->encrypt->encode($kd_laporan));
    }
    public function heboh_crud()
    {
        if (isset($_POST['simpanAnggotaArisanHeboh'])) {
            $alamat_id          = $this->_cekDataAlamat();
            $data_inputan       = $this->_inputanDaftarAnggotaHeboh($alamat_id);
            $this->_kapasitasAnggota($data_inputan);
            $this->_v_anggota($data_inputan, $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('keuangan/laporan_arisan/kelompok_heboh');
        }
    }
    // Kumpulan Private Function
    private function _cekDataAlamat()
    {
        $cek_alamat = $this->db->get_where('sistem_alamat', ['nm_desa' => htmlspecialchars($this->input->post('dk_ds')), 'nm_kecamatan' => htmlspecialchars($this->input->post('kecamatan_baru')), htmlspecialchars($this->input->post('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, Hubungi Developer!</div>');
            redirect('keuangan/laporan_arisan/kelompok_heboh');
        endif;
    }
    // Data Inputan Anggota Heboh
    private function _inputanDaftarAnggotaHeboh($alamat_id)
    {
        $data_inputan = array(
            'regist_arisan'  => htmlspecialchars($this->input->post('regist_arisan')),
            'nik'            => htmlspecialchars($this->input->post('nik_anggota')),
            'nm_anggota'     => htmlspecialchars($this->input->post('tah_nm_anggota')),
            'login_id'       => htmlspecialchars($this->input->post('login_id')),
            'jk'             => htmlspecialchars($this->input->post('tah_jk')),
            'alamat_lengkap' => htmlspecialchars($this->input->post('tah_alamat_lengkap')),
            'kode_pos'       => htmlspecialchars($this->input->post('tah_kode_pos')),
            'nm_rt'          => htmlspecialchars($this->input->post('tah_nm_rt')),
            'nm_rw'          => htmlspecialchars($this->input->post('tah_nm_rw')),
            'id_alamat'      => $alamat_id,
            'tempat_lahir'   => htmlspecialchars($this->input->post('tah_tempat_lahir')),
            'tgl_lahir'      => htmlspecialchars($this->input->post('tah_tgl_lahir')),
            'no_hp'          => htmlspecialchars($this->input->post('tah_no_hp')),
            'pekerjaan'      => htmlspecialchars($this->input->post('tah_pekerjaan')),
            'suami_istri'    => htmlspecialchars($this->input->post('tah_suami_istri')),
            'foto_ktp'       => htmlspecialchars($this->input->post('foto_ktp'))
        );
        return $data_inputan;
    }
    // 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">Anggota Melebihi Target Kelompok, Silahkan ubah target kelompok!</div>');
            redirect('keuangan/laporan_arisan/kelompok_heboh');
        endif;
    }
    // validasi calon anggota koperasi daftar arisan
    private function _v_anggota($data_inputan, $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);
        else :
            // Daftar ID Anggota terlebih dahulu
            $this->_daftarAnggotaKoperasi($data_inputan);
            $this->insert_model->tambahAnggotaKoperasi($data_inputan, $alamat_id);
        endif;
    }
    // Tambah Anggota Arisan dan Validasi nomor HP
    private function _daftarAnggotaArisanHeboh($data_inputan, $cek_anggota)
    {
        if ($cek_anggota['no_hp'] == $data_inputan['no_hp']) :
            $this->insert_model->daftarAnggotaArisan($data_inputan, $cek_anggota);
        else :
            $this->insert_model->daftarAnggotaArisan($data_inputan, $cek_anggota);
            $this->insert_model->masukNoHPCadangan($data_inputan, $cek_anggota);
        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('keuangan/laporan_arisan/kelompok_heboh');
        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('keuangan/laporan_arisan/kelompok_heboh');
        endif;
    }
}

/* End of file ControllerLaporanHeboh.php and path \application\controllers\keuangan\laporan\arisan\ControllerLaporanHeboh.php */