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

class ControllerAnggotaKoperasi extends CI_Controller
{

    public function __construct()
    {
        parent::__construct();
        //validasi jika user belum login
        check_not_login();
        if ($this->session->userdata('level') != 1) {
            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_owner/insert_model');
        $this->load->model('bagian_owner/select_model');
        $this->load->model('bagian_owner/update_model');
    }
    public function set_timezone()
    {
        date_default_timezone_set("Asia/Jakarta");
    }
    public function index()
    {
        $notif                = $this->notifikasi->notif_owner();
        $provinsi             = file_get_contents('https://open-api.my.id/api/wilayah/provinces');
        $data_provinsi        = json_decode($provinsi, true);
        // Data Login
        $data_login                   = $this->userlogin->user_login();
        $data_id_login                = $this->session->userdata('isloggedin');
        // 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' => 'anggota/koperasi',
            'page'   => 'index',
            'judul'  => 'Kelola Data Anggota Koperasi || Bagian Pengurus',
            // Isi data
            'data_id_login'       => $data_id_login,
            'data_login'          => $data_login,
            'notif'               => $notif,
            'provinsi'            => $data_provinsi,
            // Data isian konten
            'anggota_koperasi'    => $data_anggota_koperasi,
            'jml_aktif'           => $anggota_aktif,
            'kk'                  => $kartu_keluarga,
            'jml_pasif'           => $anggota_pasif
        );
        $this->load->view('owner/index', $data);
    }
    public function crud()
    {
        if (isset($_POST['simpanAnggoKoperasi'])) {
            $konversi_alamat    = $this->_KKodeAlamatKeHuruf();
            $data_inputan       = $this->_dataInputanAnggotaKoperasi($konversi_alamat);
            // echo '<pre>';
            // var_dump($data_inputan);
            // die;
            $this->_cekKTPAnggota($data_inputan);
            $this->_validasiComboBox($data_inputan);
            $this->_validasiNomorHP($data_inputan);
            $alamat_id          = $this->_cekDataAlamat($konversi_alamat);
            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('owner/anggota/koperasi');
        }
    }
    // Kumpulan private function
    // Melihat alamat lengkap Heboh
    private function _KKodeAlamatKeHuruf()
    {
        // Cek Provinsi
        $provinsi               = file_get_contents('https://open-api.my.id/api/wilayah/provinces/');
        $data_provinsi          = json_decode($provinsi, true);
        foreach ($data_provinsi as $Provinsi) :
            if ($Provinsi['id'] == htmlspecialchars($this->input->post('province_id'))) :
                $prov = array(
                    'id'   => $Provinsi['id'],
                    'name' => $Provinsi['name']
                );
            endif;
        endforeach;
        // Cek Kabupaten
        $kab_kota               = file_get_contents('https://open-api.my.id/api/wilayah/regencies/' . $prov['id']);
        $data_kab_kota          = json_decode($kab_kota, true);
        foreach ($data_kab_kota as $Kabupaten) :
            if ($Kabupaten['id'] == htmlspecialchars($this->input->post('kot_kab'))) :
                $kab = array(
                    'id'   => $Kabupaten['id'],
                    'name' => $Kabupaten['name']
                );
            endif;
        endforeach;
        // Cek Kecamatan
        $kecamatan               = file_get_contents('https://open-api.my.id/api/wilayah/districts/' . $kab['id']);
        $data_kecamatan          = json_decode($kecamatan, true);
        foreach ($data_kecamatan as $Kec) :
            if ($Kec['id'] == htmlspecialchars($this->input->post('nm_kec'))) :
                $nm_kec = array(
                    'id'   => $Kec['id'],
                    'name' => $Kec['name']
                );
            endif;
        endforeach;
        // Cek Nama Desa atau Kelurahan
        $deskel               = file_get_contents('https://open-api.my.id/api/wilayah/villages/' . $nm_kec['id']);
        $data_deskel          = json_decode($deskel, true);
        foreach ($data_deskel as $Deskel) :
            if ($Deskel['id'] == htmlspecialchars($this->input->post('nm_desa'))) :
                $desa_kelurahan = array(
                    'id'   => $Deskel['id'],
                    'name' => $Deskel['name']
                );
            endif;
        endforeach;
        $data_alamat = array(
            'prov'         => $prov['name'],
            'kot_kab'      => $kab['name'],
            'nm_kecamatan' => $nm_kec['name'],
            'nm_desa'      => $desa_kelurahan['name'],
        );
        return $data_alamat;
    }
    private function _dataInputanAnggotaKoperasi($konversi_alamat)
    {
        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'        => $konversi_alamat['nm_desa'],
            'nm_kecamatan'   => $konversi_alamat['nm_kecamatan'],
            'kot_kab'        => $konversi_alamat['kot_kab'],
            'prov'           => $konversi_alamat['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'    => $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('keuangan/anggota_koperasi');
        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('keuangan/anggota_koperasi');
        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('keuangan/anggota_koperasi');
        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('keuangan/anggota_koperasi');
        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('keuangan/anggota_koperasi');
        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('keuangan/anggota_koperasi');
        endif;
        $cek_nomor_cadangan = $this->db->get_where('anggota_hp_cadangan', ['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('keuangan/anggota_koperasi');
        endif;
    }
    // Mencari ID alamat database Heboh
    private function _cekDataAlamat($konversi_alamat)
    {
        $cek_alamat = $this->db->get_where('sistem_alamat', ['nm_desa' => $konversi_alamat['nm_desa'], 'nm_kecamatan' => $konversi_alamat['nm_kecamatan'], 'kot_kab' => $konversi_alamat['kot_kab'], 'prov' => $konversi_alamat['prov']])->row_array();
        if ($cek_alamat > 0) :
            $alamat_id = $cek_alamat['id'];
            return $alamat_id;
        else :
            $data_alamat = array(
                'nm_desa'      => $konversi_alamat['nm_desa'],
                'nm_kecamatan' => $konversi_alamat['nm_kecamatan'],
                'kot_kab'      => $konversi_alamat['kot_kab'],
                'prov'         => $konversi_alamat['prov']
            );
            $this->db->insert('sistem_alamat', $data_alamat);
            $alamat = $this->db->get_where('sistem_alamat', ['nm_desa' => $konversi_alamat['nm_desa'], 'nm_kecamatan' => $konversi_alamat['nm_kecamatan'], 'kot_kab' => $konversi_alamat['kot_kab'], 'prov' => $konversi_alamat['prov']])->row_array();
            $alamat_id = $alamat['id'];
            return $alamat_id;
        endif;
    }
}

/* End of file ControllerAnggotaKoperasi.php and path \application\controllers\owner\anggota\ControllerAnggotaKoperasi.php */