<?php

namespace App\Http\Controllers;

use App\Models\Apresiasi;
use App\Models\Pelaporan;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;

class ApresiasiController extends Controller
{
    public function userIndex(Request $request){
        $user = $request->user();
        if ($user->role == 'admin') {
            // Jika pengguna adalah admin, hitung total berdasarkan tindakan_id
            $laporan = Pelaporan::with('tindakan','user')->get();

        } elseif ($user->role == 'user') {
            // Jika pengguna adalah pengguna biasa, hitung riwayat pelaporan milik pengguna tersebut
            $laporan = Pelaporan::where('user_id', $user->id)->get();
            // Menghitung total riwayat pelaporan yang dimiliki oleh pengguna
            $count = $laporan->count();
        }

        $apresiasi = Apresiasi::query();

        if ($request->has('search')) {
            $apresiasi->where('judul', 'LIKE', '%' . $request->search . '%');
        }

        $apresiasi = $apresiasi->get();
        return view('users.apresiasi.index', compact('laporan', 'apresiasi'));
    }

    public function userCreate()
    {
        $laporan = Pelaporan::with('tindakan','user')->get();

        return view('users.apresiasi.create',compact('laporan'));
    }
    public function userStore(Request $request)
    {
        $request->validate([
            'judul' => 'required',
            'deskripsi' => 'required',
            'lokasi' => 'required',
            'tanggal' => 'required',
            'foto' => 'nullable|image|mimes:jpeg,png,jpg,gif,pdf',
        ],[
            'judul.required' => 'Judul Wajib Diisi',
            'deskripsi.required' => 'Deskripsi Wajib Diisi',
            'lokasi.required' => 'Lokasi Wajib Diisi',
            'tanggal.required' => 'Tanggal Wajib Diisi',
            'foto.nullable' => 'Foto Tidak Boleh Kosong',
            'foto.image' => 'Foto Harus Berupa Image ',
            'foto.mimes' => 'Foto Harus JPEG, PNG, JPG, GIF, PDF',
        ]);

        $apresiasi = new Apresiasi();
        $apresiasi->judul = $request->input('judul');
        $apresiasi->deskripsi = $request->input('deskripsi');
        $apresiasi->tanggal = $request->input('tanggal');
        $apresiasi->lokasi = $request->input('lokasi');
        $apresiasi->user_id = Auth::id(); // Set the authenticated user's ID

        if ($request->hasFile('foto')) {
            $fotos = time() . '.' . $request->foto->extension();
            $request->foto->move(public_path('foto'), $fotos);
            $apresiasi->foto = $fotos;
        }

        $apresiasi->save();

        return redirect()->route('apresiasi.userIndex')->with('success', 'Pelaporan Apresiasi berhasil disimpan.');
    }

    public function userEdit($id)
    {
        $laporan = Pelaporan::with('tindakan','user')->get();
        $apresiasi = Apresiasi::find($id);
        return view('users.apresiasi.update', compact('apresiasi', 'laporan'));
    }

    public function userUpdate(Request $request, $id)
    {
        $request->validate([
            'judul' => 'required',
            'deskripsi' => 'required',
            'lokasi' => 'required',
            'tanggal' => 'required',
            'foto' => 'nullable|image|mimes:jpeg,png,jpg,gif,pdf',
        ],[
            'judul.required' => 'Judul Wajib Diisi',
            'deskripsi.required' => 'Deskripsi Wajib Diisi',
            'lokasi.required' => 'Lokasi Wajib Diisi',
            'tanggal.required' => 'Tanggal Wajib Diisi',
            'foto.nullable' => 'Foto Tidak Boleh Kosong',
            'foto.image' => 'Foto Harus Berupa Image ',
            'foto.mimes' => 'Foto Harus JPEG, PNG, JPG, GIF, PDF',
        ]);

        $apresiasi = Apresiasi::find($id);
        $apresiasi->update($request->all());

        if ($request->hasFile('foto')) {
            $fotoPath = $request->file('foto')->store('uploads');
            $apresiasi->foto = $fotoPath;
            $apresiasi->save();
        }

        return redirect()->route('apresiasi.userIndex')->with('success', 'Pelaporan Apresiasi berhasil diperbarui.');
    }

    public function userDestroy($id)
    {
        $apresiasi = Apresiasi::find($id);
        $apresiasi->delete();

        return redirect()->route('apresiasi.userIndex')->with('success', 'Pelaporan Apresiasi berhasil dihapus.');
    }

    public function userShow(Request $request, $id){
        $laporan = Pelaporan::with('tindakan','user')->get();
        $apresiasi = Apresiasi::find($id);
        return view('users.apresiasi.show', compact( 'apresiasi','laporan'));
    }

    public function adminIndex(Request $request)
    {
        $user = $request->user();
        if ($user->role == 'admin') {
            // Jika pengguna adalah admin, hitung total berdasarkan tindakan_id
            $laporan = Pelaporan::with('tindakan','user')->get();

        } elseif ($user->role == 'user') {
            // Jika pengguna adalah pengguna biasa, hitung riwayat pelaporan milik pengguna tersebut
            $laporan = Pelaporan::where('user_id', $user->id)->get();
            // Menghitung total riwayat pelaporan yang dimiliki oleh pengguna
            $count = $laporan->count();
        }

        $apresiasi = Apresiasi::query();

        if ($request->has('search')) {
            $apresiasi->where('judul', 'LIKE', '%' . $request->search . '%');
        }

        $apresiasi = $apresiasi->get();
        return view('admin.apresiasi.index', compact('laporan', 'apresiasi'));
    }

    public function adminShow(Request $request, $id){
        $laporan = Pelaporan::with('tindakan','user')->get();
        $apresiasi = Apresiasi::find($id);
        return view('admin.apresiasi.show', compact( 'apresiasi','laporan'));
    }

    public function adminDestroy($id)
    {
        $apresiasi = Apresiasi::find($id);
        $apresiasi->delete();

        return redirect()->route('apresiasi.adminIndex')->with('success', 'Pelaporan Apresiasi berhasil dihapus.');
    }



}
