<?php

namespace App\Http\Controllers;

use App\Models\Pelaporan;
use Illuminate\Http\Request;

class PelaporanController extends Controller
{
    public function index(Request $request)
    {
        $user = $request->user(); // Ambil data pengguna dari request
        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();
        }
        $pelaporan = Pelaporan::query();
        if ($user->role == 'user') {
            $pelaporan->where('user_id', $user->id); // Filter berdasarkan user_id jika pengguna adalah user
        }
        if ($request->has('search')) {
            $pelaporan->where('judul', 'LIKE', '%' . $request->search . '%');
        }
        $pelaporan = $pelaporan->get(); // atau paginate() tergantung kebutuhan Anda

        return view('users.pelaporan.index', compact('pelaporan','laporan'));
    }


    public function create()
    {
        $laporan = Pelaporan::with('tindakan','user')->get();
        return view('users.pelaporan.create', compact('laporan',));
    }

    public function store(Request $request)
    {
        $request->validate([
            'judul' => 'required',
            'keterangan' => 'required',
            'tanggal' => 'required',
            'lokasi' => 'required',
            'status' => 'required',
            'saran' => 'required',
            'foto' => 'nullable|image|mimes:jpeg,png,jpg,gif',
        ],[
            'judul.Required'=>'Judul Wajib Diisi',
            'keterangan.Required'=>'Keterangan Wajib Diisi',
            'tanggal.Required'=>'Tanggal Wajib Diisi',
            'lokasi.Required'=>'Lokasi Wajib Diisi',
            'status.Required'=>'Status Wajib Diisi',
            'saran.Required' => 'Saran Wajib Diisi',
            'foto.nullable'=>'Foto Tidak Boleh Kosong',
            'foto.image'=>'Foto Harus Berupa Image ',
            'foto.mimes'=>'Foto Harus JPEG,PNG,JPG,GIF',
        ]);

        $pelaporan = new Pelaporan();
        $pelaporan->judul = $request->input('judul');
        $pelaporan->keterangan = $request->input('keterangan');
        $pelaporan->tanggal = $request->input('tanggal');
        $pelaporan->lokasi = $request->input('lokasi');
        $pelaporan->saran = $request->input('saran');
        $pelaporan->status = $request->input('status');
        $pelaporan->user_id = auth()->id();
        if ($request->hasFile('foto')) {
            $fotos = time().'.'.$request->foto->extension();
            $request->foto->move(public_path('foto'), $fotos);
            $pelaporan->foto = $fotos;
        }

        $pelaporan->save();

        return redirect()->route('pelaporan.index')->with('success', 'Pelaporan berhasil disimpan.');
    }


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

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

        $pelaporan = Pelaporan::find($id);
        $pelaporan->update($request->all());

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

        return redirect()->route('pelaporan.index')->with('success', 'Pelaporan berhasil diperbarui.');
    }

    public function destroy($id)
    {
        $pelaporan = Pelaporan::find($id);
        $pelaporan->delete();

        return redirect()->route('pelaporan.index')->with('success', 'Pelaporan berhasil dihapus.');
    }
}
