<?php
namespace App\Controllers\Kewilayahan\Sebaran;

use App\Libraries\KpdlLibrary;

class IdentifikasiLapangan extends \App\Controllers\Kewilayahan\Kytp

{

    protected function dataKpdl($request, $bulan)
    {
        $opsiWilZona     = $request->getPost('opsiWilZona');
        $adm4_pcode      = $request->getPost('adm4_pcode') ?? [];
        $id_poly_zona    = $request->getPost('id_poly_zona') ?? [];
        $nip_ar_perekam  = $request->getPost('nip_ar_perekam') ?? [];
        $nip_ar_pengampu = $request->getPost('nip_ar_pengampu') ?? [];

        $db          = \Config\Database::connect();
        $KpdlLibrary = new KpdlLibrary;
        if ($bulan == 'semua') {

            $npwp = $db->table('KPDL_MV_JML_KPDL A')
                ->select('BULAN, SUM(JML) JML')
                ->where("TAHUN =" . date('Y'))
                ->where('BULAN <=', date('m'))
                ->groupBy('BULAN');

            if ($opsiWilZona == 'wilayah') {
                $npwp = $npwp->whereIn('ADM4_PCODE', $adm4_pcode);
            }

            if ($opsiWilZona == 'zona') {
                $npwp = $npwp->whereIn('ID_POLY_ZONA', $id_poly_zona);
            }
            if ($opsiWilZona == 'perekam') {
                $npwp = $npwp->whereIn('NIP_PEREKAM', $nip_ar_perekam);
            }

            if ($opsiWilZona == 'pengampu') {
                $npwp = $npwp->whereIn('NIP_AR_PENGAMPU', $nip_ar_pengampu);
            }

            $npwp = $npwp->getCompiledSelect();

            $data = $db->table('BULAN A')
                ->select("A.KODE as BULAN, C.JML")
                ->join("(" . $npwp . ") C", 'A.KODE = C.BULAN', 'left')
                ->orderBy('BULAN');

            return $KpdlLibrary->single_array($data->get()->getResult(), 'JML');

        } else {
            $tgl_format  = date('Y') . '-' . $bulan . '-' . '01';
            $generateTgl = "SELECT TO_CHAR(LAST_DAY(to_date('" . $tgl_format . "','YYYY-MM-DD')) - level + 1,'DD') AS TGL
                                FROM
                                dual
                                CONNECT BY LEVEL <= (trunc(LAST_DAY(to_date('" . $tgl_format . "','YYYY-MM-DD'))) - to_date('" . $tgl_format . "','YYYY-MM-DD')  + 1)";

            $data = $db->table('KPDL_MV_LOKASI_SUBJEK B')
                ->select("TO_CHAR(CREATION_DATE,'DD') as TGL, COUNT(1) JML")
                ->where("to_char(CREATION_DATE,'YYYY') = ", date('Y'))
                ->where("to_char(CREATION_DATE,'MM') = " . $bulan)
                ->groupBy("TO_CHAR(CREATION_DATE,'DD')");

            if ($opsiWilZona == 'wilayah') {
                $data = $data->whereIn('ADM4_PCODE', $adm4_pcode);
            }

            if ($opsiWilZona == 'zona') {
                $data = $data->whereIn('ID_POLY_ZONA', $id_poly_zona);
            }

            if ($opsiWilZona == 'perekam') {
                $data = $data->whereIn('CREATED_BY', $nip_ar_perekam);
            }

            if ($opsiWilZona == 'pengampu') {
                $data = $data->whereIn('NIP_AR_PENGAMPU', $nip_ar_pengampu);
            }

            $data = $data->getCompiledSelect();

            $dataRet = $db->newQuery()
                ->select("A.TGL, B.JML")
                ->from("(" . $generateTgl . ") A")
                ->join("(" . $data . ") B", "A.TGL = B.TGL", 'left')
                ->orderBy("TGL");

            return $KpdlLibrary->single_array($dataRet->get()->getResult(), 'JML');
        }
    }

    protected function generateSeries($bulan)
    {
        $db          = \Config\Database::connect();
        $tgl_format  = date('Y') . '-' . $bulan . '-' . '01';
        $generateTgl = $db->query("SELECT TO_CHAR(LAST_DAY(to_date('" . $tgl_format . "','YYYY-MM-DD')) - level + 1,'DD') AS TGL
                    FROM
                    dual
                    CONNECT BY LEVEL <= (trunc(LAST_DAY(to_date('" . $tgl_format . "','YYYY-MM-DD'))) - to_date('" . $tgl_format . "','YYYY-MM-DD')  + 1) ORDER BY TGL");

        $data     = $generateTgl->getResult();
        $data_arr = [];
        foreach ($data as $row) {
            array_push($data_arr, $row->TGL);
        }
        return $data_arr;
    }

}