<?php
require_once __DIR__ . '/../models/user.php';

class AuthController {
    private $db;
    private $user;

    public function __construct() {
        $database = new Database();
        $this->db = $database->getConnection();
        $this->user = new User($this->db);
    }

    public function register() {
        $data = json_decode(file_get_contents("php://input"));

        if(!empty($data->name) && !empty($data->email) && !empty($data->password)) {
            $this->user->name = $data->name;
            $this->user->email = $data->email;
            $this->user->password = $data->password;
            $this->user->role = isset($data->role) ? $data->role : 'user';

            if($this->user->emailExists()) {
                http_response_code(400);
                echo json_encode(array("message" => "Email already exists."));
            } else {
                if($this->user->create()) {
                    http_response_code(201);
                    echo json_encode(array(
                        "message" => "User was created.",
                        "user_id" => $this->user->id
                    ));
                } else {
                    http_response_code(503);
                    echo json_encode(array("message" => "Unable to create user."));
                }
            }
        } else {
            http_response_code(400);
            echo json_encode(array("message" => "Unable to create user. Data is incomplete."));
        }
    }

    public function login() {
        $data = json_decode(file_get_contents("php://input"));

        if(!empty($data->phone) && !empty($data->password)) {
            $this->user->phone = $data->phone;

            if($this->user->phoneExists()) {
                if(password_verify($data->password, $this->user->password)) {
                    // Generate JWT token (simplified for demo)
                    $token = base64_encode(json_encode(array(
                        "user_id" => $this->user->id,
                        "phone" => $this->user->phone,
                        "role" => $this->user->role
                    )));

                    http_response_code(200);
                    echo json_encode(array(
                        "message" => "Login successful.",
                        "token" => $token,
                        "user" => array(
                            "id" => $this->user->id,
                            "name" => $this->user->name,
                            "phone" => $this->user->phone,
                            "role" => $this->user->role
                        )
                    ));
                } else {
                    http_response_code(401);
                    echo json_encode(array("message" => "Invalid password."));
                }
            } else {
                http_response_code(401);
                echo json_encode(array("message" => "User not found."));
            }
        } else {
            http_response_code(400);
            echo json_encode(array("message" => "Login data incomplete."));
        }
    }
}
?>