<?php

namespace App\Http\Controllers;

use App\Client;
use App\Mail\pingAdmin;
use BaconQrCode\Encoder\QrCode;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Mail;
use Maatwebsite\Excel\Facades\Excel;

class EventRegisterController extends Controller
{

    public function index(){
        return view('event_register.register_user');
    }

    public function create(Request $request){

        $input['first_name']= $request->first_name;
        $input['last_name']= $request->last_name;
        $input['middle_name']= $request->middle_name;
        $input['email']= $request->email;
        $input['phone_number']= $request->phone_number;
        $input['momo_number']= $request->momo_number;
        $input['nationality']= $request->nationality;
        $input['gender']= $request->gender;
        $input['package']= $request->package;
        $input['amount']= '0.1';
        $input['unique_code']= 'MTN-'.$this->randomString(5);
        $input['qr_code']= $request->qr_code;
//        $input['otp']= $this->randomString(5);
        $input['status']= $request->status;
        $uniqueCode=$input['unique_code'];


//        STORE DETAILS
        Client::create($input);


        $name=$request->first_name;
        $fullName=$request->first_name .' '.$request->last_name;
        $email=$request->email;
        $phone=$request->phone_number;

        $idQuery=Client::query()->where('phone_number',$phone)->get(['id']);
        $id=$idQuery[0]->id;

//        GENERATE QR CODE
//        $string="Name: $fullName \r\nEmail: $email \n\rPhone Number: $phone \n\rNationality: $request->nationality \n\rPackage: $request->package";
        $string="http://mtn.npontu.com/api/users/qr-scan/$id";
        $fileName=$name.$this->randomString(5);
        $this->QRGenerater($fileName,$string);



//        SEND UNIQUE CODE VIA SMS
        $smsMessage="Hello $fullName, 

Your registration code is $uniqueCode";
        $this->sendSms($smsMessage,$phone);


//        SEND QR CODE VIA EMAIL
//        $url = public_path("images/qr_$name.png");
        $url = "http://mtn.npontu.com/images/qcreatedr_$fileName.png";
        $message = "Hello $fullName,  
        Thank you for registering, your unique registration QR code is  
         ![Logo]({$url})";



        $subject = 'NEW REGISTRATION';

        Mail::send(new pingAdmin($email, $message, $subject));

        return redirect('dashboard/client-register')->with('success','User successfully created. Expect an SMS or Email. Thank You');

    }

    public function bulk(Request $request){

        $path = $request->file('import_file')->getRealPath();
        $data = Excel::load($path)->get();

        if($data->count()){
            foreach ($data as $key => $value) {

                $uniqueCode='MTN-'.$this->randomString(5);

                    $arr[] = ['first_name' => $value->first_name, 'last_name' => $value->last_name,'middle_name'=>$value->middle_name,
                    'email'=>$value->email,'phone_number'=>$value->phone_number,'nationality'=>$value->nationality,'gender'=>$value->gender,
                    'unique_code'=>$uniqueCode];

                Client::insert($arr);

                $name=$value->first_name;
                $fullName=$value->first_name .' '.$value->last_name;
                $email=$value->email;
                $phone=$value->phone_number;

                $idQuery=Client::query()->where('phone_number',$phone)->get(['id']);
                $id=$idQuery[0]->id;

                $string="http://mtn.npontu.com/api/users/qr-scan/$id";
                $fileName=$name.$this->randomString(5);
                $this->QRGenerater($fileName,$string);

                $smsMessage="Hello $fullName, 

Your registration code is $uniqueCode";
                $this->sendSms($smsMessage,$phone);


                $url = "http://mtn.npontu.com/images/qcreatedr_$fileName.png";
                $message = "Hello $fullName,  
        Thank you for registering, your unique registration QR code is  
         ![Logo]({$url})";



                $subject = 'NEW REGISTRATION';

                Mail::send(new pingAdmin($email, $message, $subject));

                unset($arr);

            }
//            if(!empty($arr)){
//                Client::insert($arr);
//            }
        }

        return redirect('dashboard/upload')->with('success','User successfully uploaded.');

    }


    private function QRGenerater($name,$string)
    {
        \QrCode::size(1000)
            ->format('png')
            ->generate($string, public_path("images/qcreatedr_$name.png"));
    }

    private function randomString($length)
    {
        return $random = substr(str_shuffle(str_repeat($x='0123456789ABCDEFGHIJ',ceil($length/strlen($x)))),1,$length);

    }



    private function sendSms($text,$phone)
    {
        $message = urlencode($text);
        $num = urlencode($phone);
        $sender=urlencode('NEW REG');
        $url = "https://deywuro.com/api/sms?username=Sammy&password=password&source=$sender&destination=" . $num . "&message=" . $message;

        $curl = curl_init($url);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
        curl_exec($curl);
        curl_close($curl);
    }

}
