<?php

namespace App\Http\Controllers;

use App\Models\ProcessingResultProcess;
use App\Models\ProcessingPengeluaranBahanDetail;
use App\Models\ProcessingPenerimaanBahanDetail;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Log;
use Illuminate\Database\Query\Builder;
use DB;
use Auth;

class ProcessingAnalysisProcessController extends Controller
{
    public function getData(Request $request){
        try {
            $sub = DB::table("processing_result_processes as x")
            ->selectRaw("EXTRACT(MONTH FROM x.document_date) document_date,i.item_code,i.item_name,iu.unit_name,sum(y.qty) qty")
            ->join("processing_result_process_details as y","x.id","=","y.result_process_id")
            ->join("items as i","i.id","=","y.item_id")
            ->join("item_units as iu","iu.id","=","y.unit")
            ->whereBetween("x.document_date",[$request->date_start,$request->date_end])
            ->groupBy("x.document_date","i.item_code","i.item_name","iu.unit_name")->get();

            foreach($sub as $s){
                $s->document_date = $s->document_date.'. '.$this->ubahNamaBulan($s->document_date);
            }
            // $resultProcess = DB::table( DB::raw("({$sub->toSql()})") )
            // ->mergeBindings($sub)
            // ->selectRaw('document_date,item_code,item_name,unit_name,sum(qty) qty')
            // ->groupBy('document_date','item_code','item_name','unit_name')
            // ->get();

            return response()->json($sub);
        } catch (\Exception $e) {
            Log::error('Failed to fetch for processing analysis Process', ['id' => $id, 'error' => $e->getMessage(), 'user_id' => Auth::id()]);
            return response()->json(['error' => 'Failed to fetch processing analysis Process: ' . $e->getMessage()], 500);
        }
    }

    private function ubahNamaBulan($bln){
        switch ($bln) {
            case 1:
                return "Januari";
            case 2:
                return "Febuary";
            case 3:
                return "Maret";
            case 4:
                return "April";
            case 5:
                return "Mei";
            case 6:
                return "Juni";
            case 7:
                return "Juli";
            case 8:
                return "Agustus";
            case 9:
                return "September";
            case 10:
                return "October";
            case 11:
                return "November";
            case 12:
                return "December";
        }
    }
}
