<?php

namespace App\Http\Controllers;

use App\AuditTrail;
use App\Company;
use App\CompanyTrialMode;
use App\User;
use Carbon\Carbon;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Redirect;
use Laravel\Socialite\Facades\Socialite;

class SocialAuthController extends Controller
{
    public function redirect($service) {
        return Socialite::driver( $service )->redirect();
    }

    public function callback(Request  $request,$service) {
        try {
            $user = $request->all();


            $name     =  $user['name'];
            $email    = !isset($user['email']) ? 'fbmail@test.com' : $user['email'];


            $appUser = User::whereEmail($email)->first();

            if (!empty($appUser)) {
                Auth::login($appUser);
                $user = $appUser;

                if (empty($user->wrong_password_attempt_count)) {
                    $user->wrong_password_attempt_count = 0;
                }
                if ($user->wrong_password_attempt_count > 0) {
                    $user->wrong_password_attempt_count = 0;
                    $user->save();
                }

                //update audit_trail
                AuditTrail::create([
                    'user_id' => $user->id,
                    'username' => $user->username,
                    'date' => Carbon::now()->toDateTimeString(),
                    'activity' => $user->name.' logged in '
                ]);

                return response()->json('ok');
            }
            else
            {

                $un = explode(' ',$name);
                $last = end($un);

                $data['full_name'] = $name;
                $data['first_name'] = $un[0];



                $data['last_name'] = $last;
                $fn = str_split($name);

                $virtual_name  =  strtolower($fn[0].$last);

                $data['username'] = $virtual_name;
                $data['phone_number'] = '024';
                $data['email']        = $email;
                $data['role_id']      = 2;
                $data['password']     =  bcrypt('password');
                $data['pass']     =  'password';
                $data['created_by']   =  'npontu';
                $data['status']       = 'active';

                $new_user = User::query()->create($data);

                $new_user->credit()->create([
                    'username' => $new_user->username,
                    'price' => '0.028',
                    'email_price' => '0.00332',
                    'credit_alloted' => '0.00',
                    'old_bal' => '0',
                    'new_bal' => '0.00',
                    'credit_used' => '0',
                    'credited' => '0'
                ]);

                Log::error(date('Y-m-d H:i:s').' || '.'SOmthing 1');
                $company['name'] = $new_user->username;
                $company['user_id'] = $new_user->id;
                $company['date_of_incorporation'] = Carbon::parse(date('Y-m-d'));
                $company['legal_status' ]  ='Public';
                $company['mobile_money_number' ] = '024';
                $company['company_phone_number'] = '024';
                $company['business_document' ] = 'N/A';
                $company['location_in_other_countries' ] = 'N/A';
                $company['postal_address' ] = 'N/A';
                $company['physical_address' ] = 'N/A';
                $company['sender_id_document'] = 'N/A';
                $company['contact_person'] = 'N/A';
                $company['contact_person_id'] = 'N/A';
                $company['contact_person_designation'] = 'N/A';
                $company['contact_person_phone'] = '024';
                $company['contact_person_email'] = $email;

                $user_comp = Company::query()->create($company);
                $array['company_id'] = $user_comp->id;
                $array['trial'] = true;
                $new_user->update(['company_id'=>$user_comp->id]);
                CompanyTrialMode::query()->updateOrCreate($array);
                Log::error(date('Y-m-d H:i:s').' || '.'SOmthing 2');

                $credentials = ['email'=> $email, 'password'=>'password'];
                if (\Auth::attempt($credentials)) {

                    return response()->json('ok');
                } else {

                    return response()->json('failed');
                }

            }
        } catch (\Throwable $t) {
            Log::error(date('Y-m-d H:i:s').' || '.$t->getMessage());
        }
        return response()->json('ok');
    }


    public function fb_login($email)
    {
        $verify = User::query()->where('email',$email)->first();

        if(empty($verify)):
            dd('empty');
        else:
            dd('great');
        endif;
    }
}
