<?php

namespace App\Services\Auth;

use App\Models\User;
use App\Services\Auth\Contracts\AuthServiceInterface;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;

class AuthService implements AuthServiceInterface
{
    public function attemptLogin(array $credentials, Request $request): array
    {
        // Manual MD5 password check
        $user = User::where('mail', $credentials['mail'])->first();
        if (!$user || $user->pass !== md5($credentials['password'])) {
            return ['success' => false, 'error_key' => 'mail', 'error_msg' => 'Thông tin đăng nhập không đúng. Vui lòng nhập lại'];
        }

        // Log the user in manually
        Auth::login($user);
        $request->session()->regenerate();
        if ($user->status != config('constants.STATUS_ACTIVE')) {
            Auth::logout();
            return ['success' => false, 'error_key' => 'permission', 'error_msg' => 'Bạn không có quyền truy cập. Vui lòng liên hệ quản trị viên'];
        }

        return ['success' => true, 'user' => $user];
    }

    public function logout(Request $request): void
    {
        Auth::logout();
        $request->session()->invalidate();
        $request->session()->regenerateToken();
    }

    public function getRedirectRouteForUser(User $user): string
    {
        if ($user->role == config('constants.ROLE_ADMIN')) {
            return route('admin.dashboard');
        }

        if ($user->first_login == config('constants.FIRST_LOGIN_TRUE')) {
            return route('user.change_password');
        }

        return route('user.dashboard');
    }
}