<?php

namespace App\Controllers\admin;

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


class UserController extends BaseController
{



    public function index()
    {
        $userModel = new UserModel();
        $data = $userModel->findAll();
        return view('admin/user/index', [
            'user' => $data,
            'aktif' => 'user'
        ]);
    }
    public function create()
    {
        return view('admin/user/add', [
            'aktif' => 'user'
        ]);
    }
    public function store()
    {

        // Rules untuk validasi
        $validationRules = [
            'nama_admin' => 'required',
            'email_admin' => 'required|valid_email|is_unique[user.email_admin]',
            'password_admin' => 'required|min_length[6]',
            'gambar_admin' => 'uploaded[gambar_admin]|max_size[gambar_admin,1024]|is_image[gambar_admin]',
        ];
        //Validasi input
        if (!$this->validate($validationRules)) {
            return redirect()->back()->withInput()->with('errors', $this->validator->getErrors());
        }
        $Model = new UserModel();
        // Unggah gambar
        $gambarUser = $this->request->getFile('gambar_admin');
        $newGambarName = $gambarUser->getRandomName();
        $gambarUser->move(FCPATH . 'foto_user', $newGambarName);

        // Simpan data user
        $data = [
            'nama_admin' => $this->request->getPost('nama_admin'),
            'email_admin' => $this->request->getPost('email_admin'),
            'password_admin' => password_hash($this->request->getPost('password_admin'), PASSWORD_DEFAULT),
            'gambar_admin' => $newGambarName,
        ];

        //print_r($data);
        $Model->insert($data);
        //print_r($data);
        return redirect()->to(base_url('user'))->with('success', 'User berhasil ditambahkan.');
    }

    public function edit($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('user'))->with('error', 'ID tidak valid.');
        }

        $userModel = new UserModel();
        $user = $userModel->find($id);

        // Periksa apakah user dengan ID tersebut tidak ditemukan
        if (!$user) {
            session()->setFlashdata('error', 'Data tidak ditemukan');
            return redirect()->to(base_url('user'))->with('error', 'User tidak ditemukan.');
        }

        return view('admin/user/edit', [
            'user' => $user,
            'aktif' => 'user'
        ]);
    }
    public function update($id)
    {
        $validationRules = [
            'nama_admin' => 'required',
            'password_admin' => 'required|min_length[6]',
            'email_admin' => 'required|valid_email',
            'gambar_admin' => 'uploaded[gambar_admin]|max_size[gambar_admin,1024]|is_image[gambar_admin]',
        ];

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

        $userModel = new UserModel();
        $user = $userModel->find($id);

        $gambar = $this->request->getFile('gambar_admin');
        if ($gambar->isValid() && !$gambar->hasMoved()) {
            $newGambarName = $gambar->getRandomName();
            $gambar->move(FCPATH . 'foto_user', $newGambarName);
            unlink(FCPATH . 'foto_user/' . $user->gambar_admin); // Hapus gambar lama
        } else {
            $newGambarName = $user->gambar_admin;
        }

        $data = [
            'nama_admin' => $this->request->getPost('nama_admin'),
            'password_admin' => password_hash($this->request->getPost('password_admin'), PASSWORD_DEFAULT),
            'email_admin' => $this->request->getPost('email_admin'),
            'gambar_admin' => $newGambarName,
        ];
        unset($data['_method']);
        $userModel->update($id, $data);

        return redirect()->to(base_url('user'))->with('success', 'User berhasil diupdate.');
    }

    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('user'))->with('error', 'ID tidak valid.');
        }

        $userModel = new UserModel();
        $user = $userModel->find($id);

        // Periksa apakah user dengan ID tersebut tidak ditemukan
        if (!$user) {
            session()->setFlashdata('error', 'Data tidak ditemukan');
            return redirect()->to(base_url('user'))->with('error', 'User tidak ditemukan.');
        }

        // Hapus gambar terkait
        $gambarPath = FCPATH . 'foto_admin/' . $user->gambar_admin;
        if (file_exists($gambarPath)) {
            unlink($gambarPath);
        }
        $userModel->delete($id);
        return redirect()->to(base_url('user'))->with('success', 'User berhasil dihapus.');


        // Hapus data user dari database



    }
}