<?php

use Google\Service\AndroidPublisher\Timestamp;

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

class Insert_model extends CI_Model
{
    // Menu Kelola Data
    // Bagian Marketing
    function simpanPetugasMarketing($inputan)
    {
        $config['upload_path']   = './assets/ptgs_id';
        $config['allowed_types'] = 'jpg|jpeg|png';
        $config['encrypt_name']  = true;
        $config['overwrite']     = true;
        $config['quality']       = '50%';
        $config['max_size']      = 10024; // 10MB
        $this->load->library('upload', $config);
        if (!$this->upload->do_upload('foto_ktp')) :
            $data_login = array(
                'id_role' => 9,
                'email' => $inputan['email'],
                'username' => $inputan['username'],
                'nm_panggilan' => $inputan['nm_panggilan'],
                'status_akun'  => 'AKTIF'
            );
            $this->db->insert('sistem_login', $data_login);
            $cek_login = $this->db->get_where('sistem_login', ['email' => $inputan['email']])->row_array();
            $data_identitas = array(
                'login_id' => $cek_login['id'],
                'nik' => $inputan['nik'],
                'nm_lengkap' => $inputan['nm_lengkap'],
                'jk' => $inputan['jk'],
                'tempat_lahir' => $inputan['tempat_lahir'],
                'tgl_lahir' => $inputan['tgl_lahir'],
                'alamat' => $inputan['alamat'],
                'no_hp' => $inputan['no_hp']
            );
            $this->db->insert('sistem_identitas', $data_identitas);
        else :
            $_FILES['file']['name'] = $_FILES['foto_ktp']['name'];
            $_FILES['file']['type'] = $_FILES['foto_ktp']['type'];
            $_FILES['file']['tmp_name'] = $_FILES['foto_ktp']['tmp_name'];
            $_FILES['file']['size'] = $_FILES['foto_ktp']['size'];
            $uploadData = $this->upload->data();
            $data_login = array(
                'id_role' => 9,
                'email' => $inputan['email'],
                'username' => $inputan['username'],
                'nm_panggilan' => $inputan['nm_panggilan'],
                'status_akun'  => 'AKTIF'
            );
            $this->db->insert('sistem_login', $data_login);
            $cek_login = $this->db->get_where('sistem_login', ['email' => $inputan['email']])->row_array();
            $data_identitas = array(
                'login_id' => $cek_login['id'],
                'nik' => $inputan['nik'],
                'nm_lengkap' => $inputan['nm_lengkap'],
                'jk' => $inputan['jk'],
                'tempat_lahir' => $inputan['tempat_lahir'],
                'tgl_lahir' => $inputan['tgl_lahir'],
                'alamat' => $inputan['alamat'],
                'no_hp' => $inputan['no_hp'],
                'foto_ktp' => $uploadData['file_name']
            );
            $this->db->insert('sistem_identitas', $data_identitas);
        endif;
    }
    // Tambah Data Pengajuan Pinjaman Koperasi
    function simpanDataPengajuanKoperasi($data_inputan, $alamat_id)
    {
        // Upload Gambar Dulu
        // Upload KTP
        $config['upload_path']   = './assets/foto_ktp';
        $config['allowed_types'] = 'jpg|jpeg|png';
        $config['encrypt_name']  = true;
        $config['overwrite']     = true;
        $config['quality']       = '50%';
        $config['max_size']      = 10024; // 10MB
        $this->load->library('upload', $config);
        if (!$this->upload->do_upload('foto_ktp')) :
            $this->session->set_flashdata('pesan_gagal', '<div class="alert alert-danger" id="pesan_gagal" role="alert">Foto KTP Tidak Berhasil di Upload!</div>');
            redirect('marketing/kegiatan/pengajuan_pinjaman');
        else :
            $_FILES['file']['name'] = $_FILES['foto_ktp']['name'];
            $_FILES['file']['type'] = $_FILES['foto_ktp']['type'];
            $_FILES['file']['tmp_name'] = $_FILES['foto_ktp']['tmp_name'];
            $_FILES['file']['size'] = $_FILES['foto_ktp']['size'];
            $uploadDataKTP = $this->upload->data();
            $data_anggota = array(
                'nik'            => $data_inputan['nik'],
                'nm_anggota'     => $data_inputan['nm_anggota'],
                'jk'             => $data_inputan['jk'],
                'alamat_lengkap' => $data_inputan['alamat_lengkap'],
                'nm_rt'          => $data_inputan['nm_rt'],
                'nm_rw'          => $data_inputan['nm_rw'],
                'id_alamat'      => $alamat_id,
                'tempat_lahir'   => $data_inputan['tempat_lahir'],
                'tgl_lahir'      => $data_inputan['tgl_lahir'],
                'no_hp'          => $data_inputan['no_hp'],
                'pekerjaan'      => $data_inputan['pekerjaan'],
                'suami_istri'    => $data_inputan['suami_istri'],
                'foto_ktp'       => $uploadDataKTP['file_name'],
                'status_anggota' => 'CALON_ANGGOTA'
            );
            $this->db->insert('anggota', $data_anggota);
        endif;
        $cek_anggota = $this->db->get_where('anggota', ['nik' => $data_inputan['nik']])->row_array();
        // Cek KK
        $cek_kk = $this->db->get_where('anggota_keluarga', ['nomor_kk' => $data_inputan['nomor_kk']])->row_array();
        if ($cek_kk > 0) :
            $data_detail_keluarga = array(
                'kk_id' => $data_inputan['nomor_kk'],
                'anggota_id' => $cek_anggota['id'],
                'status_keluarga' => 'anak'
            );
            $this->db->insert('anggota_keluarga_detail', $data_detail_keluarga);
            $data_keluarga = array(
                'jml_keluarga' => $cek_kk['jml_keluarga'] + 1
            );
            $this->db->where('nomor_kk', $data_inputan['nomor_kk']);
            $this->db->update('anggota_keluarga', $data_keluarga);
        else :
            $data_keluarga = array(
                'nomor_kk' => $data_inputan['nomor_kk'],
                'anggota_id' => $cek_anggota['id'],
                'jml_keluarga' => 1
            );
            $this->db->insert('anggota_keluarga', $data_keluarga);
            $data_detail_keluarga = array(
                'kk_id' => $data_inputan['nomor_kk'],
                'anggota_id' => $cek_anggota['id'],
                'status_keluarga' => 'suami_istri'
            );
            $this->db->insert('anggota_keluarga_detail', $data_detail_keluarga);
        endif;
        $anggota_id = $cek_anggota['id'];
        return $anggota_id;
    }
    // Pengajuan pinjaman
    function tambahPengajuanPinjaman($detail_kontrak)
    {
        if (htmlspecialchars($this->input->post('pakai_jaminan')) == 'N') :
            $jaminan        = 'N';
            $status_kontrak = 'KONFIRMASI';
        else :
            $jaminan        = 'Y';
            $status_kontrak = 'PROSES';
        endif;
        $data_kontrak = array(
            'id'             => $detail_kontrak['id'],
            'anggota_id'     => $detail_kontrak['anggota_id'],
            'aturan_id'      => $detail_kontrak['aturan_id'],
            'pokok_pinjaman' => $detail_kontrak['pokok_pinjaman'],
            'bsr_admin'      => $detail_kontrak['bsr_admin'],
            'bsr_rk'         => $detail_kontrak['bsr_rk'],
            'bsr_pokok'      => $detail_kontrak['bsr_pokok'],
            'bsr_simpanan'   => $detail_kontrak['bsr_simpanan'],
            'bsr_jasa'       => $detail_kontrak['bsr_jasa'],
            'bsr_angsuran'   => $detail_kontrak['bsr_angsuran'],
            'tempo_pinjaman' => $detail_kontrak['tempo_pinjaman'],
            'ttl_bayar'      => $detail_kontrak['ttl_bayar'],
            'jaminan'        => $jaminan,
            'status_kontrak' => $status_kontrak,
            'login_id'       => $detail_kontrak['login_id']
        );
        $this->db->insert('p_koperasi_kontrak', $data_kontrak);
        $data_progress = array(
            'kontrak_id' => $detail_kontrak['id'],
            'tgl_pengajuan' => date('Y-m-d')
        );
        if (htmlspecialchars($this->input->post('pakai_jaminan')) == 'Y') :
            $data_jaminan = array(
                'kontrak_id' =>  $detail_kontrak['id'],
                'nm_agungan' => htmlspecialchars($this->input->post('tambah_pakai_jaminan'))
            );
            $this->db->insert('p_koperasi_agungan', $data_jaminan);
        endif;
        $this->db->insert('p_koperasi_progres', $data_progress);
    }
    function tambahPengajuanPinjamanMingguan($detail_kontrak)
    {
        if (htmlspecialchars($this->input->post('pakai_jaminan')) == 'N') :
            $jaminan        = 'N';
            $status_kontrak = 'TERIMA';
        else :
            $jaminan        = 'Y';
            $status_kontrak = 'PROSES';
        endif;
        $data_kontrak = array(
            'id'             => $detail_kontrak['id'],
            'anggota_id'     => $detail_kontrak['anggota_id'],
            'aturan_id'      => $detail_kontrak['aturan_id'],
            'pokok_pinjaman' => $detail_kontrak['pokok_pinjaman'],
            'bsr_admin'      => $detail_kontrak['bsr_admin'],
            'bsr_rk'         => $detail_kontrak['bsr_rk'],
            'bsr_pokok'      => $detail_kontrak['bsr_pokok'],
            'bsr_simpanan'   => $detail_kontrak['bsr_simpanan'],
            'bsr_jasa'       => $detail_kontrak['bsr_jasa'],
            'bsr_angsuran'   => $detail_kontrak['bsr_angsuran'],
            'tempo_pinjaman' => $detail_kontrak['tempo_pinjaman'],
            'ttl_bayar'      => $detail_kontrak['ttl_bayar'],
            'jaminan'        => $jaminan,
            'status_kontrak' => $status_kontrak,
            'login_id'       => $detail_kontrak['login_id']
        );
        $this->db->insert('p_koperasi_kontrak', $data_kontrak);
        $data_progress = array(
            'kontrak_id' => $detail_kontrak['id'],
            'tgl_pengajuan' => date('Y-m-d')
        );
        if (htmlspecialchars($this->input->post('pakai_jaminan')) == 'Y') :
            $data_jaminan = array(
                'kontrak_id' =>  $detail_kontrak['id'],
                'nm_agungan' => htmlspecialchars($this->input->post('tambah_pakai_jaminan'))
            );
            $this->db->insert('p_koperasi_agungan', $data_jaminan);
        endif;
        $this->db->insert('p_koperasi_progres', $data_progress);
    }
    function tambahPengajuanPinjamanMusiman($detail_kontrak)
    {
        if (htmlspecialchars($this->input->post('pakai_jaminan')) == 'N') :
            $jaminan        = 'N';
        else :
            $jaminan        = 'Y';
        endif;
        $data_kontrak = array(
            'id'             => $detail_kontrak['id'],
            'anggota_id'     => $detail_kontrak['anggota_id'],
            'aturan_id'      => $detail_kontrak['aturan_id'],
            'pokok_pinjaman' => $detail_kontrak['pokok_pinjaman'],
            'bsr_admin'      => $detail_kontrak['bsr_admin'],
            'bsr_rk'         => $detail_kontrak['bsr_rk'],
            'bsr_pokok'      => $detail_kontrak['bsr_pokok'],
            'bsr_simpanan'   => $detail_kontrak['bsr_simpanan'],
            'bsr_jasa'       => $detail_kontrak['bsr_jasa'],
            'bsr_angsuran'   => $detail_kontrak['bsr_angsuran'],
            'tempo_pinjaman' => $detail_kontrak['tempo_pinjaman'],
            'ttl_bayar'      => $detail_kontrak['ttl_bayar'],
            'jaminan'        => $jaminan,
            'status_kontrak' => $detail_kontrak['status_kontrak'],
            'login_id'       => $detail_kontrak['login_id']
        );
        $this->db->insert('p_koperasi_kontrak', $data_kontrak);
        $data_progress = array(
            'kontrak_id' => $detail_kontrak['id'],
            'tgl_pengajuan' => date('Y-m-d')
        );
        if (htmlspecialchars($this->input->post('pakai_jaminan')) == 'Y') :
            $data_jaminan = array(
                'kontrak_id' =>  $detail_kontrak['id'],
                'nm_agungan' => htmlspecialchars($this->input->post('tambah_pakai_jaminan'))
            );
            $this->db->insert('p_koperasi_agungan', $data_jaminan);
        endif;
        $this->db->insert('p_koperasi_progres', $data_progress);
    }
    // Menambahkan kas keluar koperasi pinjaman
    function pencairanKasKeluar()
    {
        $cek_kontrak   = $this->db->get_where('p_koperasi_kontrak', ['id' => htmlspecialchars($this->input->post('kontrak_id'))])->row_array();
        $cek_aturan    = $this->db->get_where('p_koperasi_aturan', ['id' => $cek_kontrak['aturan_id']])->row_array();
        $cek_progress  = $this->db->get_where('p_koperasi_progres', ['kontrak_id' => htmlspecialchars($this->input->post('kontrak_id'))])->row_array();
        $data_kas = array(
            'id'              => date('ymdhis'),
            'produk_id'       => $cek_aturan['produk_id'],
            'anggota_id'      => $cek_kontrak['anggota_id'],
            'tgl_pembayaran'  => date('Y-m-d'),
            'qty_pembayaran'  => 1,
            'ttl_bayar'       => $cek_kontrak['pokok_pinjaman'],
            'status_kas'      => 'OPERASIONAL',
            'status_nota'     => 'TERIMA',
            'petugas'         => $this->session->userdata('isloggedin'),
            'kasir'           => $this->session->userdata('isloggedin'),
            'ket_nota'        => 'Realisasi Pinjaman Nomor Kontrak ' . htmlspecialchars($this->input->post('kontrak_id')),
            'invoice_pdf'     => $cek_progress['bukti_terima']
        );
        $this->db->insert('nota', $data_kas);
        $kas_data = array(
            'id'              => date('ymdhis') . 101,
            'produk_id'       => 10,
            'anggota_id'      => $cek_kontrak['anggota_id'],
            'tgl_pembayaran'  => date('Y-m-d'),
            'qty_pembayaran'  => 1,
            'ttl_bayar'       => $cek_kontrak['pokok_pinjaman'],
            'status_kas'      => 'OPERASIONAL',
            'status_nota'     => 'TERIMA',
            'petugas'         => $this->session->userdata('isloggedin'),
            'kasir'           => $this->session->userdata('isloggedin'),
            'ket_nota'        => 'Realisasi Pinjaman Nomor Kontrak ' . htmlspecialchars($this->input->post('kontrak_id')),
            'invoice_pdf'     => $cek_progress['bukti_terima']
        );
        $this->db->insert('nota', $kas_data);
    }
    function omsetPencairanKasMasuk($nama_file, $cek_kontrak, $cek_aturan)
    {
        $cek_aturan    = $this->db->get_where('p_koperasi_aturan', ['id' => $cek_kontrak['aturan_id']])->row_array();
        $data_kas2 = array(
            'id'              => date('ymdhiss'),
            'produk_id'       => $cek_aturan['produk_id'],
            'anggota_id'      => $cek_kontrak['anggota_id'],
            'tgl_pembayaran'  => date('Y-m-d'),
            'qty_pembayaran'  => 1,
            'ttl_bayar'       => $cek_kontrak['bsr_admin'] + $cek_kontrak['bsr_rk'],
            'status_kas'      => 'OMSET',
            'status_nota'     => 'TERIMA',
            'petugas'         => $this->session->userdata('isloggedin'),
            'kasir'           => $this->session->userdata('isloggedin'),
            'ket_nota'        => 'Biaya Admin dan RK Pinjaman Nomor Kontrak ' . htmlspecialchars($this->input->post('kontrak_id')),
            'invoice_pdf'     => $nama_file
        );
        $this->db->insert('nota', $data_kas2);
        $kas2_data = array(
            'id'              => date('ymdhiss') . 110,
            'produk_id'       => 10,
            'anggota_id'      => $cek_kontrak['anggota_id'],
            'tgl_pembayaran'  => date('Y-m-d'),
            'qty_pembayaran'  => 1,
            'ttl_bayar'       => $cek_kontrak['bsr_admin'] + $cek_kontrak['bsr_rk'],
            'status_kas'      => 'OMSET',
            'status_nota'     => 'TERIMA',
            'petugas'         => $this->session->userdata('isloggedin'),
            'kasir'           => $this->session->userdata('isloggedin'),
            'ket_nota'        => 'Biaya Admin dan RK Pinjaman Nomor Kontrak ' . htmlspecialchars($this->input->post('kontrak_id')),
            'invoice_pdf'     => $nama_file
        );
        $this->db->insert('nota', $kas2_data);
    }
    function tambah_detail_anggota_keluarga($data_inputan)
    {
        $data = array(
            'kk_id'           => $data_inputan['no_kk'],
            'anggota_id'      => $data_inputan['id_anggota'],
            'status_keluarga' => 'anak'
        );
        $this->db->insert('anggota_keluarga_detail', $data);
    }
    function tambah_anggota_keluarga($data_inputan)
    {
        $data_kk = array(
            'nomor_kk'     => $data_inputan['no_kk'],
            'anggota_id'   => $data_inputan['id_anggota'],
            'jml_keluarga' => 1
        );
        $this->db->insert('anggota_keluarga', $data_kk);
        $data = array(
            'kk_id'           => $data_inputan['no_kk'],
            'anggota_id'      => $data_inputan['id_anggota'],
            'status_keluarga' => 'suami_istri'
        );
        $this->db->insert('anggota_keluarga_detail', $data);
        $this->db->where('kk_id', $data_inputan['no_kk_lama']);
        $this->db->delete('anggota_keluarga_detail');
        $this->db->where('nomor_kk', $data_inputan['no_kk_lama']);
        $this->db->delete('anggota_keluarga');
    }
    // Tambah Nota Angsuran Pinjaman
    function md_NotaAngsuran($angsuran_id, $nomor_invoice, $data_aturan, $data_kontrak, $status_nota)
    {
        $data_nota = array(
            'id'             => $nomor_invoice,
            'produk_id'      => $data_aturan['produk_id'],
            'anggota_id'     => $data_kontrak['anggota_id'],
            'tgl_pembayaran' => date('Y-m-d'),
            'qty_pembayaran' => 1,
            'ttl_bayar'      => $data_kontrak['bsr_angsuran'],
            'status_kas'     => 'MASUK',
            'status_nota'    => 'PROSES',
            'petugas'        => $this->session->userdata('isloggedin')
        );
        $this->db->insert('nota', $data_nota);
        $data_rincian_nota = array(
            'nota_id'        => $nomor_invoice,
            'angsuran_id'    => $angsuran_id,
            'bayar'          => $data_kontrak['bsr_angsuran'],
            'status_bayar'   => $status_nota
        );
        $this->db->insert('p_koperasi_nota', $data_rincian_nota);
    }
}