<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use App\Test;
use App\User;

class HomeController extends Controller
{
    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('auth');
    }

    /**
     * Show the application dashboard.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        $tests = Auth::user()->getTests();
        return view('home', compact('tests'));
    }

    public function stats()
    {
        return view('stats');
    }

    public function settings()
    {
        $user = Auth::user();
        return view('users.settings', compact('user'));
    }

    public function updatePassword(Request $request)
    {
        $this->validate($request, [
            "password" => "required|min:8|confirmed",
            "password_confirmation" => "required_with:password"
        ]);

        $user = Auth::user();
        
        if (!$user->passwordVerify($request->get("password_old"))) {
            $request->session()->flash("status_failed", "The password you entered does not match your current password");
            return redirect('/settings');
        }

        $user->updatePassword($request->get("password"));
        $request->session()->flash('status', 'Your password was updated successfully!');
        return redirect('/settings');
    }

    public function updateEmail(Request $request)
    {
        $this->validate($request, [
            "email" => "required|email"
        ]);

        $user = Auth::user();

        if (!$user->passwordVerify($request->get("password"))) {
            $request->session()->flash("status_failed", "The password you entered does not match your current password");
            return redirect("/settings");
        }

        $user->updateEmail($request->get("email"));
        $request->session()->flash('status', 'Your email was updated successfully!');
        return redirect('/settings');
    }
}