<?php

namespace App\Http\Controllers\Auth;

use App\Components\Functions;
use App\Http\Controllers\Controller;
use App\User;
use Illuminate\Foundation\Auth\ResetsPasswords;
use Illuminate\Http\Request;

class ResetPasswordController extends Controller
{
    /*
    |--------------------------------------------------------------------------
    | Password Reset Controller
    |--------------------------------------------------------------------------
    |
    | This controller is responsible for handling password reset requests
    | and uses a simple trait to include this behavior. You're free to
    | explore this trait and override any methods you wish to tweak.
    |
    */

    use ResetsPasswords;

    /**
     * Where to redirect users after resetting their password.
     *
     * @var string
     */
    protected function guard()
    {
        return auth('backend');
    }

    protected $redirectTo = '/';

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

    public function recoverPassword(Request $request)
    {
        $typeRecover = $request->input('type_recover');
        if ($typeRecover == 'phone') {
            return redirect()->to(url('password/phone/reset'));
        }
        return redirect()->to(url('password/reset'));

    }

    public function checkPhoneExist(Request $request)
    {
        $phone = $request->input('phone');

        $phone = Functions::filterInputNumber($phone);

        if (empty($phone)) {
            return response([
                'status' => 0,
                'message' => 'Dữ liệu không hợp lệ'
            ]);
        }

        $check = User::where('phone', $phone)
            ->first();

        if ($check) {
            return response([
                'status' => 1,
                'message' => 'Đã tồn tại người dùng',
                'phone' => $phone,
                'user_id' => $check->id
            ]);
        }

        return response([
            'status' => 0,
            'message' => 'Không tồn tại người dùng với SĐT: '.$phone
        ]);
    }

    public function resetPasswordPhone(Request $request)
    {
        $token = $request->input('account_kit_token');
        $phone = Functions::getFacebookFromToken($token);

        if ($phone == 'error') {
            return redirect()->back()->with('error', 'Dữ liệu hết hạn, bạn vui lòng xác thực lại');
        }

        $phone = str_replace('+84', '0', $phone);

        if (empty($phone)) {
            return redirect()->back()->with('error', 'Dữ liệu không hợp lệ');
        }

        $password = $request->input('password');
        $confirmPassword = $request->input('password_confirmation');
        $type = $request->input('type_user');

        if (empty($password)) {
            return redirect()->back()->with('error', 'Không được để trống mật khẩu');
        }
        if ($password != $confirmPassword) {
            return redirect()->back()->with('error', 'Mật khẩu xác nhận không đúng');
        }

        User::where('phone', $phone)
            ->where('type', $type)
            ->update([
                'password' => \Hash::make($password)
            ]);

        return redirect()->to(url('/'))->with('success', 'Mật khẩu đã được cập nhật thành công, bạn vui lòng đăng nhập lại');
    }

    public function recoverPasswordPhone($token, $phone, Request $request)
    {
        if (empty($phone)) {
            return redirect()->to(url('/'))->with('error', 'Dữ liệu không hợp lệ');
        }

        $types = User::where('phone', $phone)
            ->where('type','<>', User::SYSTEM)
            ->pluck('type')->toArray();
        $types = array_unique($types);

        return view('auth.passwords.phone_reset_confirm', compact('phone', 'token', 'types'));
    }

    public function resetPasswordByPhone(Request $request)
    {
        return view('auth.passwords.phone_reset');
    }
}
