<?php

namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;
use App\Http\Requests\SetPasswordRequest;
use App\Services\AuthenticateService;
use Illuminate\Http\Request;

class AuthController extends Controller
{
    protected $authenticateService;

    public function __construct(Request $request, AuthenticateService $authenticateService)
    {
        $this->authenticateService = $authenticateService;
    }
    public function getLogin()
    {
        return view('auth.login');
    }

    public function postLogin(Request $request)
    {
        $response = $this->authenticateService->authenticate($request);

        return redirect($response['redirect'])->with($response['status'], $response['message']);
    }

    public function getForgotPassword()
    {
        return view('auth.forgot-password');
    }

    public function postForgotPassword(Request $request)
    {
        $response = $this->authenticateService->forgotPassword($request);

        return redirect($response['redirect'])->with($response['status'], $response['message']);
    }

    public function setPassword(Request $request)
    {
        $response = $this->authenticateService->setPassword($request);

        if ($response['view'] == 'auth.login') {
            return redirect('/login');
        }

        return view($response['view'], ['title' => $response['title'], 'body' => $response['body']]);
    }

    public function updatePassword(SetPasswordRequest $request)
    {
        $response = $this->authenticateService->changePassword($request);

        return redirect($response['redirect'])->with($response['status'], $response['message']);
    }

    public function logout()
    {
        $this->authenticateService->logout();

        return redirect('/login');
    }
}
