<?php

namespace App\Http\Controllers\Api;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\CarWashOwner;
use App\Models\User;
use Carbon\Carbon;
use DB;
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Validator;
use Config;
use Hash;
use Auth;

class CwoController extends Controller
{
    public function __construct(){
    }


    public function index(){
    }

    public function register(Request $request){
        $validate = Validator::make($request->all(), 
            [
                // 'cwo_name' => 'required',
                'cwo_company' => 'required',
                'cwo_email' => 'required|email|unique:cwo_master,cwo_email',
                'cwo_phone' => 'required',
                'address_line_1' => 'required',
                // 'user_name' => 'required',
                // 'password' => [
                //     'required',
                //     // 'string',
                //     // 'min:8',             // must be at least 8 characters in length
                //     // 'regex:/[a-z]/',      // must contain at least one lowercase letter
                //     // 'regex:/[A-Z]/',      // must contain at least one uppercase letter
                //     // 'regex:/[0-9]/',      // must contain at least one digit
                //     // 'regex:/[!@#$%^&*()]/', // must contain a special character
                // ],
            ],[
                // 'email.unique' => 'This email already exists.'
            ]);
            
        if($validate->fails()){
            $errorString = implode(",",$validate->messages()->all());
            return response()->json([
                'success' => 0,
                // 'message' => $validate->errors(),
                'message' => $errorString,
            ]);
        }

        $cwo_name = $request->input('cwo_name');
        $cwo_company = $request->input('cwo_company');
        $cwo_email = $request->input('cwo_email');
        // $password = Hash::make($request->input('password'));
        $cwo_phone = $request->input('cwo_phone');
        $address_line_1 = $request->input('address_line_1');
        $address_line_2 = $request->input('address_line_2');
        // $user_name = $request->input('user_name');
        $dt = Carbon::now(); 

        /*insert into cwo_master table starts*/
        $data = CarWashOwner::create([
            'cwo_name'=> $cwo_name,
            'cwo_company'=> $cwo_company,
            'cwo_email'=> $cwo_email,
            'cwo_phone'=> $cwo_phone,
            'address'=> $address_line_1 . ', ' . $address_line_2,
            'created_at'=>$dt->toDayDateTimeString(),
            'updated_at'=>$dt->toDayDateTimeString()
        ]);
        /*insert into cwo_master table ends*/

        /*insert into users table starts*/
        $cwo_id = $data->id;
        // if($cwo_name == ''){
        //     $cwo_name = $cwo_company;
        // }
        // $dataCwo = User::create([
        //     'name'=> $user_name,
        //     'email'=> $cwo_email,
        //     'password'=> $password,
        //     'user_type'=> 2,
        //     'is_active'=> 1,
        //     'phone'=> $cwo_phone,
        //     'cwo_id'=> $cwo_id,
        //     'created_at'=>$dt->toDayDateTimeString(),
        //     'updated_at'=>$dt->toDayDateTimeString()
        // ]);
        /*insert into users table ends*/

        return response()->json([
            'success' => 1,
            'message' => 'Success',
            'cwo_id' => $cwo_id,
            // 'user_id' => $dataCwo->id
        ]);

    }

    public function login(Request $request){
        $validate = Validator::make($request->all(), 
            [
                'email' => 'required|email',
                'password' => 'required',
            ]);
            
        if($validate->fails()){
            $errorString = implode(",",$validate->messages()->all());
            return response()->json([
                'success' => 0,
                // 'message' => $validate->errors(),
                'message' => $errorString,
            ]);
        }

        $email = $request->input('email');
        $password = $request->input('password');
        $dt = Carbon::now(); 
        $credentials = [
            'email' => $email,
            'password' => $password,
            'user_type' => 2,
        ];
        if(!Auth::guard('web')->attempt($credentials)) {    
            return response()->json([
                'success' => 0,
                'message' => 'Sorry! Email & Password does not match with our record.',
            ]);
        }
        $user = User::where('email', $email)->first();
        // echo "<pre>";print_r($user);exit;

        /*token create starts*/
        $token_email = 'admin@gmail.com';
        $token_password = '123456';
        $credentials = [
            'email' => $token_email,
            'password' => $token_password,
            'user_type' => 1,
        ];  
        if(Auth::attempt($credentials)){
            $tokenUser = User::where('email', $token_email)->first();
            $token = $tokenUser->createToken('App Token');
            $token = $token->plainTextToken;
        } else {
            $token = '';
        }
        /*token create ends*/

        return response()->json([
            'success' => 1,
            'message' => 'Success',
            'cwo_id' => $user->cwo_id,
            'user_id' => $user->id,
            'name' => $user->name,
            'email' => $user->email,
            'phone' => $user->phone,
            'address' => $user->address,
            'token' => $token
        ]);

    }

}
