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

class ControllerDataKeluarga 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('form_validation');
        $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->set_timezone();
    }
    public function set_timezone()
    {
        date_default_timezone_set("Asia/Jakarta");
    }
    public function index()
    {
        // Notifikasi
        $jml_pengajuan        = count($this->notifikasi_arisan->Notifikasi_pengajuan());
        // End_notifikasi
        $data_login            = $this->userlogin->user_login();
        $data_id_login         = $this->session->userdata('isloggedin');
        // Query SQL Data atau isi data page
        $data_anggota_keluarga   = $this->select_model->getDataAnggotaArisan();
        $data = array(
            // Untuk memanggil halaman sesuai menu
            'folder'              => 'keloladata/keluarga',
            'page'                => 'index',
            'judul'               => 'Data Keluarga Anggota Arisan || Bagian Arisan',
            'data_id_login'       => $data_id_login,
            'data_login'          => $data_login,
            // Isi data konten
            'keluarga_arisan'     => $data_anggota_keluarga,
            'jml_pengajuan'       => $jml_pengajuan
        );
        $this->load->view('arisan/index', $data);
    }
    public function kelompok($id)
    {
        // Notifikasi
        $jml_pengajuan        = count($this->notifikasi_arisan->Notifikasi_pengajuan());
        // End_notifikasi
        $data_login            = $this->userlogin->user_login();
        $data_id_login         = $this->session->userdata('isloggedin');
        // Query SQL Data atau isi data page
        $kepala_id             = $this->encrypt->decode($id);
        $data_kepala           = $this->select_model->v_dkepala($kepala_id);
        $produk_kepala         = $this->select_model->v_ArisanKepala($kepala_id);
        $data_keluarga         = $this->select_model->v_DataAnggotaKeluarga($kepala_id);
        $data_produk_keluarga  = $this->select_model->v_ArisanAnggotaKeluarga($kepala_id);
        // echo '<pre>';
        // var_dump($data_produk_keluarga);
        // die;
        $data = array(
            // Untuk memanggil halaman sesuai menu
            'folder'              => 'keloladata/keluarga',
            'page'                => 'detail',
            'judul'               => 'Data Keluarga Anggota Arisan || Bagian Arisan',
            'data_id_login'       => $data_id_login,
            'data_login'          => $data_login,
            'jml_pengajuan'       => $jml_pengajuan,
            // Isi data konten 
            'v_dpkepala'          => $produk_kepala,
            'v_dkeluarga'         => $data_keluarga,
            'v_dpkeluarga'        => $data_produk_keluarga,
            'v_dkepala'           => $data_kepala
        );
        $this->load->view('arisan/index', $data);
    }
    public function crud()
    {
        if (isset($_POST['simpanAnggotaKeluarga'])) {
            $data_id = $this->_vAnggota();
            $this->_vKeluarga($data_id);
        }
        if (isset($_POST['simpanDataAnggotaKeluarga'])) {
            $cek_anggota          = $this->db->get_where('tbl_anggota', ['nik' => htmlspecialchars($this->input->post('nik_keluarga'))])->row_array();
            $kepala_keluarga      = $this->db->get_where('tbl_arisan_keluarga', ['id_kepalakeluarga' => $cek_anggota['id']])->row_array();
            if ($kepala_keluarga > 0) :
                $this->session->set_flashdata('pesan_gagal', '<div class="alert alert-danger" id="pesan_gagal" role="alert">Anggota Sudah Ada Keluarga!</div>');
            else :
                $anggota_keluarga     = $this->db->get_where('tbl_arisan_keluarga_detail', ['id_anggota' => $cek_anggota['id']])->row_array();
                if ($anggota_keluarga > 0) :
                    $this->session->set_flashdata('pesan_gagal', '<div class="alert alert-danger" id="pesan_gagal" role="alert">Anggota Sudah Ada di Dalam Keluarga Lain!</div>');
                else :
                    $this->insert_model->simpanDataAnggotaKeluarga();
                endif;
            endif;
            redirect('arisan/data/anggota_keluarga/kelompok/' . $this->encrypt->encode(htmlspecialchars($this->input->post('nik_kepala'))));
        }
    }
    // Menghapus data keluarga
    function hapus_keluarga($id)
    {
        $nik_kepala = $this->encrypt->decode($id);
        $cek_data = $this->db->get_where('tbl_anggota', ['nik' => $nik_kepala])->row_array();
        $id_anggota = $cek_data['id'];
        $cek_data2 = $this->db->get_where('tbl_arisan_keluarga', ['id_kepalakeluarga' => $id_anggota])->row_array();
        $id_keluarga = $cek_data2['id'];
        $this->update_model->hapusDataKeluarga($id_keluarga);
        $this->session->set_flashdata('pesan_berhasil', '<div class="alert alert-success" id="pesan_berhasil" role="alert">Berhasil Hapus Data Keluarga!</div>');
        redirect('arisan/data/anggota_keluarga');
    }
    // Menghapus anggota keluarga
    public function hapus_anggota($id)
    {
        $anggota_id = $this->encrypt->decode($id);
        $cek_kelurga = $this->db->get_where('p_arisan_anggota_keluarga', ['anggota_id' => $anggota_id])->row_array();
        $this->update_model->hapusAnggotaKeluarga($anggota_id);
        $this->session->set_flashdata('pesan_berhasil', '<div class="alert alert-success" id="pesan_berhasil" role="alert">Berhasil Hapus Data Anggota Keluarga!</div>');
        redirect('arisan/data/anggota_keluarga/kelompok/' . $this->encrypt->encode($cek_kelurga['kepala_id']));
    }
    // Validasi Private Function
    private function _vAnggota()
    {
        if (['nik' => htmlspecialchars($this->input->post('nik_kepala'))] == ['nik' => htmlspecialchars($this->input->post('nik_anggota'))]) :
            $this->session->set_flashdata('pesan_gagal', '<div class="alert alert-danger" id="pesan_gagal" role="alert">NIK Kepala Keluarga Tidak Boleh Sama Dengan NIK Anggota Keluarga!</div>');
            redirect('arisan/data/anggota_keluarga');
        endif;
        $cek_kepala = $this->db->get_where('anggota', ['nik' => htmlspecialchars($this->input->post('nik_kepala'))])->row_array();
        if ($cek_kepala < 1) :
            $this->session->set_flashdata('pesan_gagal', '<div class="alert alert-danger" id="pesan_gagal" role="alert">Anggota Tidak Terdaftar dalam Arisan Manapun!</div>');
            redirect('arisan/data/anggota_keluarga');
        endif;
        $cek_anggota = $this->db->get_where('anggota', ['nik' => htmlspecialchars($this->input->post('nik_anggota'))])->row_array();
        if ($cek_anggota < 1) :
            $this->session->set_flashdata('pesan_gagal', '<div class="alert alert-danger" id="pesan_gagal" role="alert">Anggota Tidak Terdaftar dalam Arisan Manapun!</div>');
            redirect('arisan/data/anggota_keluarga');
        endif;
        $data = array('kepala_id' => $cek_kepala['id'], 'anggota_id' => $cek_anggota['id']);
        return $data;
    }
    private function _vKeluarga($data_id)
    {
        // A - B
        $cek_anggota_keluarga = $this->db->get_where('p_arisan_anggota_keluarga', ['anggota_id' => $data_id['kepala_id'], 'status_anggota' => 'AKTIF'])->row_array();
        if ($cek_anggota_keluarga > 0) :
            $this->session->set_flashdata('pesan_gagal', '<div class="alert alert-danger" id="pesan_gagal" role="alert">(1) NIK Kepala Keluarga Sudah Terdaftar pada NIK Keluarga Lain!</div>');
            redirect('arisan/data/anggota_keluarga');
        endif;
        // B - A
        $cek_keluarga = $this->db->get_where('p_arisan_anggota_keluarga', ['kepala_id' => $data_id['anggota_id'], 'status_anggota' => 'AKTIF'])->row_array();
        if ($cek_keluarga > 0) :
            $this->session->set_flashdata('pesan_gagal', '<div class="alert alert-danger" id="pesan_gagal" role="alert">(2) NIK Anggota Keluarga Sudah Terdaftar Menjadi Kepala Keluarga!</div>');
            redirect('arisan/data/anggota_keluarga');
        endif;
        // B - B
        $cek_keluarga2 = $this->db->get_where('p_arisan_anggota_keluarga', ['anggota_id' => $data_id['anggota_id'], 'status_anggota' => 'AKTIF'])->row_array();
        if ($cek_keluarga2 > 0) :
            $nik_keluarga = $cek_keluarga2['kepala_id'];
            if ($nik_keluarga != $data_id['kepala_id']) :
                $this->session->set_flashdata('pesan_gagal', '<div class="alert alert-danger" id="pesan_gagal" role="alert">(3) NIK Anggota Keluarga Sudah Terdaftar pada NIK Keluarga Lain!</div>');
                redirect('arisan/data/anggota_keluarga');
            endif;
        endif;
        $cek_keluarga3 = $this->db->get_where('p_arisan_anggota_keluarga', ['kepala_id' => $data_id['kepala_id'], 'anggota_id' => $data_id['anggota_id'], 'status_anggota' => 'AKTIF'])->row_array();
        if ($cek_keluarga3 > 0) :
            $this->session->set_flashdata('pesan_gagal', '<div class="alert alert-danger" id="pesan_gagal" role="alert">(4) NIK Kepala Keluarga dan Anggota Keluarga Sudah Terdaftar!</div>');
            redirect('arisan/data/anggota_keluarga');
        endif;
        $this->insert_model->tambahAnggotaKeluargaArisan($data_id);
        $this->session->set_flashdata('pesan_berhasil', '<div class="alert alert-success" id="pesan_berhasil" role="alert">Berhasil Membuat Keluarga Arisan!</div>');
        redirect('arisan/data/anggota_keluarga');
    }
}

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