<?php

namespace App\Controllers\admin;

use App\Models\UserModel;
use App\Models\BeritaModel;
use App\Controllers\BaseController;


class BeritaController extends BaseController
{
    public function index()
    {
        $beritaModel = new BeritaModel();
        $userModel = new UserModel();

        // Ambil semua data berita
        $beritaData = $beritaModel->findAll();

        // Ambil semua data user
        $userData = $userModel->findAll();

        // Tampilkan view dengan data berita dan user
        return view('admin/berita/index', [
            'beritaData' => $beritaData,
            'userData' => $userData,
            'aktif' => 'berita'
        ]);
    }
    public function create()
    {

        $userModel = new UserModel();
        $aktif = 'berita';


        // Ambil semua data mata pelajaran
        $userData = $userModel->findAll();
        return view('admin/berita/add', [
            'aktif' => $aktif,
            'userData' => $userData
        ]);
    }
    public function store()
    {

        //validasi 
        $validationRules = [
            'gambar' => 'uploaded[gambar]|max_size[gambar,1024]|is_image[gambar]',
            'judul' => 'required',
            'isi' => 'required',
            'tanggal' => 'required',
            'kategori' => 'required',
        ];

        if (!$this->validate($validationRules)) {
            session()->setFlashdata('error', 'Data tidak valid');
            return redirect()->back()->withInput()->with('errors', $this->validator->getErrors());
        }
        $beritaModel = new BeritaModel();
        // Unggah gambar
        $gambar = $this->request->getFile('gambar');
        $newGambarName = $gambar->getRandomName();
        $gambar->move(FCPATH . 'foto_berita', $newGambarName);
        $data = [
            'id_admin' => session()->get('id_admin'),
            'judul' => $this->request->getPost('judul'),
            'isi' => $this->request->getPost('isi'),
            'kategori' => $this->request->getPost('kategori'),
            'tanggal' => $this->request->getPost('tanggal'),
            'gambar' => $newGambarName,
        ];
        $beritaModel->insert($data);

        //tampil pesan 
        session()->setFlashdata('success', 'Berhasil tambah data berita');
        return redirect()->to(base_url('berita'));
    }

    public function edit($id)
    {
        if (empty($id) || !is_numeric($id)) {
            session()->setFlashdata('error', 'Data tidak valid');
            return redirect()->to(base_url('berita'))->with('error', 'ID tidak valid.');
        }
        $beritaModel = new BeritaModel();
        $userModel = new UserModel();

        // Ambil data berita berdasarkan ID
        $berita = $beritaModel->find($id);

        if (!$berita) {
            session()->setFlashdata('error', 'Data tidak ditemukan');
            return redirect()->to(base_url('berita'))->with('error', 'Berita tidak ditemukan.');
        }

        // Ambil semua data mata pelajaran
        $userData = $userModel->findAll();
        $aktif = 'berita';
        return view('admin/berita/edit', [
            'aktif' => $aktif,
            'berita' => $berita,
            'userData' => $userData
        ]);
    }
    public function update($id)
    {

        $validationRules = [
            'gambar' => 'uploaded[gambar]|max_size[gambar,1024]|is_image[gambar]',
            'judul' => 'required',
            'isi' => 'required',
            'tanggal' => 'required',
            'kategori' => 'required',

        ];

        if (!$this->validate($validationRules)) {
            session()->setFlashdata('error', 'Data tidak valid');
            return redirect()->back()->withInput()->with('errors', $this->validator->getErrors());
        }
        $beritaModel = new BeritaModel();
        $berita = $beritaModel->find($id);

        $gambar = $this->request->getFile('gambar');
        if ($gambar->isValid() && !$gambar->hasMoved()) {
            $newGambarName = $gambar->getRandomName();
            $gambar->move(FCPATH . 'foto_berita', $newGambarName);
            unlink(FCPATH . 'foto_berita/' . $berita->gambar); // Hapus gambar lama
        } else {
            $newGambarName = $berita->gambar;
        }
        $data = [
            'id_admin' => session()->get('id_admin'),
            'judul' => $this->request->getPost('judul'),
            'isi' => $this->request->getPost('isi'),
            'kategori' => $this->request->getPost('kategori'),
            'tanggal' => $this->request->getPost('tanggal'),
            'gambar' => $newGambarName,
        ];
        unset($data['_method']);
        $beritaModel->update($id, $data);

        //tampil pesan 
        session()->setFlashdata('success', 'Berhasil edit data berita');
        return redirect()->to(base_url('berita'));
    }
    public function destroy($id)
    {
        // Periksa apakah ID tidak valid (kosong atau tidak numeric)
        if (empty($id) || !is_numeric($id)) {
            session()->setFlashdata('error', 'Data tidak valid');
            return redirect()->to(base_url('berita'))->with('error', 'ID tidak valid.');
        }

        $beritaModel = new BeritaModel();
        $berita = $beritaModel->find($id);

        // Periksa apakah berita dengan ID tersebut tidak ditemukan
        if (!$berita) {
            session()->setFlashdata('error', 'Data tidak ditemukan');
            return redirect()->to(base_url('berita'))->with('error', 'Berita tidak ditemukan.');
        }
        // Hapus gambar terkait
        $gambarPath = FCPATH . 'foto_berita/' . $berita->gambar;
        if (file_exists($gambarPath)) {
            unlink($gambarPath);
        }
        $beritaModel->delete($id);
        return redirect()->to(base_url('berita'))->with('success', 'Berita berhasil dihapus.');
    }
}