<?php

namespace App\Controllers\admin;

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


class AgendaController extends BaseController
{
    public function index()
    {
        $agendaModel = new AgendaModel();
        $userModel = new UserModel();

        // Ambil semua data agenda
        $agendaData = $agendaModel->findAll();

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

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

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


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

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

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

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

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

        // Ambil data agenda berdasarkan ID
        $agenda = $agendaModel->find($id);

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

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

        $validationRules = [
            'gambar' => 'uploaded[gambar]|max_size[gambar,1024]|is_image[gambar]',
            'tema' => 'required',
            'tempat' => 'required',
            'isi' => 'required',
            'tanggal' => 'required',
            'waktu' => 'required',

        ];

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

        $gambar = $this->request->getFile('gambar');
        if ($gambar->isValid() && !$gambar->hasMoved()) {
            $newGambarName = $gambar->getRandomName();
            $gambar->move(FCPATH . 'foto_agenda', $newGambarName);
            unlink(FCPATH . 'foto_agenda/' . $agenda->gambar); // Hapus gambar lama
        } else {
            $newGambarName = $agenda->gambar;
        }
        $data = [
            'id_admin' => session()->get('id_admin'),
            'tema' => $this->request->getPost('tema'),
            'tempat' => $this->request->getPost('tempat'),
            'isi' => $this->request->getPost('isi'),
            'tanggal' => $this->request->getPost('tanggal'),
            'waktu' => $this->request->getPost('waktu'),
            'gambar' => $newGambarName,
        ];
        unset($data['_method']);
        $agendaModel->update($id, $data);

        //tampil pesan 
        session()->setFlashdata('success', 'Berhasil edit data agenda');
        return redirect()->to(base_url('agenda'));
    }
    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('agenda'))->with('error', 'ID tidak valid.');
        }

        $agendaModel = new AgendaModel();
        $agenda = $agendaModel->find($id);

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