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

class ControllerAnggota extends CI_Controller
{

    public function __construct()
    {
        parent::__construct();
        //validasi jika user belum login
        check_not_login();
        if ($this->session->userdata('level') != 2) {
            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_manager/insert_model');
        $this->load->model('bagian_manager/select_model');
        $this->load->model('bagian_manager/update_model');
    }
    public function set_timezone()
    {
        date_default_timezone_set("Asia/Jakarta");
    }
    public function index()
    {
        $notif                 = $this->notifikasi->notif_manager();
        // Data Login
        $data_login            = $this->userlogin->user_login();
        $data_id_login         = $this->session->userdata('isloggedin');
        // Cek Kabupaten / Kota
        $data_kotkab           = $this->select_model->vd_kotkab();
        // Query SQL Data atau isi data page
        $data_anggota_koperasi = $this->select_model->vd_anggotaKoeprasi();
        $anggota_aktif         = count($this->select_model->vd_anggotaKoeprasiAktif());
        $anggota_pasif         = count($this->select_model->vd_anggotaKoeprasiPasif());
        $kartu_keluarga        = $this->db->get_where('anggota_keluarga')->result();
        // echo '<pre>';
        // var_dump($data_anggota_koperasi);
        // die;
        $data = array(
            // Untuk memanggil halaman sesuai menu
            'folder'              => 'sistem/anggota',
            'page'                => 'index',
            'judul'               => 'Kelola Data Anggota Koperasi || Bagian Manager',
            // Isi data
            'data_id_login'       => $data_id_login,
            'data_login'          => $data_login,
            'notif'               => $notif,
            'data_kota'           => $data_kotkab,
            // Data isian konten
            'anggota_koperasi'    => $data_anggota_koperasi,
            'kk'                  => $kartu_keluarga,
            'jml_aktif'           => $anggota_aktif,
            'jml_pasif'           => $anggota_pasif
        );
        $this->load->view('manager/index', $data);
    }
    // Cek Identitas Anggota Koperasi
    public function anggota_detail($id)
    {
        // NOtifikasi
        $notif                      = $this->notifikasi->notif_manager();
        $data_login                 = $this->userlogin->user_login('isloggedin');
        $data_id_login              = $this->session->userdata('isloggedin');
        // End Notifikasi
        $id_anggota                = $this->encrypt->decode($id);
        $data_identitas            = $this->select_model->getDataIdentitasAnggota($id_anggota);
        $data_kotkab               = $this->select_model->vd_kotkab();
        // Produk Aktif
        // Arisan
        $produk_arisanheboh_aktif  = $this->select_model->getDataProdukAHA($id_anggota);
        $produk_arisanheboh_pasif  = $this->select_model->getDataProdukAHP($id_anggota);
        $produk_arisanmotor_aktif  = $this->select_model->getDataProdukAMA($id_anggota);
        $produk_arisanmotor_pasif  = $this->select_model->getDataProdukAMP($id_anggota);
        $jml_heboh_aktif           = count($produk_arisanheboh_aktif);
        $jml_motor_aktif           = count($produk_arisanmotor_aktif);
        $jml_heboh_pasif           = count($produk_arisanheboh_pasif);
        $jml_motor_pasif           = count($produk_arisanmotor_pasif);
        // Koperasi
        // Aktif
        $produk_arisan_aktif       = $this->select_model->vd_produkKoperasiAktif($id_anggota);
        $jml_produk_arisan_aktif   = count($produk_arisan_aktif);
        // Tidak Aktif
        $produk_arisan_selesai       = $this->select_model->vd_produkKoperasiSelesai($id_anggota);
        $jml_produk_arisan_selesai   = count($produk_arisan_selesai);
        // Produk Tabungan
        $produk_tabungan             = $this->db->get_where('p_simpanan', ['anggota_id' => $id_anggota])->result();
        // Jaminan
        $jaminan                   = $this->select_model->vd_jaminanPinjaman();
        // Bagian Nomor HP
        $data_nomor_cadangan       = $this->db->get_where('anggota_hp_cadangan', ['anggota_id' => $id_anggota])->result();
        $data = array(
            // Untuk memanggil halaman sesuai menu
            'folder'            => 'identitas/anggota',
            'page'              => 'index',
            'judul'             => 'Data Identitas Anggota Koperasi || Bagian Manager',
            'data_id_login'     => $data_id_login,
            'data_login'        => $data_login,
            'notif'             => $notif,
            'data_kota'         => $data_kotkab,
            // Isi data
            'data_anggota'      => $data_identitas,
            'heboh_aktif'       => $jml_heboh_aktif,
            'motor_aktif'       => $jml_motor_aktif,
            'heboh_pasif'       => $jml_heboh_pasif,
            'motor_pasif'       => $jml_motor_pasif,
            'a_arisanheboh'     => $produk_arisanheboh_aktif,
            'a_arisanmotor'     => $produk_arisanmotor_aktif,
            'p_arisanheboh'     => $produk_arisanheboh_pasif,
            'p_arisanmotor'     => $produk_arisanmotor_pasif,
            'anggota_id'        => $id_anggota,
            'nomor_cadangan'    => $data_nomor_cadangan,
            // Bagian Koperasi
            'pinjaman_aktif'       => $produk_arisan_aktif,
            'jml_pinjaman_aktif'   => $jml_produk_arisan_aktif,
            'pinjaman_selesai'     => $produk_arisan_selesai,
            'jml_pinjaman_selesai' => $jml_produk_arisan_selesai,
            // Jaminan
            'jaminan_pinjaman'     => $jaminan,
            'tabungan'             => $produk_tabungan
        );
        $this->load->view('manager/index', $data);
    }
    // Tabungan Hapus
    public function tabungan_hapus($id)
    {
        $tabungan_id                = $this->encrypt->decode($id);
        $cek_data                   = $this->db->get_where('p_simpanan', ['id' => $tabungan_id])->row_array();
        if ($cek_data > 0) :
            $this->db->where('id', $tabungan_id);
            $this->db->delete('p_simpanan');
            $this->session->set_flashdata('pesan_berhasil', '<div class="alert alert-success" id="pesan_berhasil" role="alert">Berhasil hapus data tabungan!</div>');
            redirect('manager/identitas/anggota/' . $this->encrypt->encode($cek_data['anggota_id']));
        else:
            redirect('logout');
        endif;
    }
    // Ajak Cek NIK Anggota
    public function data_anggota()
    {
        $nik               = $this->input->post('nik');
        $identitas_anggota = $this->select_model->getDataAnggota($nik);
        if ($identitas_anggota > 0) :
            $data_ada = array(
                'nm_anggota'     => $identitas_anggota['nm_anggota'],
                'jk'             => $identitas_anggota['jk'],
                'alamat_lengkap' => $identitas_anggota['alamat_lengkap'],
                'kota_kabupaten' => '<option value="' . $identitas_anggota['kot_kab'] . '">' . $identitas_anggota['kot_kab']  . '</option>',
                'kecamatan_baru' => '<option value="' . $identitas_anggota['nm_kecamatan'] . '">' . $identitas_anggota['nm_kecamatan']  . '</option>',
                'dk_ds'          => '<option value="' . $identitas_anggota['nm_desa'] . '">' . $identitas_anggota['nm_desa']  . '</option>',
                'nm_rt'          => $identitas_anggota['nm_rt'],
                'nm_rw'          => $identitas_anggota['nm_rw'],
                'tempat_lahir'   => $identitas_anggota['tempat_lahir'],
                'tgl_lahir'      => $identitas_anggota['tgl_lahir'],
                'no_hp'          => $identitas_anggota['no_hp'],
                'pekerjaan'      => $identitas_anggota['pekerjaan'],
                'suami_istri'    => $identitas_anggota['suami_istri'],
                'foto_ktplama'   => $identitas_anggota['foto_ktp']
            );
            echo json_encode($data_ada);
        else :
            $data_new = array(
                'nm_anggota' => '',
                'jk' => 'ok',
                'alamat_lengkap' => '',
                'kode_pos' => '',
                'nm_rt' => 'ok',
                'nm_rw' => 'ok',
                'tempat_lahir' => '',
                'tgl_lahir' =>  '',
                'no_hp' =>  '',
                'pekerjaan' =>  '',
                'suami_istri' =>  '',
                'foto_ktplama' =>  ''
            );
            echo json_encode($data_new);
        endif;
    }
    public function crud()
    {
        // FIX
        if (isset($_POST['simpanAnggoKoperasi'])) {
            $data_inputan       = $this->_dataInputanAnggotaKoperasi();
            $this->_cekKTPAnggota($data_inputan);
            $this->_validasiComboBox($data_inputan);
            $this->_validasiNomorHP($data_inputan);
            $alamat_id          = $this->_cekDataAlamat($data_inputan);
            if ($data_inputan['nomor_kk'] == null) :
                $this->insert_model->tambahAnggotaKoperasiBaru($data_inputan, $alamat_id);
            else :
                // Tambah Anggota dengan Nomor KK
                $this->insert_model->tambahAnggotaKoperasiBaruKK($data_inputan, $alamat_id);
                $cek_anggota = $this->db->get_where('anggota', ['nik' => $data_inputan['nik']])->row_array();
                $this->insert_model->uploadKKBaru($data_inputan, $cek_anggota);
            endif;
            $this->session->set_flashdata('pesan_berhasil', '<div class="alert alert-success" id="pesan_berhasil" role="alert">Berhasil menambahkan anggota koperasi baru!</div>');
            redirect('manager/sistem/anggota');
        }
        if (isset($_POST['updateDataAnggota'])) {
            // Data Inputan
            $data_inputan = $this->_dataInputanIdentitas();
            $cek_alamat   = $this->_dataAlamatAnggota($data_inputan);
            $this->update_model->updateDataAnggota($data_inputan, $cek_alamat);
            $this->update_model->updateDataAnggotaKK($data_inputan, $cek_alamat);
            $this->session->set_flashdata('pesan_berhasil', '<div class="alert alert-success" id="pesan_berhasil" role="alert">Berhasil merubah data anggota!</div>');
            redirect('manager/identitas/anggota/' . $this->encrypt->encode($data_inputan['id_anggota']));
        };
    }
    // Kumpulan Private Function
    private function _dataInputanAnggotaKoperasi()
    {
        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('suami_istri'));
        elseif (htmlspecialchars($this->input->post('status_hubungan')) == 2) :
            $suami_istri = 'DUDA/JANDA';
        endif;
        $data_inputan = array(
            'nik'            => htmlspecialchars($this->input->post('nik_anggota')),
            'nomor_kk'       => htmlspecialchars($this->input->post('nomor_kk')),
            'nm_anggota'     => htmlspecialchars($this->input->post('nm_anggota')),
            '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('dk_ds')),
            'nm_kecamatan'   => htmlspecialchars($this->input->post('kecamatan_baru')),
            'kot_kab'        => htmlspecialchars($this->input->post('kota_kabupaten')),
            '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'    => $suami_istri,
            'foto_ktp'       => htmlspecialchars($this->input->post('foto_ktp'))
        );
        return $data_inputan;
    }
    // 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('manager/sistem/anggota');
        endif;
        // Apakah NIK sudah terdaftar
        $cek_nik = $this->db->get_where('anggota', ['nik' => $nik])->row_array();
        if ($cek_nik > 0) :
            $this->session->set_flashdata('pesan_gagal', '<div class="alert alert-danger" id="pesan_gagal" role="alert">NIK Sudah Terdaftar!</div>');
            redirect('manager/sistem/anggota');
        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('manager/sistem/anggota');
        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('manager/sistem/anggota');
        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('manager/sistem/anggota');
        endif;
        if ($data_inputan['kot_kab'] == 'PILIH') :
            $this->session->set_flashdata('pesan_gagal', '<div class="alert alert-danger" id="pesan_gagal" role="alert">Kolom Kabupaten atau Kota Harus Diisi!</div>');
            redirect('manager/sistem/anggota');
        endif;
    }
    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('manager/sistem/anggota');
        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('manager/sistem/anggota');
        endif;
    }
    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 Ada!</div>');
            redirect('manager/sistem/anggota');
        endif;
    }
    // Data Inputan identitas Anggota
    private function _dataInputanIdentitas()
    {
        $data_inputan = array(
            'id_anggota'     => htmlspecialchars($this->input->post('id_anggota')),
            'nik'            => htmlspecialchars($this->input->post('nik')),
            'nm_anggota'     => htmlspecialchars($this->input->post('nm_anggota')),
            'jk'             => htmlspecialchars($this->input->post('jk')),
            'alamat_lengkap' => htmlspecialchars($this->input->post('alamat_lengkap')),
            'kot_kab'        => htmlspecialchars($this->input->post('kota_kabupaten')),
            'nm_kecamatan'   => htmlspecialchars($this->input->post('kecamatan_baru')),
            'nm_desa'        => htmlspecialchars($this->input->post('dk_ds')),
            'nm_rt'          => htmlspecialchars($this->input->post('nm_rt')),
            'nm_rw'          => htmlspecialchars($this->input->post('nm_rw')),
            '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_old'   => htmlspecialchars($this->input->post('foto_ktp_old')),
            'foto_kk_old'    => htmlspecialchars($this->input->post('foto_kk_old'))
        );
        return $data_inputan;
    }
    // Cek alamat anggota
    private function _dataAlamatAnggota($data_inputan)
    {
        $cek_alamat = $this->db->get_where('sistem_alamat', ['kot_kab' => $data_inputan['kot_kab'], 'nm_kecamatan' => $data_inputan['nm_kecamatan'], 'nm_desa' => $data_inputan['nm_desa']])->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!</div>');
            redirect('arisan/identitas/anggota/' . $this->encrypt->encode($data_inputan['id_anggota']));
        endif;
    }
}

/* End of file ControllerAnggota.php and path \application\controllers\manager\sistem\ControllerAnggota.php */