<?php

namespace App\Http\Controllers\Karyawan;

use App\Http\Controllers\Controller;
use App\Models\Lembur;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Carbon\Carbon;

class LemburController extends Controller
{
    public function index()
    {
        $karyawan = Auth::user()->karyawan;
        $lemburs  = Lembur::where('karyawan_id', $karyawan->id)
                    ->orderByDesc('tanggal')->orderByDesc('created_at')->get();

        // Rekap total jam lembur bulan ini (hanya yang disetujui)
        $totalMenitBulanIni = Lembur::where('karyawan_id', $karyawan->id)
            ->where('status', 'disetujui')
            ->whereMonth('tanggal', now()->month)
            ->whereYear('tanggal', now()->year)
            ->sum('durasi_menit');

        $totalMenitAll = Lembur::where('karyawan_id', $karyawan->id)
            ->where('status', 'disetujui')->sum('durasi_menit');

        return view('karyawan.lembur.index', compact('lemburs', 'totalMenitBulanIni', 'totalMenitAll'));
    }

    public function create()
    {
        return view('karyawan.lembur.create');
    }

    public function store(Request $request)
    {
        $request->validate([
            'tanggal'    => 'required|date|after_or_equal:today',
            'jam_mulai'  => 'required|date_format:H:i',
            'jam_selesai'=> 'required|date_format:H:i',
            'keterangan' => 'required|string|max:500',
        ]);

        $karyawan    = Auth::user()->karyawan;
        $durasi      = Lembur::hitungDurasi($request->jam_mulai, $request->jam_selesai);

        if ($durasi < 30) {
            return back()->withErrors(['jam_selesai' => 'Durasi lembur minimal 30 menit.'])->withInput();
        }

        // Cek tidak ada pengajuan lembur di tanggal yang sama
        $sudahAda = Lembur::where('karyawan_id', $karyawan->id)
            ->where('tanggal', $request->tanggal)
            ->where('status', '!=', 'ditolak')
            ->exists();

        if ($sudahAda) {
            return back()->withErrors(['tanggal' => 'Kamu sudah punya pengajuan lembur di tanggal ini.'])->withInput();
        }

        Lembur::create([
            'karyawan_id' => $karyawan->id,
            'tanggal'     => $request->tanggal,
            'jam_mulai'   => $request->jam_mulai . ':00',
            'jam_selesai' => $request->jam_selesai . ':00',
            'durasi_menit'=> $durasi,
            'keterangan'  => $request->keterangan,
            'status'      => 'pending',
        ]);

        return redirect()->route('karyawan.lembur.index')
            ->with('success', 'Pengajuan lembur berhasil dikirim dan menunggu persetujuan.');
    }

    public function show($id)
    {
        $karyawan = Auth::user()->karyawan;
        $lembur   = Lembur::where('karyawan_id', $karyawan->id)->findOrFail($id);
        return view('karyawan.lembur.show', compact('lembur'));
    }
}