<?php

namespace App\Controllers\Api;

use CodeIgniter\RESTful\ResourceController;
use CodeIgniter\API\ResponseTrait;
use App\Models\UserModel;

class Auth extends ResourceController
{
    use ResponseTrait;

    public function login()
    {
        $userModel = new UserModel();
        
        // Menerima input dari aplikasi Flutter
        $emailOrWa = $this->request->getVar('username'); // User bisa login pakai Email atau No WA
        $password  = $this->request->getVar('password');

        // Validasi jika input kosong
        if(empty($emailOrWa) || empty($password)) {
            return $this->failValidationErrors('Email/No. WhatsApp dan Kata Sandi harus diisi');
        }

        // Cari pengguna berdasarkan email ATAU nomor WA
        $user = $userModel->where('email', $emailOrWa)
                          ->orWhere('no_wa', $emailOrWa)
                          ->first();

        // Jika data pengguna tidak ditemukan
        if (!$user) {
            return $this->failNotFound('Akun tidak ditemukan. Silakan daftar terlebih dahulu.');
        }

        // Verifikasi Kata Sandi (Mencocokkan input dengan hash di database)
        if (password_verify($password, $user['kata_sandi'])) {
            
            // Siapkan data yang akan dikirim ke Flutter (JANGAN kirim kata sandi)
            $dataResponse = [
                'id_pengguna' => $user['id_pengguna'],
                'nama'        => $user['nama'],
                'no_wa'       => $user['no_wa'],
                'email'       => $user['email'],
                'peran'       => $user['peran'] // 'admin' atau 'pelanggan'
            ];

            return $this->respond([
                'status'  => 200,
                'error'   => false,
                'message' => 'Login Berhasil',
                'data'    => $dataResponse
            ], 200);

        } else {
            // Jika password salah
            return $this->fail('Kata sandi yang Anda masukkan salah', 401);
        }
    }
    
    // ... (kode fungsi login yang sudah ada) ...

    public function register()
    {
        $userModel = new UserModel();
        
        $nama      = $this->request->getVar('nama');
        $no_wa     = $this->request->getVar('no_wa');
        $email     = $this->request->getVar('email');
        $password  = $this->request->getVar('kata_sandi');

        // 1. Validasi Input Kosong
        if(empty($nama) || empty($no_wa) || empty($email) || empty($password)) {
            return $this->failValidationErrors('Semua kolom (Nama, WA, Email, Kata Sandi) wajib diisi');
        }

        // 2. Cek apakah Email atau No WA sudah terdaftar
        $cekEmail = $userModel->where('email', $email)->first();
        if ($cekEmail) return $this->fail('Email sudah terdaftar. Silakan gunakan email lain.', 409);
        
        $cekWa = $userModel->where('no_wa', $no_wa)->first();
        if ($cekWa) return $this->fail('Nomor WhatsApp sudah terdaftar.', 409);

        // 3. Hash Password & Simpan
        $dataSimpan = [
            'nama'       => $nama,
            'no_wa'      => $no_wa,
            'email'      => $email,
            'kata_sandi' => password_hash($password, PASSWORD_BCRYPT), // Enkripsi password
            'peran'      => 'pelanggan' // Default selalu pelanggan
        ];

        if ($userModel->insert($dataSimpan)) {
            return $this->respondCreated([
                'status'  => 201,
                'error'   => false,
                'message' => 'Registrasi berhasil. Silakan login.'
            ]);
        } else {
            return $this->failServerError('Gagal menyimpan data pengguna');
        }
    }
}