<?php

namespace App\Http\Controllers\Admin;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Models\Province;
use App\Models\District;
use App\Models\Fixval;
use App\Models\RegUser;
use App\Models\SvcsEngaged;
use App\Models\User;
use App\Models\VSRanges;
use App\Models\SMS;
use App\Models\AiSvcVetranges;
use Illuminate\Support\Facades\Response;
use PDF;

// use GoogleMaps\GoogleMaps;

class AdminRegisterController extends Controller
{

	public function __construct()
	{
		$this->middleware('auth');
	}


	protected function searchRegUserDropDown(){

		$prov = Province::get()->toArray();
		$dist = District::getAllDist();
		$approv_status = Fixval::getSpecificValue('APPROVAL_STATUS');
		
		foreach ($prov as $key => $prov_value) {
			$data['province'][$key]['id']	= $prov_value['prvnce_id'];
			$data['province'][$key]['value']	= $prov_value['prvnce_name'];
		}
		foreach ($dist as $key => $dist_value) {
			$data['distric'][$key]['id']	= $dist_value['dist_id'];
			$data['distric'][$key]['value']	= $dist_value['dist_name'];
		}
		foreach ($approv_status as $key => $approv) {
			$data['approve'][$key]['id']	= $approv['val_id'];
			$data['approve'][$key]['value']	= $approv['val_des'];
		}
		$user_details = RegUser::searchRegUser();
		// $fx_aprv_status = Fixval::getSpecificValue('APPROVAL_STATUS');

		return view('registerusers.reg_user_search',compact('data','user_details'));

	}

	protected function searchRegisteredUser(Request $request){
		
		$data = $request->all();

		$user_details = RegUser::searchRegUser($data);

		return view('registerusers.reg_user_result',compact('user_details'));

	}

	protected function regUserView(Request $request){

		$reg_user_id = $request->reg_id;

		// $googlemaps = new GoogleMaps();
		// $d['a'] = $this->googlemaps::load('geocoding')                  
		// ->setParamByKey('place_id', 'ChIJd8BlQ2BZwokRAFUEcm_qrcA')                
		// ->get();
		// dd($d);

		$reguser_vw 	= RegUser::getUserDetailById($reg_user_id);

		$data['id']		= $reguser_vw['type_of_id'];
		$data['type'] 	= 'ID_TYPE';
		$reguser_vw['type_of_id'] = Fixval::getDescription($data);

		$data['id']		= $reguser_vw['gender'];
		$data['type'] 	= 'GENDER';
		$reguser_vw['gender'] 	= Fixval::getDescription($data);

		$data['id']		= $reguser_vw['preferred_lang'];
		$data['type'] 	= 'LANGUAGE';
		$reguser_vw['preferred_lang'] = Fixval::getDescription($data);

		$data['id']		= $reguser_vw['ref_doc_type'];
		$data['type'] 	= 'DOCAPRVTYPE';
		$reguser_vw['document_type'] = Fixval::getDescription($data);

		
		$data['id']		= $reguser_vw['ai_org_type'];
		$data['type'] 	= 'AIORG_TYPE';
		$reguser_vw['ai_org_type'] = (!empty($reguser_vw['ai_org_type']))? Fixval::getDescription($data) : null;

		$vet_range_code = AiSvcVetranges::getVetIDS($reguser_vw['ai_advert_id']);
		$reguser_vw['vet_range'] = VSRanges::getDescription($vet_range_code);
		

		$reguser_vw['dist_id']   	= District::find($reguser_vw['dist_id'])->toArray()['dist_name_en'];
		$reguser_vw['type_code_des']   	= SvcsEngaged::find($reguser_vw['type_code'])->toArray()['engd_svc_en'];
		$reguser_vw['page']			= $request->page;

		$backurl = route('regusers_search_drpdwn');

		return view('registerusers.reguser_details_view',compact('reguser_vw','backurl'));
	}

	protected function userDeactivate(Request $request){
		$reg_user_id = $request->reg_id;

		$usr_dtl['regno'] = $reg_user_id;
		$usr_dtl['is_active'] = '0';
		$user_deact = User::changeUserActivation($usr_dtl);
		return 'true';
	}

	protected function userActivate(Request $request){
		$reg_user_id = $request->reg_id;

		$usr_dtl['regno'] = $reg_user_id;
		$usr_dtl['is_active'] = '1';
		$user_deact = User::changeUserActivation($usr_dtl);
		return 'true';
	}

	public function userReportSearch(){

        $data['province'] = Province::get()->toArray();
		$data['distric']  = District::getAllDist();
        $data['businesstyp']  = SvcsEngaged::all();
        
        return view('reports.rpt_user_search',compact('data'));
    }

    public function userReportSearchResults(Request $request){

        $data 		  = $request->all();
		$user_details = RegUser::searchRegUser($data);
		return view('reports.rpt_user_search_result',compact('user_details'));
    }

    public function genUserPDF(Request $request){

    	$data 		  = $request->all();
		$user_details = RegUser::searchRegUser($data);

		$pdf = PDF::loadView('reports.usrtable_reports', compact('user_details'));
		return $pdf->download('users report.pdf');
    }

    public function genUserCSV(Request $request){

    	$data 		  = $request->all();
		$user_details = RegUser::searchRegUser($data);

		$fileName = 'user reports.csv';
		$fp = fopen($fileName, 'wb');
		fputcsv($fp , array('ID', 'Name', 'Business Type', 'Province', 'District','Email','Mobile No.','Created On'));

		foreach ($user_details as $user) {
            $row['ID']  	= $user['regno'];
            $row['Name']    = $user['user_firstname'] . "  " . $user['user_lastname'];
            $row['Business Type']   = bladeViewValue('App\Models\SvcsEngaged' , 'type_code', $user['type_code'] , 'engd_svc_en' );
            $row['Province']  		= bladeViewValue('App\Models\Province' , 'prvnce_id', $user['prvnce_id'] , 'prvnce_name_en' );
            $row['District']  		= bladeViewValue('App\Models\District' , 'dist_id', $user['dist_id'] , 'dist_name_en' ) ;
            $row['Email']  		= $user['email_address'];
            $row['Mobile No.']  = $user['mobile_no_1'];
            $row['Created On']  = date('Y-m-d', strtotime($user['date_submitted']));

            fputcsv($fp, array($row['ID'], $row['Name'], $row['Business Type'], $row['Province'], $row['District'], $row['Email'], $row['Mobile No.'], $row['Created On']));
        }
        fclose($fp);
     	$headers = array(
            'Content-Type' => 'text/csv',
        );
        return Response::download($fileName, $fileName, $headers);
    }
}
