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

class ControllerLaporanMotor 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_manager();
        // 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
        $data_arisan_motor    = $this->select_model->getAllDataArisanMotor(); // 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 = array(
            // Untuk memanggil halaman sesuai menu
            'folder'              => 'laporan/arisan/motor',
            'page'                => 'index',
            'judul'               => 'Daftar Laporan Arisan Motor || Bagian Manager',
            'data_id_login'       => $data_id_login,
            'data_login'          => $data_login,
            'notif'               => $notif,
            // Isi data
            'data_arisan_motor' => $data_arisan_motor,
            'jml_anggota'       => $jumlah_anggota,
            'anggota_menang'    => $anggota_menang,
            'anggota_mundur'    => $anggota_mundur,
            'jml_laporan'       => $jml_laporan,
            'laporan_verif'     => $jml_laporanverif
        );
        $this->load->view('owner/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->getDataArisanMotorKelompok($regist_arisan);
        $pendapatan_motor     = $this->select_model->getPendapatanArisanMotorKelompok($regist_arisan);
        $kas_motor_bulan      = $this->select_model->getDataKasArisanMotorBulanKelompok($regist_arisan);
        $kas_motor_seluruh    = $this->select_model->getDataKasArisanMotorSeluruhKelompok($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/motor',
            'page'                => 'list_laporan',
            'judul'               => 'Detail Laporan Arisan Motor || Bagian Manager',
            'data_id_login'       => $data_id_login,
            'data_login'          => $data_login,
            'notif'               => $notif,
            // Isi data
            'kas_bulanan'         => $kas_motor_bulan,
            'kas_seluruh'         => $kas_motor_seluruh,
            'pendapatan_arisan'   => $pendapatan_motor,
            'data_pemenang'       => $data_laporan,
            'jml_verifikasi'      => $jml_verifikasi,
            'identitas'           => $identitas_arisan
        );
        $this->load->view('owner/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);
        $jadwal_id             = $data_laporan['jadwal_id'];
        $regist_arisan             = $data_laporan['regist_arisan'];
        // echo '<pre>';
        // var_dump($data_laporan);
        // die;
        $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_anggota          = $this->select_model->vd_anggotaArisanMotorSudahBayar($jadwal_id, $regist_arisan); // Menampilkan anggota arisan heboh yang sudah bayar
        $data = array(
            // Untuk memanggil halaman sesuai menu
            'folder'            => 'laporan/arisan/motor',
            'page'              => 'detail_laporan',
            'judul'             => 'Laporan Aktifitas Arisan Motor || 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,
            'data_anggota'           => $data_anggota

        );
        $this->load->view('owner/index', $data);
    }
    public function crud($id)
    {
        $kd_laporan = $this->encrypt->decode($id);
        $data = array(
            'status_laporan' => 'VERIFIED'
        );
        $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">Berhasil Verifikasi Laporan!</div>');
        redirect('owner/laporan_arisan/kelompok_motor/detail_laporan/' . $this->encrypt->encode($kd_laporan));
    }
    public function crud_detail_laporan()
    {
        if (isset($_POST['ubahDataLaporanArisan'])) :
            $kd_laporan = htmlspecialchars($this->input->post('laporan_id'));
            // Cek Pemenang, masih sama atau ganti
            $this->_cekPemenangBaru($kd_laporan);
            // Cek Saldo Lelang Berbeda atau tidak
            $this->_cekSaldoLelangBaru($kd_laporan);
            $data_laporan = array(
                'tgl_laporan'     => htmlspecialchars($this->input->post('tgl_laporan')),
                'tgl_undian'      => htmlspecialchars($this->input->post('tgl_laporan')),
                'saldo_awal'      => htmlspecialchars($this->input->post('saldo_awal')),
                'saldo_masuk'     => htmlspecialchars($this->input->post('saldo_masuk')),
                'saldo_pemenang'  => htmlspecialchars($this->input->post('saldo_pemenang')),
                'saldo_akhir'     => htmlspecialchars($this->input->post('saldo_akhir')),
                'administrasi'    => htmlspecialchars($this->input->post('administrasi')),
                'dn_kehilangan'   => htmlspecialchars($this->input->post('dn_kehilangan')),
                'fee_dealer'      => htmlspecialchars($this->input->post('fee_dealer')),
                'lelang_awal'     => htmlspecialchars($this->input->post('lelang_awal')),
                'lelang_masuk'    => htmlspecialchars($this->input->post('lelang_masuk')),
                'saldo_lelang'    => htmlspecialchars($this->input->post('saldo_lelang')),
                'jenis_penarikan' => htmlspecialchars($this->input->post('jenis_penarikan')),
                'updated_at'      => date('Y-m-d H:i:s')
            );
            $this->db->where('id', $kd_laporan);
            $this->db->update('lap_arisan', $data_laporan);
            $berkas_lama = './assets/laporan/arisan/motor/' . htmlspecialchars($this->input->post('document')) . '';
            unlink($berkas_lama);
            $kd_laporan_arisan = htmlspecialchars($this->input->post('laporan_id'));
            $lelang_tertinggi  = $data_laporan['lelang_masuk'];
            $this->_documentLapArisanMotor($kd_laporan_arisan, $lelang_tertinggi);
            $this->session->set_flashdata('pesan_berhasil', '<div class="alert alert-success" id="pesan_berhasil" role="alert">Berhasil Merubah Data Laporan!</div>');
            redirect('owner/laporan_arisan/kelompok_motor/detail_laporan/' . $this->encrypt->encode($kd_laporan));
        endif;
    }
    // Pengecekan Laporan
    // Cek Pemenang Baru
    private function _cekPemenangBaru($kd_laporan)
    {
        if (htmlspecialchars($this->input->post('regist_undian')) != htmlspecialchars($this->input->post('regist_undian_lama'))) :
            $cek_pemenang = $this->db->get_where('p_arisan_anggota', ['regist_undian' => htmlspecialchars($this->input->post('regist_undian'))])->row_array();
            if ($cek_pemenang['status'] == 'MUNDUR') :
                $this->session->set_flashdata('pesan_gagal', '<div class="alert alert-danger" id="pesan_gagal" role="alert">Anggota Arisan Sudah Mundur!</div>');
                redirect('owner/laporan_arisan/kelompok_motor/detail_laporan/' . $this->encrypt->encode($kd_laporan));
            elseif ($cek_pemenang['status'] == 'MENANG'):
                $this->session->set_flashdata('pesan_gagal', '<div class="alert alert-danger" id="pesan_gagal" role="alert">Anggota Arisan Sudah Menang!</div>');
                redirect('owner/laporan_arisan/kelompok_motor/detail_laporan/' . $this->encrypt->encode($kd_laporan));
            endif;
            // Ubah data tabel lap_arisan_menang
            $data_pemenang = array(
                'regist_undian' => htmlspecialchars($this->input->post('regist_undian'))
            );
            $this->db->where('laporan_id', $kd_laporan);
            $this->db->update('lap_arisan_menang', $data_pemenang);
            // Ubah data tabel p_arisan_anggota AKtif
            $data_arisan_aktif = array(
                'status' => 'AKTIF'
            );
            $this->db->where('regist_undian', htmlspecialchars($this->input->post('regist_undian')));
            $this->db->update('p_arisan_anggota', $data_arisan_aktif);
            // Ubah data tabel p_arisan_anggota Menang
            $data_arisan_aktif = array(
                'status' => 'MENANG'
            );
            $this->db->where('regist_undian', htmlspecialchars($this->input->post('regist_undian_lama')));
            $this->db->update('p_arisan_anggota', $data_arisan_aktif);
            // Ubah Data tabel p_arisan_lelang_undian
            $data_lelang = array(
                'regist_undian' => htmlspecialchars($this->input->post('regist_undian_lama'))
            );
            $this->db->where('jadwal_id', htmlspecialchars($this->input->post('jadwal_id')));
            $this->db->where('status_lelang', 'MENANG');
            $this->db->update('p_arisan_lelang_undian', $data_lelang);
        endif;
    }
    // Cek Lelang Baru
    private function _cekSaldoLelangBaru()
    {
        if (htmlspecialchars($this->input->post('lelang_masuk')) != htmlspecialchars($this->input->post('lelang_masuk_old'))) :
            if (htmlspecialchars($this->input->post('lelang_masuk')) > htmlspecialchars($this->input->post('lelang_masuk_old'))) :
                // Ubah Data tabel p_arisan_lelang_undian
                $data_lelang = array(
                    'total_lelang' => htmlspecialchars($this->input->post('lelang_masuk'))
                );
                $this->db->where('regist_undian', htmlspecialchars($this->input->post('regist_undian')));
                $this->db->where('jadwal_id', htmlspecialchars($this->input->post('jadwal_id')));
                $this->db->where('status_lelang', 'MENANG');
                $this->db->update('p_arisan_lelang_undian', $data_lelang);
            endif;
        endif;
    }
    // Merubah data laporan dokumen
    // Membuat dokument laporan Arisan Motor 1 Pemenang
    private function _documentLapArisanMotor($kd_laporan_arisan, $lelang_tertinggi)
    {
        $data_laporan                = $this->db->get_where('lap_arisan', ['id' => $kd_laporan_arisan])->row_array();
        $data_rinci_laporan_pemenang = $this->select_model->getDataRinciPemenangArisanMotorLaporan($kd_laporan_arisan);
        $regist_arisan               = $data_laporan['regist_arisan'];
        $data_lelang                 = $this->select_model->getDataTotalLelang($regist_arisan);
        $ttl_lelang                  = count($data_lelang);
        $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_petugas                = $this->db->get_where('sistem_login', ['id' => $data_laporan['login_id']])->row_array();
        $jml_anggota                 = count($this->db->get_where('p_arisan_anggota', ['regist_arisan' => $regist_arisan])->result());
        $data = array(
            'judul'            => 'Laporan Arisan Motor ' . $data_arisan['ket_arisan'] . ' Kelompok ' . $data_arisan['nm_kelompok'] . ' - Undian Ke- ' . $data_jadwal['undian_ke'],
            'data_arisan'      => $data_arisan,
            'data_laporan'     => $data_laporan,
            'data_jadwal'      => $data_jadwal,
            'ttl_lelang'       => $ttl_lelang,
            'data_pemenang'    => $data_rinci_laporan_pemenang,
            'lelang_tertinggi' => $lelang_tertinggi,
            'data_petugas'     => $data_petugas,
            'jml_anggota'      => $jml_anggota
        );
        // echo '<pre>';
        // var_dump($data);
        // die;
        $file_pdf = date('ym') . '_' . $regist_arisan;
        $paper = 'A4';
        $orientation = "portrait";
        $html = $this->load->view('document/laporan/arisan/motor/laporan_bulanan_arisan_motor', $data, true);
        $lokasi_file = 'assets/laporan/arisan/motor/';
        $data_edit_laporan = array(
            'document' => $file_pdf . '.pdf'
        );
        $this->db->where('id', $kd_laporan_arisan);
        $this->db->update('lap_arisan', $data_edit_laporan);
        $this->pdfgenerator->generate($html, $file_pdf, $paper, $lokasi_file, $orientation);
    }
}

/* End of file ControllerLaporanMotor.php and path \application\controllers\manager\laporan\arisan\ControllerLaporanMotor.php */