<?php

namespace App\Http\Controllers\Admin;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use App\Models\Syarikat;
use App\Models\LesenPenjaja;
use App\Models\BilPelbagai;
use App\Models\BilPelbagaiItem;
use App\Models\EpbtBpBil;
use App\Models\EpbtEcasResit;
use App\Models\GrabResitLesen;
use Auth;

class DashboardController extends Controller
{
    //
    public function utama(Request $request, $ctahun=''){
        if($ctahun == ''){
            $ctahun = date('Y');
        }

        $permohonans = LesenPenjaja::whereYear('tarikhmohon', $ctahun)->get();

        $countKPI = LesenPenjaja::whereYear('tarikhlulus', $ctahun)
                ->whereRaw('DATEDIFF(tarikhlulus, tarikhmohon) > 14')
                ->count();

        //dapatkan status bayaran untuk update mana yg tgu wang proses
        $semakresits = LesenPenjaja::where('status_progress', 'LIKE', 'menunggu bayaran proses')->get();
        
        foreach($semakresits as $semakresit){
            $bil_p = BilPelbagai::where('jenis_bil', 'wang proses')->where('lesen_penjaja_id', $semakresit->id)->first();
            // dd($semakresit,$bil_p);
            if(!is_null(optional($bil_p)->no_akaun_bilpelbagai)){
                $bp_bayar = EpbtEcasResit::whereHas('resitItems', function($query) use ($bil_p){
                    $query->where('noakaun', $bil_p->no_akaun_bilpelbagai);
                })->select('noresit', 'tarikh','amaun')
                ->orderBy('tarikh')
                ->first();

                if(!is_null($bp_bayar)){  //cek no resit daripada epbt..klu ada, kita simpan rekod    
                    $bil_p->dt_bayar = $bp_bayar->tarikh; 
                    $bil_p->no_resit = $bp_bayar->noresit;
                    $bil_p->amaun_bayar = $bp_bayar->amaun;
                    $bil_p->save();

                    $semakresit->status_progress = 'semakan bayaran proses';
                    $semakresit->save();
                }    
            }
        }
        //end update status wang proses

        $txt_bayar = '';
        //senarai permohonan baru
        $baru = LesenPenjaja::where('status_progress', 'baru')->count();
        //senarai belum bayar wang proses
        $belum_bayar_proses = LesenPenjaja::where('status_progress', 'menunggu bayaran proses')->count();
        //senarai dah bayar wang proses
        $bayar_proses = LesenPenjaja::where('status_progress', 'semakan bayaran proses')->count();
        //dapatkan yang perlu lawatan tapak
        $periksa_tapak = LesenPenjaja::where('status_progress', 'LIKE', 'lawatan tapak')->count();
        //senarai tiada lesen
        $tiada_lesen = LesenPenjaja::whereIn('status_progress', ['ulasan pegawai', 'ulasan pengarah', 'sokong dibawa ke mesyuarat'])->whereNull('no_akaun_lesen')->count();
        //dapatkan yang perlu lawatan tapak
        $pegawai_belum_ulas = LesenPenjaja::where('status_progress', 'LIKE', 'ulasan pegawai')->count();
        //dapatkan yang perlu lawatan tapak
        $pengarah_belum_ulas = LesenPenjaja::where('status_progress', 'LIKE', 'ulasan pengarah')->count();
        //dapatkan yang perlu lawatan tapak
        $bawa_mesyuarat = LesenPenjaja::where('status_progress', 'LIKE', 'sokong dibawa ke mesyuarat')->count();
        //dapatkan yang perlu lawatan tapak
        $keputusan_mesyuarat = LesenPenjaja::where('status_progress', 'LIKE', 'menunggu keputusan mesyuarat')->count();
        //dapatkan yang belum bayar lesen
        $hutang_lesen = LesenPenjaja::whereNotNull('no_akaun_lesen')->where('no_akaun_lesen', '<>', '')->whereNull('lesen_no_resit')->count();
        //dapatkan yang perlu lawatan tapak
        $selesai = LesenPenjaja::where('status_progress', 'LIKE', 'keputusan diperolehi')->whereNotNull('status_mesyuarat')->count();

        return view('admin.penjaja.dashboard', compact('ctahun', 'permohonans', 'countKPI', 'baru', 'belum_bayar_proses', 'bayar_proses', 'periksa_tapak', 'pegawai_belum_ulas', 'pengarah_belum_ulas', 'bawa_mesyuarat', 'keputusan_mesyuarat', 'hutang_lesen', 'selesai', 'tiada_lesen'));

    }

    public function carianutama(Request $request){
        if($request->input('ctahun') == ''){
            $ctahun = date('Y');
        }
        else{
            $ctahun = $request->input('ctahun');
        }

        $permohonans = LesenPenjaja::whereYear('tarikhmohon', $ctahun)->get();

        $countKPI = LesenPenjaja::whereYear('tarikhlulus', $ctahun)
                ->whereRaw('DATEDIFF(tarikhlulus, tarikhmohon) > 14')
                ->count();

                
                    
        return view('admin.penjaja.dashboard', compact('ctahun', 'permohonans', 'countKPI'));

    }
    
    public function senaraiLesenBelumBayar(Request $request){

        $senarais = LesenPenjaja::whereNotNull('no_akaun_lesen')->where('no_akaun_lesen', '<>', '')->whereNull('lesen_no_resit')->get();        
               
                    
        return view('admin.penjaja.senarailesenbelumbayar', compact('senarais'));

    }
    
    public function semakBayaranLesen(Request $request){


        try {
            DB::connection('second_mysql')->getPdo();

            $grab = GrabResitLesen::create([
                'tarikh_grab' => now(),
                'jumlah_data' => 0,
                'admin_id' => Auth::id(),
            ]);

            $jumlah = 0;

            $permohonans = LesenPenjaja::whereNotNull('no_akaun_lesen')->where('no_akaun_lesen', '<>', '')->whereNull('lesen_no_resit')->get();        
            foreach($permohonans as $semakresit){
                
                $bp_bayar = EpbtEcasResit::whereHas('resitItems', function($query) use ($semakresit){
                    $query->where('noakaun', $semakresit->no_akaun_lesen);
                })->select('noresit', 'tarikh','amaun')
                ->orderBy('tarikh')
                ->first();

                if(!is_null($bp_bayar)){  //cek no resit daripada epbt..klu ada, kita simpan rekod    
                    $semakresit->lesen_dt_bayar = $bp_bayar->tarikh; 
                    $semakresit->lesen_no_resit = $bp_bayar->noresit;
                    $semakresit->lesen_amaun = $bp_bayar->amaun;
                    $semakresit->lesen_grab = now();

                    $semakresit->save();

                    $jumlah++;
                }                
            }   
            
            $grab->jumlah_data = $jumlah;
            $grab->save();
            
        } catch (\Exception $e) {
            //return back()->with('error', 'Sambungan ke pangkalan data gagal. Sila cuba sebentar lagi.');
        }

                    
        return redirect()->route('pt.lesenhutang')->with('success', 'Sebanyak '.$jumlah.' lesen telah menerima bayaran.');;

    }
    
}
