<?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\ServiceType;
use App\Models\AdType;
use App\Models\RegUser;
use App\Models\AdvertMaster;
use App\Models\AdvertsExtended;
use App\Models\Fixval;
use Illuminate\Support\Facades\Response;
use Carbon\Carbon;
use PDF;

class AdminAdvertisementsController extends Controller
{

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

	public function searchAdvertDropDown(){

		$prov = Province::get()->toArray();
		$dist = District::getAllDist();
		$prod = ServiceType::getMainDropDown();
		// $prod = ServiceType::getSvcTypeForDropDown();
		$ad   = AdType::getAllAdType();
		$reg_usr = RegUser::orderBy('user_firstname')->get()->toArray();

		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 ($prod as $key => $prod_value) {
			$data['product'][$key]['id']	= $prod_value['prodsvc_id'];
			$data['product'][$key]['value']	= $prod_value['product_name'];
		}
		foreach ($ad as $key => $ad_value) {
			$data['adtype'][$key]['id']	= $ad_value['ad_type_id'];
			$data['adtype'][$key]['value']	= $ad_value['ad_type_des'];
		}
		foreach ($reg_usr as $key => $user) {
			$data['regusr'][$key]['id']	= $user['regno'];
			$data['regusr'][$key]['value']	= $user['user_firstname'].'   '.$user['user_lastname'];
		}
				// $ad_dtl = AdvertMaster::searchAdMaster($data);
		return view('advertmaster.advert_master_search',compact('data'));
	}

	public function searchAdvertMaster(Request $request){
		$data = $request->all();

		$ad_dtl = AdvertMaster::searchAdMaster($data);

		return view('advertmaster.advert_master_searchresult',compact('ad_dtl'));
	}

	public function advertistmentView(Request $request){
		$data['advert_id'] = $request->advert_id;

		$ad_dtl = AdvertMaster::searchAdMaster($data);

		$tSetData['province_id'] = '';
		$tSetData['district_id'] = '';
		$tSetData['product_id']  = $ad_dtl[0]['prodsvc_id'];
		$tSetData['ad_type_id']  = $ad_dtl[0]['advert_type'];
		$tSetData['advert_id']   = $ad_dtl[0]['advert_id'];

		$tableSet = AdvertMaster::getAdvertMoreDetails($tSetData);

		$extends = AdvertsExtended::noOfTimeExtend($ad_dtl[0]['advert_id']);
		$ad_dtl[0]['extensions']  = $extends;

		$province_name = Province::find($ad_dtl[0]['prvnce_id'])->toArray()['prvnce_name_en'];
		$ad_dtl[0]['province'] = $province_name;

		// $district_name = District::find()

		$data['id']		= $ad_dtl[0]['approval_status'];
		$data['type'] 	= 'APPROVAL_STATUS';
		$ad_dtl[0]['approval_state_des'] = Fixval::getDescription($data);

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


		$ad_dtl[0]['page']  = $request->page;

		if($tableSet){

			if(isset($tableSet[0]['details'])){

				$ad_dtl[0]['details'] = $tableSet[0]['details'];
			}

		}

		$backurl = route('admaster_search_drpdwn');

		return view('advertmaster.advert_dtl_view',compact('ad_dtl','backurl'));

	}

	public function adsReportSearch(){

		$data['main_prod'] = ServiceType::getMainDropDown();
		return view('reports.rpt_ads_search', compact('data'));

	}

	public function getSubCategories($svc_type){

		return ServiceType::getSvcTypeForSelectedCate($svc_type);
	}

	public function adsReportSearchResults(Request $request){

		$data['ser_proname'] = $request->ser_proname;
		if($data['ser_proname'] == 'EQU'){
			$data['ser_proname'] = $request->sub_ser_proname;
		}
		$ad_dtl = AdvertMaster::searchAdMaster($data);
		return view('reports.rpt_ads_search_result', compact('ad_dtl'));
	}

	public function genAdPDF(Request $request){

    	$data   = $request->all();
		$ad_dtl = AdvertMaster::searchAdMaster($data);

		$pdf = PDF::loadView('reports.adstable_reports', compact('ad_dtl'))->setPaper('a4', 'landscape');
		return $pdf->download('advertisements report.pdf');
    }

    public function genAdsCSV(Request $request){

    	$data 		  = $request->all();
		$ad_dtl = AdvertMaster::searchAdMaster($data);

		$fileName = 'advertisements reports.csv';
		$fp = fopen($fileName, 'wb');
		fprintf($fp, chr(0xEF).chr(0xBB).chr(0xBF));
		fputcsv($fp , array('Advertisement Type', 'Product/Service', 'District', 'Owner', 'Title'));

		foreach ($ad_dtl as $advert) {
            $row['Advertisement Type'] = $advert['ad_type_des_en'];
            $row['Product/Service']    = $advert['product_name_en'];
            $row['District']   	= $advert['dist_name_en'];
            $row['Owner']  		= $advert['user_firstname'].' '.$advert['user_lastname'];
            $row['Title']  		= $advert['title'];
            $row['Created Date']= Carbon::parse($advert['date_of_advert'])->format('Y-m-d');

            fputcsv($fp, array($row['Advertisement Type'], $row['Product/Service'], $row['District'], $row['Owner'], $row['Title'] , $row['Created Date']));
        }
        fclose($fp);
     	$headers = array(
            'Content-Type' => 'text/csv',
        );
        return Response::download($fileName, $fileName, $headers);
    }
}
