<?php

namespace App\Http\Controllers;

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

class InformasiController extends Controller
{
    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();
        }

        $informasis = Informasi::query();

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

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

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

        return view('admin.informasi.create',compact('laporan'));
    }
    public function adminStore(Request $request)
    {
        $request->validate([
            'judul' => 'required',
            'kategori' => 'required',
            'foto' => 'nullable|image|mimes:jpeg,png,jpg,gif,pdf',
        ],[
            'judul.Required'=>'Judul Wajib Diisi',
            'kategori.Required'=>'Kategori Wajib Diisi',
            'foto.nullable'=>'Foto Tidak Boleh Kosong',
            'foto.image'=>'Foto Harus Berupa Image ',
            'foto.mimes'=>'Foto Harus JPEG,PNG,JPG,GIF,PDF',
        ]);

        $informasi = new Informasi();
        $informasi->judul = $request->input('judul');
        $informasi->kategori = $request->input('kategori');
        if ($request->hasFile('foto')) {
            $fotos = time().'.'.$request->foto->extension();
            $request->foto->move(public_path('foto'), $fotos);
            $informasi->foto = $fotos;
        }

        $informasi->save();

        return redirect()->route('informasi.adminIndex')->with('success', 'Informasi berhasil disimpan.');
    }

    public function adminEdit($id)
    {
        $laporan = Pelaporan::with('tindakan','user')->get();
        $informasis = Informasi::find($id);
        return view('admin.informasi.update', compact('informasis', 'laporan'));
    }

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

        $informasis = Informasi::find($id);

        if (!$informasis) {
            return redirect()->route('informasi.adminIndex')->with('error', 'Informasi tidak ditemukan.');
        }

        $informasis->update($request->all());

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

        return redirect()->route('informasi.adminIndex')->with('success', 'Informasi berhasil diperbarui.');
    }
 
    public function adminDestroy($id)
    {
        $informasis = Informasi::find($id);

        if ($informasis) {
            $informasis->delete();
            return redirect()->route('informasi.adminIndex')->with('success', 'Informasi berhasil dihapus.');
        } else {
            return redirect()->route('informasi.adminIndex')->with('error', 'Informasi tidak ditemukan.');
        }
    }

    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();
        }

        // Menggunakan kueri baru untuk mengambil data dari model Informasi
        $informasis = Informasi::query();

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

        // Mengambil hasil kueri dari model Informasi
        $informasis = $informasis->get();

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


    public function userShow(Request $request, $id)
{
    $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();
    }

    // Menggunakan kueri baru untuk mengambil data dari model Informasi berdasarkan ID
    $informasis = Informasi::findOrFail($id);
    return view('users.informasi.show', compact('laporan', 'informasis'));
}




}
