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

class ControllerAnggota extends CI_Controller
{

    public function __construct()
    {
        parent::__construct();
        check_not_login();
        if ($this->session->userdata('level') != 7) {
            redirect();
        }
        $this->load->library('encrypt');
        $this->load->library('form_validation');
        $this->load->library('mycustom');
        $this->load->model('marketing/insert_model');
        $this->load->model('marketing/select_model');
        $this->load->model('marketing/update_model');
        $this->set_timezone();
    }
    public function set_timezone()
    {
        date_default_timezone_set("Asia/Jakarta");
    }
    public function index()
    {
        // NOtifikasi
        $data_login       = $this->userlogin->user_login('isloggedin');
        $data_id_login    = $this->session->userdata('isloggedin');
        // End Notifikasi
        $login_id                  = $data_id_login;
        $data_login_karyawan       = $this->db->get_where('sistem_login', ['id' => $login_id])->row_array();
        $date_role_level           = $this->db->get_where('sistem_role_level', ['id' => $data_login_karyawan['role_id']])->row_array();
        $data_identitas            = $this->db->get_where('sistem_identitas', ['login_id' => $data_login_karyawan['id']])->row_array();
        $data_alamat               = $this->db->get_where('sistem_alamat', ['id' => $data_identitas['alamat_id']])->row_array();
        $data_kotkab               = $this->select_model->vd_kotkab();
        // echo '<pre>';
        // var_dump($login_id);
        // die;
        $data = array(
            // Untuk memanggil halaman sesuai menu
            'folder'            => 'identitas/profile',
            'page'              => 'index',
            'judul'             => 'Data Identitas Saya || Bagian Marketing',
            'data_id_login'     => $data_id_login,
            'data_login'        => $data_login,
            'data_kota'         => $data_kotkab,
            // Data Login      
            'login'             => $data_login_karyawan,
            'role_level'        => $date_role_level,
            'identitas'         => $data_identitas,
            'alamat'            => $data_alamat
        );
        $this->load->view('marketing/index', $data);
    }
    // Daftar Anggota Koperasi
    public function anggota_koperasi()
    {
        // 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_anggotaKoprasi();
        $anggota_aktif         = count($this->select_model->vd_anggotaKoprasiAktif());
        $anggota_pasif         = count($this->select_model->vd_anggotaKoprasiPasif());
        $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',
            'page'   => 'index',
            'judul'  => 'Data Anggota Koperasi || Bagian Marketing',
            // Isi data
            'data_id_login'       => $data_id_login,
            'data_login'          => $data_login,
            '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('marketing/index', $data);
    }
    // Cek Identitas Anggota Koperasi
    public function anggota($id)
    {
        // NOtifikasi
        $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_keluarga             = $this->db->get_where('anggota_keluarga_detail', ['anggota_id' => $id_anggota])->row_array();
        $data_kotkab               = $this->select_model->vd_kotkab();
        // Produk Aktif 
        $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);
        $data_nomor_cadangan       = $this->db->get_where('anggota_hp_cadangan', ['anggota_id' => $id_anggota])->result();
        // Produk Pinjaman
        $pinjaman_aktif            = $this->select_model->vd_anggotaPinjamanAktif($id_anggota);
        $pinjaman_history          = $this->select_model->vd_anggotaPinjamanSelesai($id_anggota);

        // echo '<pre>';
        // var_dump($pinjaman_aktif);
        // die;
        $data = array(
            // Untuk memanggil halaman sesuai menu
            'folder'            => 'identitas/anggota',
            'page'              => 'index',
            'judul'             => 'Data Identitas Anggota Koperasi || Bagian Marketing',
            'data_id_login'     => $data_id_login,
            'data_login'        => $data_login,
            'data_kota'         => $data_kotkab,
            // Isi data
            'data_anggota'      => $data_identitas,
            'data_keluarga'     => $data_keluarga,
            '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,
            'pinjaman_aktif'    => $pinjaman_aktif,
            'pinjaman_selesai'  => $pinjaman_history
        );
        $this->load->view('marketing/index', $data);
    }
    // Ajak Cek NIK Anggota
    public function data_anggota()
    {
        $nik               = $this->input->post('nik');
        $identitas_anggota = $this->select_model->getDataAnggota($nik);
        $cek_kk            = $this->db->get_where('anggota_keluarga', ['anggota_id' => $identitas_anggota['id_anggota']])->row_array();
        if ($cek_kk > 0) :
            $no_kk = $cek_kk['nomor_kk'];
        else :
            $no_kk = '';
        endif;
        if ($identitas_anggota > 0) :
            $data_ada = array(
                'nomor_kk'       => $no_kk,
                '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']
            );
        else :
            $data_ada = 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' =>  ''
            );
        endif;
        echo json_encode($data_ada);
    }
    public function crud_karyawan()
    {
        // Identitas Diri sendiri
        if (isset($_POST['updateDataDiriSendiri'])) :
            $data_inputan = $this->_dataInputanIdentitasKaryawan();
            $this->_cekKtpKaryawan($data_inputan);
            $this->_cekEmailKaryawan($data_inputan);
            $this->_cekNomorHPKaryawan($data_inputan);
            $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();
            $alamat_id = $alamat['id'];
            // Cek Identitas Karyawan
            $cek_identitas = $this->db->get_where('sistem_identitas', ['login_id' => $data_inputan['login_id']])->row_array();
            if ($cek_identitas > 0) :
                $this->update_model->updateDataKaryawanLama($data_inputan, $alamat_id);
            else :
                $this->insert_model->tambahDataIdentitasKaryawan($data_inputan, $alamat_id);
            endif;
            $this->session->set_flashdata('pesan_berhasil', '<div class="alert alert-success" id="pesan_berhasil" role="alert">Berhasil merubah data karyawan koperasi!</div>');
            redirect('logout');
        endif;
        // Merubah data anggota koperasi
        if (isset($_POST['updateDataAnggota'])) :
            $anggota_id = htmlspecialchars($this->input->post('id_anggota'));
            $data_inputan = $this->_dataInputanIdentitas();
            $cek_alamat   = $this->_dataAlamatAnggota($data_inputan);
            $this->_validasiNomorHP($data_inputan);
            // echo '<pre>';
            // var_dump($anggota_id);
            // die;
            if ($data_inputan['no_kk'] > 0) :
                if ($data_inputan['no_kk'] != $data_inputan['no_kk_lama']) :
                    $cek_kk = $this->db->get_where('anggota_keluarga', ['nomor_kk' => $data_inputan['no_kk']])->row_array();
                    if ($cek_kk > 0) :
                        $this->insert_model->tambah_detail_anggota_keluarga($data_inputan);
                    else :
                        $this->insert_model->tambah_anggota_keluarga($data_inputan);
                    endif;
                endif;
            endif;
            $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 Koperasi!</div>');
            redirect('marketing/identitas/anggota/' . $this->encrypt->encode($anggota_id));
        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')),
            'no_kk'          => htmlspecialchars($this->input->post('no_kk')),
            'no_kk_lama'     => htmlspecialchars($this->input->post('no_kk_lama')),
            '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')),
            'no_hp_baru'     => htmlspecialchars($this->input->post('no_hp')),
            'no_hp_lama'     => htmlspecialchars($this->input->post('no_hp_lama')),
            '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;
    }
    private function _validasiNomorHP($data_inputan)
    {
        if ($data_inputan['no_hp_baru'] != $data_inputan['no_hp_lama']) :
            $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('marketing/identitas/anggota/' . $this->encrypt->encode($data_inputan['id_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('marketing/identitas/anggota/' . $this->encrypt->encode($data_inputan['id_anggota']));
            endif;
        endif;
    }
    // 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('marketing/identitas/anggota/' . $this->encrypt->encode($data_inputan['id_anggota']));
        endif;
    }
    // Data Inputan identitas Karyawan
    private function _dataInputanIdentitasKaryawan()
    {
        $data_inputan = array(
            'login_id'       => htmlspecialchars($this->input->post('login_id')),
            'nik'            => htmlspecialchars($this->input->post('nik')),
            'nik_lama'       => htmlspecialchars($this->input->post('nik_lama')),
            'nm_panggilan'   => htmlspecialchars($this->input->post('nm_panggilan')),
            'jk'             => htmlspecialchars($this->input->post('jk')),
            'kot_kab'        => htmlspecialchars($this->input->post('kota_kabupaten')),
            'nm_kecamatan'   => htmlspecialchars($this->input->post('kecamatan_baru')),
            'nm_desa'        => htmlspecialchars($this->input->post('dk_ds')),
            'tempat_lahir'   => htmlspecialchars($this->input->post('tempat_lahir')),
            'tgl_lahir'      => htmlspecialchars($this->input->post('tgl_lahir')),
            'no_hp_baru'     => htmlspecialchars($this->input->post('no_hp')),
            'no_hp_lama'     => htmlspecialchars($this->input->post('no_hp_lama')),
            'email_baru'     => htmlspecialchars($this->input->post('email_baru')),
            'email_lama'     => htmlspecialchars($this->input->post('email_lama')),
            'tgl_gabung'     => htmlspecialchars($this->input->post('tgl_gabung')),
            'foto_ktp_old'   => htmlspecialchars($this->input->post('foto_ktp_old'))
        );
        return $data_inputan;
    }
    private function _cekKtpKaryawan($data_inputan)
    {
        if ($data_inputan['nik'] != $data_inputan['nik_lama']) :
            $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/identitas/karyawan/' . $this->encrypt->encode($data_inputan['login_id']));
            endif;
            // Apakah NIK sudah terdaftar
            $cek_nik = $this->db->get_where('sistem_identitas', ['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/identitas/karyawan/' . $this->encrypt->encode($data_inputan['login_id']));
            endif;
        endif;
    }
    private function _cekEmailKaryawan($data_inputan)
    {
        if ($data_inputan['email_baru'] != $data_inputan['email_lama']) :
            $cek_email = $this->db->get_where('sistem_login', ['email' => $data_inputan['email_baru']])->row_array();
            if ($cek_email > 0) :
                $this->session->set_flashdata('pesan_gagal', '<div class="alert alert-danger" id="pesan_gagal" role="alert">Alamat Email Sudah Di Gunakan Karyawan Lain!</div>');
                redirect('keuangan/identitas/karyawan/' . $this->encrypt->encode($data_inputan['login_id']));
            endif;
        endif;
    }
    private function _cekNomorHPKaryawan($data_inputan)
    {
        if ($data_inputan['no_hp_baru'] != $data_inputan['no_hp_lama']) :
            $cek_email = $this->db->get_where('sistem_login', ['no_hp' => $data_inputan['no_hp_baru']])->row_array();
            if ($cek_email > 0) :
                $this->session->set_flashdata('pesan_gagal', '<div class="alert alert-danger" id="pesan_gagal" role="alert">Nomor HP Sudah Di Gunakan Karyawan Lain!</div>');
                redirect('keuangan/identitas/karyawan/' . $this->encrypt->encode($data_inputan['login_id']));
            endif;
        endif;
    }
    // Data update anggota koperasi
    // Data Inputan Identitas Anggota Koperasi Baru
    private function _inputanDataBaru()
    {
        $data_baru = array(
            'nomor_kk'       => htmlentities($this->input->post('nomor_kk')),
            'nomor_kk_lama'  => htmlentities($this->input->post('nomor_kk_lama')),
            'nm_anggota'     => htmlentities($this->input->post('nm_anggota')),
            'jk'             => htmlentities($this->input->post('jk')),
            'alamat_lengkap' => htmlentities($this->input->post('alamat_lengkap')),
            'prov'           => htmlentities($this->input->post('prov')),
            'kot_kab'        => htmlentities($this->input->post('kota_kabupaten')),
            'nm_kecamatan'   => htmlentities($this->input->post('kecamatan_baru')),
            'nm_desa'        => htmlentities($this->input->post('dk_ds')),
            'nm_rt'          => htmlentities($this->input->post('nm_rt')),
            'nm_rw'          => htmlentities($this->input->post('nm_rw')),
            'tempat_lahir'   => htmlentities($this->input->post('tempat_lahir')),
            'tgl_lahir'      => htmlentities($this->input->post('tgl_lahir')),
            'no_hp'          => htmlentities($this->input->post('no_hp')),
            'no_hp_lama'     => htmlentities($this->input->post('no_hp_lama')),
            'pekerjaan'      => htmlentities($this->input->post('pekerjaan')),
            'suami_istri'    => htmlentities($this->input->post('suami_istri')),
            'foto_ktp_old'   => htmlentities($this->input->post('foto_ktp_old')),
            'foto_kk_old'    => htmlentities($this->input->post('foto_kk_old'))
        );

        return $data_baru;
    }
    // Verifikasi Nomor KK
    private function _verifNomorKK($data_baru, $anggota_id)
    {
        // Apakah kk sekarang sama dengan kk baru?
        if ($data_baru['nomor_kk'] != $data_baru['nomor_kk_lama']) :
            // Cek apakah KK Baru sudah terdaftar?
            $data_kk = $this->db->get_where('anggota_keluarga', ['nomor_kk' => $data_baru['nomor_kk']])->row_array();
            if ($data_kk > 0) :
                // Cek apakah Anggota Keluarga sama dengan anggota keluarga
                if ($data_kk['anggota_id'] != $anggota_id) :
                    $this->session->set_flashdata('pesan_gagal', '<div class="alert alert-success" id="pesan_gagal" role="alert">Nomor KK Sudah Terdaftar!</div>');
                    redirect('marketing/identitas/anggota/' . $this->encrypt->encode($anggota_id));
                endif;
            endif;
            // Hapus Rincian Keluarga
            $this->db->where('kk_id', $data_baru['nomor_kk_lama']);
            $this->db->delete('anggota_keluarga_detail');
            // Merubah Nomor KK
            $data = array(
                'nomor_kk' => $data_baru['nomor_kk']
            );
            $this->db->where('anggota_id', $anggota_id);
            $this->db->update('anggota_keluarga', $data);
            // Menambah rincian keluarga
            $data_keluarga = array(
                'kk_id' => $data_baru['nomor_kk'],
                'anggota_id' => $anggota_id,
                'status_keluarga' => 'suami_istri'
            );
            $this->db->insert('anggota_keluarga_detail', $data_keluarga);
        endif;
    }
    // Verifikasi Alamat Anggota Koperasi
    private function _verifAlamat($data_baru)
    {
        $data_alamat = $this->db->get_where('sistem_alamat', [
            'nm_desa' => $data_baru['nm_desa'],
            'nm_kecamatan' => $data_baru['nm_kecamatan'],
            'kot_kab' => $data_baru['kot_kab'],
            'prov' => $data_baru['prov']
        ])->row_array();
        return $data_alamat['id'];
    }
    // Verifikasi Nomor HP Baru
    private function _verifNomorHP($data_baru, $anggota_id)
    {
        // Cek apakah nomor HP lama = Nomor HP Baru
        if ($data_baru['no_hp'] != $data_baru['no_hp_lama']) :
            $cek_nomor_hp = $this->db->get_where('anggota', ['no_hp' => $data_baru['no_hp']])->row_array();
            if ($cek_nomor_hp > 0) :
                if ($cek_nomor_hp['id'] != $anggota_id) :
                    $this->session->set_flashdata('pesan_gagal', '<div class="alert alert-danger" id="pesan_gagal" role="alert">Nomor HP Sudah Terdaftar!</div>');
                    redirect('marketing/identitas/anggota/' . $this->encrypt->encode($anggota_id));
                endif;
            endif;
            $data_lama = array(
                'anggota_id'   => $anggota_id,
                'no_hp'        => $data_baru['no_hp_lama'],
                'ket_cadangan' => 'Nomor HP Telah diganti pada ' . date('Y-m-d H:i:s')
            );
            $this->db->insert('anggota_hp_cadangan', $data_lama);
            $baru = array(
                'no_hp' => $data_baru['no_hp']
            );
            $this->db->where('id', $anggota_id);
            $this->db->update('anggota', $baru);
        endif;
    }
}

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