<?php

namespace App\Http\Controllers;

use App\Components\CommonComponent;
use App\Http\Controllers\DatatablesController;
use App\Http\Controllers\FileController;
use App\Http\Controllers\HelperController;
use App\Http\Controllers\RAF\RAFController;
use App\Http\Requests\Backend\LeadRequest;
use App\Http\Controllers\RAF\RAFSchedulerController;
use App\MmsCoverletterDetails;
use App\Information;
use App\LogInformation;
use App\MailTracker;
use App\Models\RAF\RAFLoanDocuments;
use App\Models\RAF\RAFLoan;
use App\PricingPlan;
use App\Quotes;
use App\retail_price_programming;
use App\User;
use Carbon\Carbon;
use File;
use Flash;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Config;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Redirect;
use Illuminate\Support\Facades\Response;
use Illuminate\Support\Facades\URL;
use PDF;
use Spatie\Activitylog\Models\Activity;
use Str;
use Validator;
use View;
use Storage;
use Illuminate\Support\Facades\Log;
use Mail;


class LeadController extends Controller {
	public $view_path = '/account/leads?status=completed';

	public $redirectTo = '/account/leads?status=completed';

	function __construct() {
		$this->fileuploader = new FileController();
		$this->helper = new HelperController();
	//	$this->rafscheduler = new RAFSchedulerController();
	}

	/**
	 * Display list of results
	 *
	 * @return \Illuminate\Http\Response
	 */
	public function index(Request $request, $id = null, $status = null) {
		$DatatablesController = new DatatablesController();
		if (empty($status)) {
			$status = $request->input('status');
		}
		if ($id == '') {
			$id = $request->input('id');
		}
		if (!empty($id) && $id != 'id' && $status == 'incompleted') {
			// checking id is existed or not
			$info = DB::table('information')
				->where('id', $id)
				->first();

			if (!empty($info)) {
				// deleting existed record
				DB::table('information')
					->where('id', $id)
					->delete();

				\Flash::success('Deleted Successfully.');
				return back();
			} else {
				\Flash::error('Deleted Not Successfully.');
			}
		}

		if ($status == 'completed') {
			// dd($DatatablesController->completedLead());
			return $DatatablesController->completedLead();
		} elseif ($status == 'mms') {
			return $DatatablesController->mmsLead();
		} elseif ($status == 'bts') {

			return $DatatablesController->bestToStandardLead();
		} elseif ($status == 'incompleted') {
			return $DatatablesController->incompleteLead();
		}

		return;
	}
	/**
	 * Display list of results
	 *
	 * @return \Illuminate\Http\Response
	 */
	public function index_(Request $request, $id = null, $status = null) {
		$DatatablesController = new DatatablesController();
		if (empty($status)) {
			$status = $request->input('status');
		}
		if ($id == '') {
			$id = $request->input('id');
		}
		if (!empty($id) && $id != 'id' && $status == 'incompleted') {
			// checking id is existed or not
			$info = DB::table('information')
				->where('id', $id)
				->first();

			if (!empty($info)) {
				// deleting existed record
				DB::table('information')
					->where('id', $id)
					->delete();

				\Flash::success('Deleted Successfully.');
				return $DatatablesController->incompleteLead();
			} else {
				\Flash::error('Deleted Not Successfully.');
			}
		}
		// return;

		if ($status == 'completed') {
			return $DatatablesController->completedLead();
		} elseif ($status == 'mms') {
			return $DatatablesController->mmsLead();
		} elseif ($status == 'bts') {

			return $DatatablesController->bestToStandardLead();
		} elseif ($status == 'incompleted') {
			return $DatatablesController->incompleteLead();
		}

		return;

		if ($status == 'completed') {
			if (Auth::user()->role == 1 || Auth::user()->role == 8) {
				$webline_info = DB::table('information')
					->where('accountnumber', '<>', '')
					->where('information.is_webline_product', 'Yes')
					->select('information.date_added', 'information.quote_id', 'information.time_added', 'information.insurance_startdate', 'information.title', 'information.full_name', 'information.typeofcover', 'information.lead_source_field', 'information.affid', 'information.status', 'information.id', 'information.product_id', 'information.rates', 'information.policy_number', 'information.age', 'information.telephone', 'information.accountnumber', 'information.marketingOptOut')
					->orderBy('information.id', 'desc')
					->limit(1000)
					->get();

				$webline_pro_info = array();
				foreach ($webline_info as $key => $value) {
					$webline_product_details = DB::table('temp_quot_webline_products')
						->join('webline_insurers', 'temp_quot_webline_products.ProviderName', '=', 'webline_insurers.insurer_code')
						->where('QuoteId', $value->quote_id)
						->where('ProductId', $value->product_id)
						->where('Rates', $value->rates)
						->first();

					if (isset($webline_product_details)) {
						$webline_information['product_name'] = $webline_product_details->ProductName;
						$webline_information['date_added'] = $value->date_added;
						$webline_information['time_added'] = $value->time_added;
						$webline_information['insurance_startdate'] = $value->insurance_startdate;
						$webline_information['title'] = $value->title;
						//$webline_information['fname'] = $value->fname;
						// $webline_information['lname'] = $value->lname;
						$webline_information['full_name'] = $value->full_name;
						$webline_information['age'] = $value->age;
						$webline_information['telephone'] = $value->telephone;
						$webline_information['typeofcover'] = $value->typeofcover;
						$webline_information['product_id'] = $value->product_id;
						$webline_information['quote_id'] = $value->quote_id;
						$webline_information['status'] = $value->status;
						$webline_information['id'] = $value->id;
						$webline_information['rates'] = $value->rates;
						$webline_information['accountnumber'] = $value->accountnumber;
						$webline_information['lead_source_field'] = $value->lead_source_field;
						$webline_information['insurer'] = $webline_product_details->insurer;
						$webline_information['policy_number'] = $value->policy_number;
						// $webline_information['ProductName'] = $value->ProductName;
						$webline_pro_info[] = (object) $webline_information;
					}

				}

				// getting Bi info with is_webline_product is No
				$BIP_information = DB::table('information')
					->join('products', 'information.product_id', '=', 'products.id', 'LEFT')
					->where('accountnumber', '<>', '')
					->where('information.is_webline_product', 'No')
					->select('products.insurer', 'products.product_name', 'products.policy_prefix', 'products.pdf_underwritten_txt', 'information.date_added', 'information.time_added', 'information.insurance_startdate', 'information.title', 'information.full_name', 'information.typeofcover', 'information.lead_source_field', 'information.affid', 'information.status', 'information.id', 'information.quote_id', 'information.product_id', 'information.rates', 'information.policy_number', 'information.age', 'information.telephone', 'information.marketingOptOut')
					->orderBy('information.id', 'desc')
					->get();
				// getting Bi info with is_webline_product is empty
				$BI_information = $BIP_information;

			} elseif (Auth::user()->role == 3) {
				// getting affiliate completed leads
				$information = DB::table('information')
					->join('products', 'information.product_id', '=', 'products.id')
					->where('accountnumber', '<>', '')
					->where('quote_id', '=', Auth::user()->id)
					->select('products.insurer', 'products.product_name', 'products.policy_prefix', 'products.pdf_underwritten_txt', 'information.insurance_startdate', 'information.title', 'information.full_name', 'information.typeofcover', 'information.lead_source_field', 'information.affid', 'information.status', 'information.id', 'information.quote_id', 'information.product_id', 'information.rates', 'information.policy_number', 'information.age', 'information.telephone', 'information.marketingOptOut')
					->orderBy('information.id', 'desc')
					->get();
			} else {
				$information;
			}

			$subHome = 'Completed Applications List';
			$subHomeLink = '/account/leads?status=completed';
			//Breadcrumb Titles
			$breadcrumb = [
				'title' => 'Applications',
				'subTitle' => 'Completed Applications List',
				'home' => 'Applications',
				'homeLink' => '#',
				'subHome' => $subHome,
				'subHomeLink' => $subHomeLink,
				// 'subChildHome' => 'Vew leads',
				'menu' => 'completed-leads',
				'menuColor' => '#fff',
				'MenuClass' => 'active open',
				'SubMenuClass' => 'active',
			];
		} else if ($status == 'incompleted') {

			if (Auth::user()->role == 1 || Auth::user()->role == 8) {

				$webline_info = DB::table('information')
					->where('accountnumber', '')
					->where('information.is_webline_product', 'Yes')
					->select('information.insurance_startdate', 'information.title', 'information.fname', 'information.lname', 'information.typeofcover', 'information.lead_source_field', 'information.affid', 'information.status', 'information.id', 'information.quote_id', 'information.product_id', 'information.rates', 'information.policy_number', 'information.age', 'information.telephone', 'information.date_added', 'information.time_added', 'information.typeofprotection', 'information.accountnumber')
					->orderBy('information.date_added', 'desc')
					->get();

				$webline_pro_info = array();
				foreach ($webline_info as $key => $value) {
					// Getting webline product details
					$webline_product_details = DB::table('temp_quot_webline_products')
						->join('webline_insurers', 'temp_quot_webline_products.ProviderName', '=', 'webline_insurers.insurer_code')
						->where('QuoteId', $value->quote_id)
						->where('ProductId', $value->product_id)
						->where('Rates', $value->rates)
						->first();

					if (isset($webline_product_details)) {
						$webline_information['product_name'] = $webline_product_details->ProductName;
						$webline_information['date_added'] = $value->date_added;
						$webline_information['time_added'] = $value->time_added;
						$webline_information['insurance_startdate'] = $value->insurance_startdate;
						$webline_information['title'] = $value->title;
						$webline_information['fname'] = $value->fname;
						$webline_information['lname'] = $value->lname;
						$webline_information['age'] = $value->age;
						$webline_information['telephone'] = $value->telephone;
						$webline_information['typeofcover'] = $value->typeofcover;
						$webline_information['product_id'] = $value->product_id;
						$webline_information['quote_id'] = $value->quote_id;
						$webline_information['status'] = $value->status;
						$webline_information['id'] = $value->id;
						$webline_information['rates'] = $value->rates;
						// $webline_information['accountnumber'] = $value->accountnumber;
						$webline_information['lead_source_field'] = $value->lead_source_field;
						$webline_information['typeofprotection'] = $value->typeofprotection;
						// $webline_information['insurer'] = $value->insurer;
						$webline_information['typeofprotection'] = $value->typeofprotection;
						$webline_information['insurer'] = $webline_product_details->insurer;
						$webline_information['policy_number'] = $value->policy_number;
						$webline_pro_info[] = (object) $webline_information;
					}

				}

				// getting Bi info with is_webline_product is No
				$BIP_information = DB::table('information')
					->join('products', 'information.product_id', '=', 'products.id', 'LEFT')
					->where('accountnumber', '')
					->where('information.is_webline_product', 'No')
					->select('products.insurer', 'products.product_name', 'products.policy_prefix', 'products.pdf_underwritten_txt', 'information.insurance_startdate', 'information.title', 'information.fname', 'information.lname', 'information.typeofcover', 'information.lead_source_field', 'information.affid', 'information.status', 'information.id', 'information.quote_id', 'information.product_id', 'information.rates', 'information.policy_number', 'information.age', 'information.telephone', 'information.date_added', 'information.time_added', 'information.typeofprotection')
					->orderBy('information.date_added', 'desc')
					->get();
				// getting Bi info with is_webline_product is empty
				$both_information = DB::table('information')
					->join('products', 'information.product_id', '=', 'products.id', 'LEFT')
					->where('accountnumber', '')
					->where('information.is_webline_product', '=', null)
					->select('products.insurer', 'products.product_name', 'products.policy_prefix', 'products.pdf_underwritten_txt', 'information.insurance_startdate', 'information.title', 'information.fname', 'information.lname', 'information.typeofcover', 'information.lead_source_field', 'information.affid', 'information.status', 'information.id', 'information.quote_id', 'information.product_id', 'information.rates', 'information.policy_number', 'information.age', 'information.telephone', 'information.date_added', 'information.time_added', 'information.typeofprotection', 'information.marketingOptOut')
					->orderBy('information.date_added', 'desc')
					->get();

				$BI_information = $BIP_information;
				// echo '<pre>';
				// print_r($webline_pro_info);
				// echo '</pre>';
				// exit;
			} elseif (Auth::user()->role == 3) {
				// getting affiliate incompleted leads
				$information = DB::table('information')
					->where('accountnumber', '')
					->where('quote_id', '=', Auth::user()->id)
					->orderBy('date_added', 'desc')
					->orderBy('time_added', 'desc')
					->get();
			}
			$subHome = 'Incomplete Applications List';
			$subHomeLink = '/account/leads?status=incompleted';
			//Breadcrumb Titles
			$breadcrumb = [
				'title' => 'Applications',
				'subTitle' => 'Incomplete Applications List',
				'home' => 'Applications',
				'homeLink' => '#',
				'subHome' => $subHome,
				'subHomeLink' => $subHomeLink,
				// 'subChildHome' => 'Vew leads',
				'menuColor' => '#fff',
				'menu' => 'incompleted-leads',
				'MenuClass' => 'active open',
				'SubMenuClass' => 'active',
			];
		}
		return view('admin.leads.index', compact('information', 'informations', 'policy_prefix', 'status', 'breadcrumb', 'BI_information', 'webline_pro_info'));
	}

	/**
	 * View Incompleted Lead Page
	 *
	 * @return \Illuminate\Http\Response
	 */
	public function ViewIncompleteLead(Request $request, $id = null) {

		$status = $request->status;

		// getting information
		$information = DB::table('information')
			->where('id', $id)->first();

		$questions = DB::table('underwriting_questions')
			->where('quote_id', $information->quote_id)
			->orderBy('id', 'DESC')
			->first();
		$productQuestions = DB::table('product_underwriting_questions')
			->where('product_id', $information->product_id)
			->orderBy('id', 'DESC')
			->first();
		$productQuestions = (array) $productQuestions;
		unset($productQuestions['id']);
		unset($productQuestions['product_id']);
		unset($productQuestions['posted_datetime']);
		unset($productQuestions['cover_type']);

		//print_r($productQuestions);
		//exit;
		// getting policy prefix information
		$policy_prefix = DB::table('products')
			->where('id', $information->product_id)
			->select('product_name', 'insurer', 'policy_prefix')
			->first();
		//Breadcrumb Titles
		$breadcrumb = [
			'title' => 'Incomplete Applications',
			'subTitle' => 'Edit And Preview Of Incomplete Lead',
			'home' => 'Applications',
			'homeLink' => '/account/leads?status=incompleted',
			'subHome' => 'Incomplete Application',
			'subHomeLink' => '#',
			'subChildHome' => 'View',
			'menu' => 'incompleted-leads',
			'menuColor' => '#fff',
			'MenuClass' => 'active open',
			'SubMenuClass' => 'active',
		];
		return view('admin.leads.incompleted_view', compact('information', 'questions', 'breadcrumb', 'productQuestions', 'policy_prefix'));
	}
	/**
	 * Update incomplete Lead Page
	 *
	 * @return \Illuminate\Http\Response
	 */
	public function UpdateIncompleteLead(Request $request, $id = null) {
		$input = $request->input();

		if (!empty($input['typeofprotection'])):

			$typeofprotection = $input['typeofprotection'];
		else:

			$typeofprotection = 0;
		endif;
		if (!empty($input['excessperiod'])):

			$excessperiod = $input['excessperiod'];
		else:

			$typeofprotection = 0;
		endif;
		if (!empty($input['title'])):

			$title = $input['title'];
		else:

			$title = null;
		endif;
		if (!empty($input['fname'])):

			$fname = $input['fname'];
		else:

			$fname = null;
		endif;
		if (!empty($input['lname'])):

			$lname = $input['lname'];
		else:

			$lname = null;
		endif;
		if (!empty($input['dob'])):

			$dob = $input['dob'];
		else:

			$dob = null;
		endif;
		if (!empty($input['emp_status'])):

			$emp_status = $input['emp_status'];
		else:

			$emp_status = null;
		endif;
		if (!empty($input['occupation'])):

			$occupation = $input['occupation'];
		else:

			$occupation = null;
		endif;
		if (!empty($input['employer_name'])):

			$employer_name = $input['employer_name'];
		else:

			$employer_name = null;
		endif;
		if (!empty($input['premiseName'])):

			$premiseName = $input['premiseName'];
		else:

			$premiseName = null;
		endif;
		if (!empty($input['address1'])):

			$address1 = $input['address1'];
		else:

			$address1 = null;
		endif;
		if (!empty($input['address2'])):

			$address2 = $input['address2'];
		else:

			$address2 = null;
		endif;
		if (!empty($input['address3'])):

			$address3 = $input['address3'];
		else:

			$address3 = null;
		endif;
		if (!empty($input['address4'])):

			$address4 = $input['address4'];
		else:

			$address4 = null;
		endif;
		if (!empty($input['postcode'])):

			$postcode = $input['postcode'];
		else:

			$postcode = null;
		endif;
		if (!empty($input['email'])):

			$email = $input['email'];
		else:

			$email = null;
		endif;
		if (!empty($input['telephone'])):

			$telephone = $input['telephone'];
		else:

			$telephone = null;
		endif;

		if (!empty($input['insurance_startdate'])):

			$insu_date = date('Y-m-d', strtotime($input['insurance_startdate']));

			$insurance_startdate = $insu_date;
		else:

			$insurance_startdate = null;
		endif;
		if (!empty($input['typeofcover'])):

			$typeofcover = $input['typeofcover'];
		else:

			$typeofcover = null;
		endif;
		if (!empty($input['monthlycommitment'])):

			$monthlycommitment = $input['monthlycommitment'];
		else:

			$monthlycommitment = null;
		endif;
		if (!empty($input['age'])):

			$age = $input['age'];
		else:

			$age = null;
		endif;
		if (!empty($input['monthlybenefit'])):

			$monthlybenefit = $input['monthlybenefit'];
		else:

			$monthlybenefit = null;
		endif;
		if (!empty($input['monthlycost'])):

			$monthlycost = $input['monthlycost'];
		else:

			$monthlycost = null;
		endif;
		if (!empty($input['cover'])):

			$cover = $input['cover'];
		else:

			$cover = null;
		endif;
		if (!empty($input['accountname'])):

			$accountname = $input['accountname'];
		else:

			$accountname = null;
		endif;
		if (!empty($input['accountnumber'])):

			$accountnumber = $input['accountnumber'];
		else:

			$accountnumber = null;
		endif;

		if (!empty($input['sortcode'])):
			$sortcode = $input['sortcode'];
		else:
			$sortcode = null;
		endif;

		if (!empty($input['insurer'])):
			$insurer = $input['insurer'];
		else:
			$insurer = null;
		endif;

		if (!empty($input['comment'])):
			$comment = $input['comment'];
		else:
			$comment = null;
		endif;

		if (!empty($input['status'])):
			$status = $input['status'];
		else:
			$status = 0;
		endif;

		if (!empty($input['affid'])):
			$affid = $input['affid'];
		else:
			$affid = null;
		endif;

		// print_r($input['status']);
		// exit;

		$update = DB::table('information')
			->where('id', $input['id'])
			->update([
				'typeofprotection' => $typeofprotection,
				'title' => $title,
				'fname' => $fname,
				'lname' => $lname,
				'full_name' => $fname . " " . $lname,
				'dob' => $dob,
				'emp_status' => $emp_status,
				'occupation' => $occupation,
				'employer_name' => $employer_name,
				'comment' => $comment,
				'status' => $status,
				'affid' => $affid,
				'premiseName' => $premiseName,
				'address1' => $address1,
				'address2' => $address2,
				'address3' => $address3,
				'address4' => $address4,
				'postcode' => $postcode,
				'email' => $email,
				'telephone' => $telephone,
				'insurance_startdate' => $insurance_startdate,
				'typeofcover' => $typeofcover,
				'insurer' => $insurer,
				'monthlycommitment' => $monthlycommitment,
				'age' => $age,
				'monthlybenefit' => $monthlybenefit,
				'monthlycost' => $monthlycost,
				'cover' => $cover,
				'accountname' => $accountname,
				'accountnumber' => $accountnumber,
				'sortcode' => $sortcode,
				'excessperiod' => $excessperiod,

			]);
		if (isset($update)) {

			\Flash::success('Updated Successfully.');

		} else {

			\Flash::error('Updated Successfully.');
		}

		// return redirect::route('account/incompleted-leads', array($input['id']));
		return redirect()->action("LeadController@index", '?status=incompleted');
		//return view('admin.leads.incompleted_view', compact('information','questions'));
	}

	/**
	 * View Incompleted Lead Page
	 *
	 * @return \Illuminate\Http\Response
	 */
	public function ViewCompleteLead(Request $request, $id = null) {
		// $status = $request->status;
		// getting lead information
		$information = DB::table('information')
			->where('id', $id)->first();
			//dd($information);

		$quote_data = DB::table('quotes')
			//->join('occupations', 'occupations.id', '=', 'quotes.occupation_id')
			->join('industries', 'industries.id', '=', 'quotes.industry_type_id')
			->where('quotes.id', '=', $information->quote_id)
			->select('quotes.*', 'industries.industry_name')
			->first();

			//dd($quote_data);

			if(!empty($quote_data))
			{
				$industry_name=$quote_data->industry_name;
			}
			else{
				$industry_name="-";
			}

		$mailtracker = MailTracker::where('mt_lead_id', $id)->get();

		$productQuestions = '';
		$underwriting_questions = '';

		if ($information->product_id == Config::get('constant.SHEPHERDS_FRIENDLY_LONGTERM') || $information->product_id == Config::get('constant.SHEPHERDS_FRIENDLY_SHORTERM')) {
			$questions = DB::table('webline_underwriting_question_answers')
				->where('quote_id', $information->quote_id)
				->orderBy('id', 'DESC')
				->first();

			$underwriting_questions = DB::table('webline_underwriting_questions')
				->orderBy('id', 'DESC')
				->first();
		} else {
			// Questions information
			$questions = DB::table('underwriting_questions')
				->where('quote_id', $information->quote_id)
				->orderBy('id', 'DESC')
				->first();
			$productQuestions = DB::table('product_underwriting_questions')
				->where('product_id', $information->product_id)
				->where('cover_type', $information->typeofcover)
				->orderBy('id', 'DESC')
				->first();
			$productQuestions = (array) $productQuestions;
			unset($productQuestions['id']);
			unset($productQuestions['product_id']);
			unset($productQuestions['posted_datetime']);
			unset($productQuestions['cover_type']);
		}

		// getting policy prefix information
		$policy_prefix = DB::table('products')
			->where('id', $information->product_id)
			->select('product_name', 'insurer', 'policy_prefix', 'benifit_period')
			->first();
		if ($information->benefit_period == 0 || $information->benefit_period == '') {
			$information->benefit_period = $policy_prefix->benifit_period;
		}

		$status = $this->getStatus($information);

		//Breadcrumb Titles
		$breadcrumb = [
			'title' => 'Completed Applications',
			'subTitle' => 'Preview of completed Application',
			'home' => 'Applications',
			'homeLink' => '/account/leads?status=completed',
			'subHome' => 'Completed Applications',
			'subHomeLink' => URL::to('account/leads?status=completed'),
			'subChildHome' => 'View',
			'menu' => 'completed-leads',
			'menuColor' => '#fff',
			'MenuClass' => 'active open',
			'SubMenuClass' => 'active',
		];
		return view('admin.leads.completed_view', compact('information', 'questions', 'breadcrumb', 'policy_prefix', 'productQuestions', 'underwriting_questions', 'status', 'mailtracker','industry_name'));
	}


	/**
	 * View Incompleted Lead Page
	 *
	 * @return \Illuminate\Http\Response
	 */
	public function ViewCompleteLeadOld(Request $request, $id = null) {
		// $status = $request->status;
		// getting lead information
		$information = DB::table('information')
			->where('id', $id)->first();

		$mailtracker = MailTracker::where('mt_lead_id', $id)->get();

		$productQuestions = '';
		$underwriting_questions = '';

		if ($information->product_id == Config::get('constant.SHEPHERDS_FRIENDLY_LONGTERM') || $information->product_id == Config::get('constant.SHEPHERDS_FRIENDLY_SHORTERM')) {
			$questions = DB::table('webline_underwriting_question_answers')
				->where('quote_id', $information->quote_id)
				->orderBy('id', 'DESC')
				->first();

			$underwriting_questions = DB::table('webline_underwriting_questions')
				->orderBy('id', 'DESC')
				->first();
		} else {
			// Questions information
			$questions = DB::table('underwriting_questions')
				->where('quote_id', $information->quote_id)
				->orderBy('id', 'DESC')
				->first();
			$productQuestions = DB::table('product_underwriting_questions')
				->where('product_id', $information->product_id)
				->where('cover_type', $information->typeofcover)
				->orderBy('id', 'DESC')
				->first();
			$productQuestions = (array) $productQuestions;
			unset($productQuestions['id']);
			unset($productQuestions['product_id']);
			unset($productQuestions['posted_datetime']);
			unset($productQuestions['cover_type']);
		}

		// getting policy prefix information
		$policy_prefix = DB::table('products')
			->where('id', $information->product_id)
			->select('product_name', 'insurer', 'policy_prefix', 'benifit_period')
			->first();
		if ($information->benefit_period == 0 || $information->benefit_period == '') {
			$information->benefit_period = $policy_prefix->benifit_period;
		}

		$status = $this->getStatus($information);

		//Breadcrumb Titles
		$breadcrumb = [
			'title' => 'Completed Applications',
			'subTitle' => 'Preview of completed Application',
			'home' => 'Applications',
			'homeLink' => '/account/leads?status=completed',
			'subHome' => 'Completed Applications',
			'subHomeLink' => URL::to('account/leads?status=completed'),
			'subChildHome' => 'View',
			'menu' => 'completed-leads',
			'menuColor' => '#fff',
			'MenuClass' => 'active open',
			'SubMenuClass' => 'active',
		];
		return view('admin.leads.completed_view', compact('information', 'questions', 'breadcrumb', 'policy_prefix', 'productQuestions', 'underwriting_questions', 'status', 'mailtracker'));
	}

	/**
	 * Update completed Lead Page
	 *
	 * @return \Illuminate\Http\Response
	 */
	public function UpdateCompletedLead(Request $request) {
		$input = $request->input();
		$update = DB::table('information')
			->where('id', $input['id'])
			->update(['comment' => $input['comment']]);

		if (isset($update)) {
			\Flash::success('Updated Successfully.');
		} else {
			\Flash::error('Updated Successfully.');
		}

		return redirect()->action("LeadController@ViewCompleteLead", $input['id']);
	}

	/**
	 * Edit completed Lead Page
	 *
	 * @return \Illuminate\Http\Response
	 */

	public function EditCompletedLeadOld(Request $request, $id = null) {
		//Breadcrumb Titles
		$final_update_data = [];
		$breadcrumb = [
			'title' => 'Completed Applications',
			'subTitle' => 'Edit completed Application',
			'home' => 'Leads',
			'homeLink' => URL::to('account/leads?status=completed'),
			'subHome' => 'Completed Applications',
			'subHomeLink' => URL::to('account/leads?status=completed'),
			'subChildHome' => 'Edit Application',
			'menu' => 'completed-leads',
			'MenuClass' => 'active open',
			'menuColor' => '#fff',
			'SubMenuClass' => 'active',
		];
		$information = DB::table('information')
			->where('id', $id)
			->first();

		$policy_prefix = DB::table('products')
			->where('id', $information->product_id)
			->select('policy_prefix', 'pdf_underwritten_txt', 'benifit_period')
			->first();
		if ($information->benefit_period == 0 || $information->benefit_period == '') {
			$information->benefit_period = $policy_prefix->benifit_period;
		}

		if ($request->input()) {
			$input = $request->input();
			$l_information = Information::find($input['id']);
			/*$application_date_added = date('Y-m-d');
				            $insuranceStartDate = strtr($input['editapppolicystartdate'], '/', '-');
				            $insuranceStartDate = date('Y-m-d', strtotime($insuranceStartDate));

				            $insuranceEndDate = strtr($input['editapppolicystartdate'], '/', '-');
			*/

			if ($input['title'] == '0') {
				\Flash::error('Please enter Title.');
				return view('admin.leads.edit_completed_view', compact('information', 'breadcrumb', 'policy_prefix'));
			}

			$customer_data['Title'] = $input['title'];
			$customer_data['EmailAddress'] = $input['email'];
			$customer_data['FirstName'] = substr($input['fname'], 0, 50);
			$customer_data['Surname'] = substr($input['lname'], 0, 50);
			$customer_data['DaytimeTelephone'] = $input['telephone'];
			$customer_data['AccountNumber'] = $input['accountnumber'];
			$customer_data['AccountName'] = substr($input['accountname'], 0, 18);
			$customer_data['AccountSortCode'] = $input['sortcode'];
			$customer_data['DateOfBirth'] = $l_information->dob;
			$loan_data['reason'] = $input['reason'];
			$loan_data['preferreddate'] = $input['preferreddate'];
			$loan_data['monthlycost'] = $l_information->monthlycost;
			$loan_data['mta_date'] = date('Y-m-d');

			// updating the red apple information of customer and loan -MTA

			$i = Information::with('RAFCustomerInfo')->find($input['id']);
			//  dd($i);
			if (!empty($i->RAFCustomerInfo->id)) {

				// affordability check
				$total_loan_amount = $l_information->monthlycost * 12;
				/*if($total_loan_amount > config('raf.raf_affordability_check_amount')) {
					                        $affordability_check = RAFController::getAffordabilityCheck($i);
					                        if($affordability_check['http_code']!=200){
					                            $error_message = json_encode($affordability_check['response']);
					                            \Flash::error($error_message);
					                            return redirect()->back();
					                        }
				*/
				//dd($loan_data);
				$result_data = RAFController::UpdateCustomer($input['id'], $customer_data, $loan_data, 'edit');
				if ($result_data['http_code'] != 200) {
					$error_message = json_encode($result_data['response']);
					\Flash::error($error_message);
					return redirect()->back();
				}
			}
			$data_edit = Information::where('id', $input['id'])
			        ->first();

			 $data_edit->title = $input['title'];
			 $data_edit->fname = $input['fname'];
			 $data_edit->lname = $input['lname'];
			 $data_edit->extra_applicant = $input['extra_applicant'];
			 $data_edit->full_name = $input['fname'] . " " . $input['lname'];
			 $data_edit->email = $input['email'];
			 $data_edit->accountnumber = $input['accountnumber'];
			 $data_edit->accountname = $input['accountname'];
			 $data_edit->sortcode = $input['sortcode'];
			 $data_edit->employer_name = $input['employer_name'];
			 $data_edit->preferreddate = $input['preferreddate'];
			 $data_edit->telephone = $input['telephone'];
			 $data_edit->edit_updated = 1;
			 $data_edit->updated_by = Auth::user()->id;
			 $data_edit->action = 'EDIT';
			 $data_edit->reason = $input['reason'];
			 $update_info = $data_edit->save();  

			 $update_loginfo = DB::table('log_information')
				->where('application_id', $input['id'])
				->update([
					//'title' => $input['title'],
					//'fname' => $input['fname'],
					//'lname' => $input['lname'],
					//'full_name' => $input['fname'] . " " . $input['lname'],
					'email' => $input['email'],
					]);

			/*$update_info = DB::table('information')
				->where('id', $input['id'])
				->update([
					'title' => $input['title'],
					'fname' => $input['fname'],
					'lname' => $input['lname'],
					'full_name' => $input['fname'] . " " . $input['lname'],
					'email' => $input['email'],
					'accountnumber' => $input['accountnumber'],
					'accountname' => $input['accountname'],
					'sortcode' => $input['sortcode'],
					'employer_name' => $input['employer_name'],
					'preferreddate' => $input['preferreddate'],
					'telephone' => $input['telephone'],
					'typeofcover' => $input['typeofcover'],
						                    'excessperiod' => $input['excessperiod'] ,
						                    'monthlybenefit' => $input['monthlybenefit'] ,
						                    'monthlycost' => $input['monthlycost'] ,
						                    'premiseName' => $input['premiseName'] ,
						                    'address1' => $line1,
						                    'address2' => $line2,
						                    'address3' => $line3,
						                    'address4' => $line4,
						                    'postcode' => $postcode,
						                    'postaltown' => $town,
						                    'county' => $country,
						                    'policy_number' => $input['policy_number'] ,
						                    'insurance_enddate' => $insuranceEndDate ,
					
					'edit_updated' => 1,
					'updated_by' => Auth::user()->id,
					'action' => 'EDIT',
					'reason' => $input['reason'],
				]);*/

			if ($update_info) {

				// Checking last version before inserting new information log record
				$version = DB::table('log_information')
					->select('version as last_version')
					->where('application_id', $input['id'])
					->orderBy('version', 'desc')
					->first();
				if (empty($version)) {
					$version = 0;
				} else {
					$version = $version->last_version;
				}
				$information = DB::table('information')
					->where('id', $input['id'])
					->first();
				// Adding log information
				$logId = DB::table('log_information')
					->insertGetId([
						'application_id' => $information->id,
						'product_id' => $information->product_id,
						'title' => $information->title,
						'fname' => $information->fname,
						'lname' => $information->lname,
						'extra_applicant' => $information->extra_applicant,
						'full_name' => $information->fname . " " . $information->lname,
						'dob' => $information->dob,
						'emp_status' => $information->emp_status,
						'occupation' => $information->occupation,
						'employer_name' => $information->employer_name,
						'building' => $information->building,
						'premiseName' => $information->premiseName,
						'address1' => $information->address1,
						'address2' => $information->address2,
						'address3' => $information->address3,
						'address4' => $information->address4,
						'postcode' => $information->postcode,
						'formattedPO' => $information->formattedPO,
						'postaltown' => $information->postaltown,
						'county' => $information->county,
						'email' => $information->email,
						'telephone' => $information->telephone,
						'mobile' => $information->mobile,
						'marketingOptOut' => $information->marketingOptOut,
						'under_writing_q1' => $information->under_writing_q1,
						'under_writing_ans' => $information->under_writing_ans,
						'under_writing_accept' => $information->under_writing_accept,
						'insurance_startdate' => $information->insurance_startdate,
						'transfer' => $information->transfer,
						'current_provider' => $information->current_provider,
						'current_policy_date' => $information->current_policy_date,
						'typeofcover' => $information->typeofcover,
						'loan_to_pay' => $information->loan_to_pay,
						'monthlycommitment' => $information->monthlycommitment,
						'monthlygrossincome' => $information->monthlygrossincome,
						'mortgagesalary' => $information->mortgagesalary,
						'mortgage' => $information->mortgage,
						'salary' => $information->salary,
						'age' => $information->age,
						'monthlybenefit' => $information->monthlybenefit,
						'monthlycost' => $information->monthlycost,
						'cover' => $information->cover,
						'cover_term' => $information->cover_term,
						'accept' => $information->accept,
						'accountname' => $information->accountname,
						'accountname2' => $information->accountname2,
						'accountnumber' => $information->accountnumber,
						'sortcode' => $information->sortcode,
						'iban' => $information->iban,
						'bank' => $information->bank,
						'bankbic' => $information->bankbic,
						'branch' => $information->branch,
						'branchbic' => $information->branchbic,
						'branch_address' => $information->branch_address,
						'town' => $information->town,
						'bank_postcode' => $information->bank_postcode,
						'bank_phone' => $information->bank_phone,
						'directdebits' => $information->directdebits,
						'preferreddate' => $information->preferreddate,
						'affid' => $information->affid,
						'ip' => $information->ip,
						'date_added' => $information->date_added,
						'time_added' => $information->time_added,
						'guid' => $information->guid,
						'status' => $information->status,
						'comment' => $information->comment,
						'mail_send' => $information->mail_send,
						'mms_senddate' => $information->mms_senddate,
						'mms_sendmonth' => $information->mms_sendmonth,
						'subscription' => $information->subscription,
						'formtype' => $information->formtype,
						'typeofprotection' => $information->typeofprotection,
						'excessperiod' => $information->excessperiod,
						'insurer' => $information->insurer,
						'smoker' => $information->smoker,
						'life_cover' => $information->life_cover,
						'life_cover_term' => $information->life_cover_term,
						'life_cover_type' => $information->life_cover_type,
						'life_cover_premium_type' => $information->life_cover_premium_type,
						'CIC' => $information->CIC,
						'lead_from' => $information->lead_from,
						'lead_source_field' => $information->lead_source_field,
						'benefit_period' => $information->benefit_period,
						'duration' => $information->duration,
						'duration_year' => $information->duration_year,
						'duration_month' => $information->duration_month,
						'contractor_deirectdebitref' => $information->contractor_deirectdebitref,
						'contractor_id' => $information->contractor_id,
						'policy_number' => $information->policy_number,
						'policy_number_full' => $information->policy_number_full,
						'mta_updated' => "0",
						'renew_updated' => "0",
						'insurance_enddate' => $information->insurance_enddate,
						'version' => $version + 1,
						'edit_updated' => $information->edit_updated,
						'action' => 'EDIT',
						'reason' => $input['reason'],
					]);

				if (!empty($i->RAFCustomerInfo->id)) {
					// $raf_customer_id = $result_data['response']['CustomerId'];

					$raf_docs = RAFLoanDocuments::where('CustomerId', $i->RAFCustomerInfo->id)
						->where('action_type', "edit")
						->whereNull('log_info_id')
						->get();
					foreach ($raf_docs as $raf_doc) {
						$raf_doc->log_info_id = $logId;
						$raf_doc->save();
					}
				}
				$logInfo = LogInformation::find($logId);
				//file saving
				$file_name_saved =
				$this->fileuploader->saveEditGeneratePdf($logId);
				$logInfo->schedule_pdf = $file_name_saved;
				$logInfo->action = "EDIT";
				$logInfo->save();
				$pdf_url = public_path() . $file_name_saved;

				$logInfo = $logInfo->toArray();

				foreach ($final_update_data as $key => $value) {
					$l_information->$key = $value;
				}

				$l_information->schedule_pdf = $file_name_saved;
				$l_information->save();

				$activity = Activity::all()->last();
				$activity->delete();

				$activity = Activity::all()->last();
				$activity->description = "edit";
				$activity->save();
				Flash::success('Updated successfully.');
				return redirect()->action("LeadController@index", '?status=completed');

				// Pdf download button
				$downloadBtn = '<input type="hidden" value="download_btn" id="download_btn" /><input type="hidden" value="' . $pdf_url . '" id="download_file_path" />';

				\Flash::success('Updated successfully.');
			} else {
				\Flash::error('Not updated.');
			}
		}

		if (isset($pdf_url)) {
			return view('admin.leads.edit_completed_view', compact('information', 'breadcrumb', 'policy_prefix', 'pdf_url', 'downloadBtn'));
		} else {
			return view('admin.leads.edit_completed_view', compact('information', 'breadcrumb', 'policy_prefix'));
		}
	}

	/**
	 * Edit completed Lead Page
	 *
	 * @return \Illuminate\Http\Response
	 */
	public function EditCompletedLead(Request $request, $id = null) {
		//Breadcrumb Titles
		$final_update_data = [];
		$breadcrumb = [
			'title' => 'Completed Applications',
			'subTitle' => 'Edit completed Application',
			'home' => 'Leads',
			'homeLink' => URL::to('account/leads?status=completed'),
			'subHome' => 'Completed Applications',
			'subHomeLink' => URL::to('account/leads?status=completed'),
			'subChildHome' => 'Edit Application',
			'menu' => 'completed-leads',
			'MenuClass' => 'active open',
			'menuColor' => '#fff',
			'SubMenuClass' => 'active',
		];
		$information = DB::table('information')
			->where('id', $id)
			->first();

		$quote_data = DB::table('quotes')
			->join('occupations', 'occupations.id', '=', 'quotes.occupation_id')
			->join('industries', 'industries.id', '=', 'quotes.industry_type_id')
			->where('quotes.id', '=', $information->quote_id)
			->select('quotes.*', 'occupations.occupation_name', 'industries.industry_name')
			->first();

		if(empty($quote_data))
		{
			$industry_name="";
		}
		else
		{
			$industry_name=$quote_data->industry_name;
		}

		$policy_prefix = DB::table('products')
			->where('id', $information->product_id)
			->select('policy_prefix', 'pdf_underwritten_txt', 'benifit_period')
			->first();
		if ($information->benefit_period == 0 || $information->benefit_period == '') {
			$information->benefit_period = $policy_prefix->benifit_period;
		}

		if ($request->input()) {
			$input = $request->input();
			$l_information = Information::find($input['id']);
			/*$application_date_added = date('Y-m-d');
				            $insuranceStartDate = strtr($input['editapppolicystartdate'], '/', '-');
				            $insuranceStartDate = date('Y-m-d', strtotime($insuranceStartDate));

				            $insuranceEndDate = strtr($input['editapppolicystartdate'], '/', '-');
			*/

			if ($input['title'] == '0') {
				\Flash::error('Please enter Title.');
				return view('admin.leads.edit_completed_view', compact('information', 'breadcrumb', 'policy_prefix'));
			}

			$customer_data['Title'] = $input['title'];
			$customer_data['EmailAddress'] = $input['email'];
			$customer_data['FirstName'] = substr($input['fname'], 0, 50);
			$customer_data['Surname'] = substr($input['lname'], 0, 50);
			$customer_data['DaytimeTelephone'] = $input['telephone'];
			$customer_data['AccountNumber'] = $input['accountnumber'];
			$customer_data['AccountName'] = substr($input['accountname'], 0, 18);
			$customer_data['AccountSortCode'] = $input['sortcode'];
			$customer_data['DateOfBirth'] = $l_information->dob;
			$loan_data['reason'] = $input['reason'];
			$loan_data['preferreddate'] = $input['preferreddate'];
			$loan_data['monthlycost'] = $l_information->monthlycost;
			$loan_data['mta_date'] = date('Y-m-d');

			// updating the red apple information of customer and loan -MTA

			$i = Information::with('RAFCustomerInfo')->find($input['id']);
			//  dd($i);
			if (!empty($i->RAFCustomerInfo->id)) {

				// affordability check
				$total_loan_amount = $l_information->monthlycost * 12;
				/*if($total_loan_amount > config('raf.raf_affordability_check_amount')) {
					                        $affordability_check = RAFController::getAffordabilityCheck($i);
					                        if($affordability_check['http_code']!=200){
					                            $error_message = json_encode($affordability_check['response']);
					                            \Flash::error($error_message);
					                            return redirect()->back();
					                        }
				*/
				//dd($loan_data);
				$result_data = RAFController::UpdateCustomer($input['id'], $customer_data, $loan_data, 'edit');
				if ($result_data['http_code'] != 200) {
					$error_message = json_encode($result_data['response']);
					\Flash::error($error_message);
					return redirect()->back();
				}
			}
			$data_edit = Information::where('id', $input['id'])
					->first();
					

			if(!empty($input['industry_type_id']))
			$industry_type_id = CommonComponent::getIndustryDetails($input['industry_type']);
			else
			$industry_type_id=0;	
						
			if(!empty($input['occupation_type']))
			$occupation_type_id = CommonComponent::getOccupationDetails($input['occupation_type']);
			else
			$occupation_type_id=0;
			
			if($occupation_type_id!=0)
			{
				$quote_update_status = quotes::where('id', $data_edit->quote_id)
			->update([

			//	'industry_type_id' => $industry_type_id,
				'occupation_id' => $occupation_type_id,

			]);
			}
			
			if($industry_type_id!=0)
			{
				$quote_update_status = quotes::where('id', $data_edit->quote_id)
			->update([

				'industry_type_id' => $industry_type_id,
				//'occupation_id' => $occupation_type_id,

			]);
			}

			 $data_edit->title = $input['title'];
			 $data_edit->fname = $input['fname'];
			 $data_edit->lname = $input['lname'];
			 $data_edit->extra_applicant = $input['extra_applicant'];
			 $data_edit->full_name = $input['fname'] . " " . $input['lname'];
			 $data_edit->email = $input['email'];
			 $data_edit->occupation = $input['occupation_type'];
			 $data_edit->accountnumber = $input['accountnumber'];
			 $data_edit->accountname = $input['accountname'];
			 $data_edit->sortcode = $input['sortcode'];
			 $data_edit->emp_status = $input['emp_status'];
			 $data_edit->employer_name = $input['employer_name'];
			 $data_edit->smoker = $input['smoker'];
			 $data_edit->salary = $input['monthly_gross_income']/12;
			 $data_edit->employer_startdate = $input['employer_startdate'];
			 $data_edit->preferreddate = $input['preferreddate'];
			 $data_edit->telephone = $input['telephone'];
			 $data_edit->alternate_email = $input['alternate_email'];
			 $data_edit->alternate_phone = $input['alternate_phone'];
			 $data_edit->extra_applicant_dob = $input['extra_applicant_dob'];

			 $data_edit->transfer = ($input['transfer'] != '' ? $input['transfer'] : '');
			 $data_edit->current_provider = ($input['current_provider'] != '' ? $input['current_provider'] : '');
			 $data_edit->current_policy_date = ($input['current_policy_date'] != '' ? $input['current_policy_date'] : '');

			 $data_edit->extra_applicant_occupation = $input['extra_applicant_occupation'];
			 $data_edit->edit_updated = 1;
			 $data_edit->updated_by = Auth::user()->id;
			 $data_edit->action = 'EDIT';
			 $data_edit->reason = $input['reason'];
			 $update_info = $data_edit->save();  

			 $update_loginfo = DB::table('log_information')
				->where('application_id', $input['id'])
				->update([
					//'title' => $input['title'],
					//'fname' => $input['fname'],
					//'lname' => $input['lname'],
					//'full_name' => $input['fname'] . " " . $input['lname'],
					'email' => $input['email'],
					]);

			/*$update_info = DB::table('information')
				->where('id', $input['id'])
				->update([
					'title' => $input['title'],
					'fname' => $input['fname'],
					'lname' => $input['lname'],
					'full_name' => $input['fname'] . " " . $input['lname'],
					'email' => $input['email'],
					'accountnumber' => $input['accountnumber'],
					'accountname' => $input['accountname'],
					'sortcode' => $input['sortcode'],
					'employer_name' => $input['employer_name'],
					'preferreddate' => $input['preferreddate'],
					'telephone' => $input['telephone'],
					'typeofcover' => $input['typeofcover'],
						                    'excessperiod' => $input['excessperiod'] ,
						                    'monthlybenefit' => $input['monthlybenefit'] ,
						                    'monthlycost' => $input['monthlycost'] ,
						                    'premiseName' => $input['premiseName'] ,
						                    'address1' => $line1,
						                    'address2' => $line2,
						                    'address3' => $line3,
						                    'address4' => $line4,
						                    'postcode' => $postcode,
						                    'postaltown' => $town,
						                    'county' => $country,
						                    'policy_number' => $input['policy_number'] ,
						                    'insurance_enddate' => $insuranceEndDate ,
					
					'edit_updated' => 1,
					'updated_by' => Auth::user()->id,
					'action' => 'EDIT',
					'reason' => $input['reason'],
				]);*/

			if ($update_info) {

				// Checking last version before inserting new information log record
				$version = DB::table('log_information')
					->select('version as last_version')
					->where('application_id', $input['id'])
					->orderBy('version', 'desc')
					->first();
				if (empty($version)) {
					$version = 0;
				} else {
					$version = $version->last_version;
				}
				$information = DB::table('information')
					->where('id', $input['id'])
					->first();
				// Adding log information
				$logId = DB::table('log_information')
					->insertGetId([
						'application_id' => $information->id,
						'product_id' => $information->product_id,
						'title' => $information->title,
						'fname' => $information->fname,
						'lname' => $information->lname,
						'extra_applicant' => $information->extra_applicant,
						'full_name' => $information->fname . " " . $information->lname,
						'dob' => $information->dob,
						'emp_status' => $information->emp_status,
						'occupation' => $information->occupation,
						'employer_name' => $information->employer_name,
						'building' => $information->building,
						'premiseName' => $information->premiseName,
						'address1' => $information->address1,
						'address2' => $information->address2,
						'address3' => $information->address3,
						'address4' => $information->address4,
						'postcode' => $information->postcode,
						'formattedPO' => $information->formattedPO,
						'postaltown' => $information->postaltown,
						'county' => $information->county,
						'email' => $information->email,
						'telephone' => $information->telephone,
						'mobile' => $information->mobile,
						'marketingOptOut' => $information->marketingOptOut,
						'under_writing_q1' => $information->under_writing_q1,
						'under_writing_ans' => $information->under_writing_ans,
						'under_writing_accept' => $information->under_writing_accept,
						'insurance_startdate' => $information->insurance_startdate,
						'transfer' => $information->transfer,
						'current_provider' => $information->current_provider,
						'current_policy_date' => $information->current_policy_date,
						'typeofcover' => $information->typeofcover,
						'loan_to_pay' => $information->loan_to_pay,
						'monthlycommitment' => $information->monthlycommitment,
						'monthlygrossincome' => $information->monthlygrossincome,
						'mortgagesalary' => $information->mortgagesalary,
						'mortgage' => $information->mortgage,
						'salary' => $information->salary,
						'age' => $information->age,
						'monthlybenefit' => $information->monthlybenefit,
						'monthlycost' => $information->monthlycost,
						'cover' => $information->cover,
						'cover_term' => $information->cover_term,
						'accept' => $information->accept,
						'accountname' => $information->accountname,
						'accountname2' => $information->accountname2,
						'accountnumber' => $information->accountnumber,
						'sortcode' => $information->sortcode,
						'iban' => $information->iban,
						'bank' => $information->bank,
						'bankbic' => $information->bankbic,
						'branch' => $information->branch,
						'branchbic' => $information->branchbic,
						'branch_address' => $information->branch_address,
						'town' => $information->town,
						'bank_postcode' => $information->bank_postcode,
						'bank_phone' => $information->bank_phone,
						'directdebits' => $information->directdebits,
						'preferreddate' => $information->preferreddate,
						'affid' => $information->affid,
						'ip' => $information->ip,
						'date_added' => $information->date_added,
						'time_added' => $information->time_added,
						'guid' => $information->guid,
						'status' => $information->status,
						'comment' => $information->comment,
						'mail_send' => $information->mail_send,
						'mms_senddate' => $information->mms_senddate,
						'mms_sendmonth' => $information->mms_sendmonth,
						'subscription' => $information->subscription,
						'formtype' => $information->formtype,
						'typeofprotection' => $information->typeofprotection,
						'excessperiod' => $information->excessperiod,
						'insurer' => $information->insurer,
						'smoker' => $information->smoker,
						'life_cover' => $information->life_cover,
						'life_cover_term' => $information->life_cover_term,
						'life_cover_type' => $information->life_cover_type,
						'life_cover_premium_type' => $information->life_cover_premium_type,
						'CIC' => $information->CIC,
						'lead_from' => $information->lead_from,
						'lead_source_field' => $information->lead_source_field,
						'benefit_period' => $information->benefit_period,
						'duration' => $information->duration,
						'duration_year' => $information->duration_year,
						'duration_month' => $information->duration_month,
						'contractor_deirectdebitref' => $information->contractor_deirectdebitref,
						'contractor_id' => $information->contractor_id,
						'policy_number' => $information->policy_number,
						'policy_number_full' => $information->policy_number_full,
						'mta_updated' => "0",
						'renew_updated' => "0",
						'insurance_enddate' => $information->insurance_enddate,
						'version' => $version + 1,
						'edit_updated' => $information->edit_updated,
						'action' => 'EDIT',
						'reason' => $input['reason'],
					]);

				if (!empty($i->RAFCustomerInfo->id)) {
					// $raf_customer_id = $result_data['response']['CustomerId'];

					$raf_docs = RAFLoanDocuments::where('CustomerId', $i->RAFCustomerInfo->id)
						->where('action_type', "edit")
						->whereNull('log_info_id')
						->get();
					foreach ($raf_docs as $raf_doc) {
						$raf_doc->log_info_id = $logId;
						$raf_doc->save();
					}
				}
				$logInfo = LogInformation::find($logId);
				//file saving
				$file_name_saved =
				$this->fileuploader->saveEditGeneratePdf($logId);
				$logInfo->schedule_pdf = $file_name_saved;
				$logInfo->action = "EDIT";
				$logInfo->save();
				$pdf_url = public_path() . $file_name_saved;

				$logInfo = $logInfo->toArray();

				foreach ($final_update_data as $key => $value) {
					$l_information->$key = $value;
				}

				$l_information->schedule_pdf = $file_name_saved;
				$l_information->save();

				$activity = Activity::all()->last();
				$activity->delete();

				$activity = Activity::all()->last();
				$activity->description = "edit";
				$activity->save();
				Flash::success('Updated successfully.');
				return redirect()->action("LeadController@index", '?status=completed');

				// Pdf download button
				$downloadBtn = '<input type="hidden" value="download_btn" id="download_btn" /><input type="hidden" value="' . $pdf_url . '" id="download_file_path" />';

				\Flash::success('Updated successfully.');
			} else {
				\Flash::error('Not updated.');
			}
		}

		if (isset($pdf_url)) {
			return view('admin.leads.edit_completed_view', compact('information', 'breadcrumb', 'policy_prefix', 'pdf_url', 'downloadBtn'));
		} else {
			return view('admin.leads.edit_completed_view', compact('industry_name','quote_data','information', 'breadcrumb', 'policy_prefix'));
		}
	}


	/**
	 * generate pdf for edit application in leads
	 * @return [type] [description]
	 */
	public function downloadEMRPdf(Request $request, $id = null) {

		// Adding log information if not exists
		$this->helper->insertLogInfo($request->id);

		$logInfo = DB::table('log_information')
			->where('log_information.application_id', $request->id)
			->orderBy('id', 'desc')
			->first();

		$file_path = $this->fileuploader->createGenerateScheduleFileIfnotExists($logInfo->id);

		$file = public_path() . $file_path;
		return response()->download($file);

	}

	/**
	 * generate pdf for MTA applications in leads
	 * @return [type] [description]
	 */
	public function downloadMTAPdf(Request $request) {
		// Adding log information if not exists
		$this->helper->insertLogInfo($request->id);

		$logInfo = DB::table('log_information')
			->where('log_information.application_id', $request->id)
			->orderBy('id', 'desc')
			->first();

		$file_path = $this->fileuploader->createMtaFileIfnotExists($logInfo->id);

		if (!empty($request->send_email)) {
			$request->merge(["logInfoId" => $logInfo->id]);
			return $this->downloadMTAPdfLater($request, true);
		}
		return $this->helper->download($file_path);
	}

	public function downloadMTAPdfLater(Request $request, $email_flag = false) {
		// Adding log information if not exists
		// dd($request->all());
		$file_path = $this->fileuploader->createMtaFileIfnotExists($request->logInfoId);

		if (isset($request->logInfoId) && !$email_flag) {
			return $this->helper->download($file_path);
		}

		if ($email_flag) {
			$status = $this->helper->sendEmailWithMTADocuemnts($request->logInfoId, $request);
			if ($status) {
				if ($request->ajax()) {
					return response()->json(['status' => 'success', 'message' => 'Email sent successfully']);
				} else {
					flash()->sucess("Email sent successfully");
					return rediret()->back();
				}
			} else {
				if ($request->ajax()) {
					return response()->json(['status' => 'error', 'message' => "Something went wrong in processing request"]);
				} else {
					flash()->error("Something went wrong in processing request");
					return rediret()->back();
				}
			}
		}
	}

	public function downloadCancelPdfLater(Request $request, $email_flag = false) {
		// Adding log information if not exists
		// dd($request->all());
		$file_path = $this->fileuploader->createCancelFileIfnotExists($request->logInfoId);

		if (isset($request->logInfoId) && !$email_flag) {
			return $this->helper->download($file_path);
		}

		if ($email_flag) {
			$status = $this->helper->sendEmailWithCancelDocuemnts($request->logInfoId, $request);
			if ($status) {
				if ($request->ajax()) {
					return response()->json(['status' => 'success', 'message' => 'Email sent successfully']);
				} else {
					flash()->sucess("Email sent successfully");
					return rediret()->back();
				}
			} else {
				if ($request->ajax()) {
					return response()->json(['status' => 'error', 'message' => "Something went wrong in processing request"]);
				} else {
					flash()->error("Something went wrong in processing request");
					return rediret()->back();
				}
			}
		}
	}


	public function downloadRejectPdfLater(Request $request, $email_flag = false) {
		// Adding log information if not exists
		// dd($request->all());
	

		if ($email_flag) {
			$status = $this->helper->sendEmailWithRejectDocuemnts($request->logInfoId, $request);
			if ($status) {
				if ($request->ajax()) {
					return response()->json(['status' => 'success', 'message' => 'Email sent successfully']);
				} else {
					flash()->sucess("Email sent successfully");
					return rediret()->back();
				}
			} else {
				if ($request->ajax()) {
					return response()->json(['status' => 'error', 'message' => "Something went wrong in processing request"]);
				} else {
					flash()->error("Something went wrong in processing request");
					return rediret()->back();
				}
			}
		}
	}

	/**
	 * generate pdf for Renewal applications in leads
	 * @return [type] [description]
	 */
	public function downloadRenwalPdf(Request $request, $id = null) {

		if (empty($id)) {
			$id = $request->id;
		}
		$log_info = LogInformation::where('application_id', $id)
			->orderBy('id', 'DESC')
			->first();

		$request->request->add(['logInfoId' => $log_info->id]);
		if (!empty($request->send_email) && ($request->send_email == "true")) {
			return $this->downloadRenewPdfLater($request, true);
		} else {
			return $this->downloadRenewPdfLater($request);
		}

	}

	public function downloadRenewPdfLater(Request $request, $email_flag = false) {
		// Adding log information if not exists
		// dd($request->logInfoId);
		// pending
		$file_path = $this->fileuploader->createRenewFileIfnotExists($request->logInfoId);

		if (isset($request->logInfoId) && !$email_flag) {
			return $this->helper->download($file_path);
		}

		// email content needed from client
		if ($email_flag) {
			$status = $this->helper->sendEmailWithRenewDocuemnts($request->logInfoId, $request);
			if ($status) {
				if ($request->ajax()) {
					return response()->json(['status' => 'success', 'message' => 'Email sent successfully']);
				} else {
					flash()->sucess("Email sent successfully");
					return rediret()->back();
				}
			} else {
				if ($request->ajax()) {
					return response()->json(['status' => 'error', 'message' => "Something went wrong in processing request"]);
				} else {
					flash()->error("Something went wrong in processing request");
					return rediret()->back();
				}
			}
		}
	}

	/**
	 * generate pdf for policy transfer from best income to simple applications in leads
	 * @return [type] [description]
	 */
	public function downloadTransferFromBestToSimplePdf(Request $request, $id = null) {

		$last_year_monthly_premium = $request->last_year_monthly_premium;
		$logInfo = DB::table('information')
			->where('information.id', $request->id)
			->join('products', 'information.product_id', '=', 'products.id')
			->first();
		// pdf path
		$pdf_name = 'Simpleincome_Application_' . date('ymdHis') . '.pdf';
		$pdf_url = public_path() . '/uploads/pdf/admin/' . $pdf_name;

		$headers = array(
			'Content-Type' => 'application/pdf',
		);
		$renew_content = view('admin.leads.pdf.pdf-slices.renew-content')
			->with('logInfo', $logInfo)
			->render();

		$pdf = PDF::loadView('admin.leads.pdf.renew_application', compact('logInfo', 'renew_content', 'last_year_monthly_premium'))->setPaper('a4', 'portrait')->setWarnings(false)->save($pdf_url);

		// return view('admin.leads.pdf.renew_application', compact('logInfo','renew_content'));
		return Response::download($pdf_url, $pdf_name, $headers);

	}

	/**
	 * MTA Page
	 *
	 * @return \Illuminate\Http\Response
	 */
	public function mtaCompletedLead(Request $request, $id = null) {
		$information = DB::table('information')
			->where('id', $id)
			->first();

		$policy_prefix = DB::table('products')
			->where('id', $information->product_id)
			->select('policy_prefix', 'pdf_underwritten_txt', 'benifit_period')
			->first();
		if ($information->benefit_period == 0 || $information->benefit_period == '') {
			$information->benefit_period = $policy_prefix->benifit_period;
		}

		//Breadcrumb Titles
		$breadcrumb = [
			'title' => 'Completed Leads',
			'subTitle' => 'Edit MTA',
			'home' => 'Leads',
			'homeLink' => URL::to('account/leads?status=completed'),
			'subHome' => 'Completed Leads',
			'subHomeLink' => URL::to('account/leads?status=completed'),
			'subChildHome' => 'MTA',
			'menu' => 'completed-leads',
			'menuColor' => '#fff',
			'MenuClass' => 'active open',
			'SubMenuClass' => 'active',
		];

		if ($request->input()) {

			$final_update_data = [];
			$input = $request->input();
			$l_information = Information::find($input['id']);

			$mta_activity = DB::table('activity_log')
				->where('subject_id', $input['id'])
				->where('description', 'mta')
				->orderBy('id', 'desc')
				->first();
			//  print_r($mta_activity);

			$current_date = Carbon::now();
			$current_hours = Carbon::now()->format('H');
			$current_date = explode(" ", $current_date);
			$current_date = $current_date[0];
			if ($mta_activity) {
				$updated_at = explode(" ", $mta_activity->updated_at);
				$updated_at = $updated_at[0];

				$current_date = Carbon::parse($current_date);
				$mta_date = Carbon::parse($updated_at);

				$diff_in_days_mta = $current_date->diffInDays($mta_date);

				//echo $diff_in_days_mta;

				// exit;
				if (($diff_in_days_mta == 1 && $current_hours < 8) || $diff_in_days_mta == 0) {

					//  echo "in this";
					// exit;
					  \Flash::error('Not eligible to MTA on the same day.');

					  return view('admin.leads.mta_completed_lead', compact('information','breadcrumb','policy_prefix'));
					//  exit;
					// $mta_eligibile=0;
				}

			}
			$application_date_added = date('Y-m-d');
			$monthlyPremium = $input['monthlycost'];

			$information = DB::table('information')
				->where('id', $input['id'])
				->first();

			// Adding log information if not exists
			$this->helper->insertLogInfo($input['id']);

			//echo  $input['policyStartdate'];
			//exit;
			if ($input['policyStartdate'] != ""):

				$res = explode("/", $input['policyStartdate']);
				$mid_term_date = $res[2] . "-" . $res[1] . "-" . $res[0];

				$midterm_start_date = $mid_term_date;
				$year = (int) $res[2] + 1;
				if ($res[0] != '0') {
					$day = (int) $res[0] - 1;
				} else {
					$day = $res[0];
				}

				$insuranceEndDate = $year . "-" . $res[1] . "-" . $day;
			else:
				$midterm_start_date = $insuranceEndDate = $input['hidden_applicationstartdate'];
			endif;
			$monthlybenefit = $input['monthlybenefit'];
			$benifitamountValue = $monthlybenefit;
			$insurer_type = $input['insurer_type'];
			if ($insurer_type == "UKGI") {

				if ($benifitamountValue == '100') {
					$benifitamountValue = '100';
				} else if ($benifitamountValue > '100' && $benifitamountValue <= '200') {
					$benifitamountValue = '101-200';
				} else if ($benifitamountValue > '100' && $benifitamountValue <= '300') {
					$benifitamountValue = '201-300';
				} else if ($benifitamountValue > '100' && $benifitamountValue <= '400') {
					$benifitamountValue = '301-400';
				} else if ($benifitamountValue > '100' && $benifitamountValue <= '500') {
					$benifitamountValue = '401-500';
				} else if ($benifitamountValue > '100' && $benifitamountValue <= '600') {
					$benifitamountValue = '501-600';
				} else if ($benifitamountValue > '100' && $benifitamountValue <= '700') {
					$benifitamountValue = '601-700';
				} else if ($benifitamountValue > '100' && $benifitamountValue <= '800') {
					$benifitamountValue = '701-800';
				} else if ($benifitamountValue > '100' && $benifitamountValue <= '900') {
					$benifitamountValue = '801-900';
				} else if ($benifitamountValue > '100' && $benifitamountValue <= '1000') {
					$benifitamountValue = '901-1000';
				} else if ($benifitamountValue > '100' && $benifitamountValue <= '1100') {
					$benifitamountValue = '1001-1100';
				} else if ($benifitamountValue > '100' && $benifitamountValue <= '1200') {
					$benifitamountValue = '1101-1200';
				} else if ($benifitamountValue > '100' && $benifitamountValue <= '1300') {
					$benifitamountValue = '1201-1300';
				} else if ($benifitamountValue > '100' && $benifitamountValue <= '1400') {
					$benifitamountValue = '1301-1400';
				} else if ($benifitamountValue > '100' && $benifitamountValue <= '1500') {
					$benifitamountValue = '1401-1500';
				} else if ($benifitamountValue > '100' && $benifitamountValue <= '1600') {
					$benifitamountValue = '1501-1600';
				} else if ($benifitamountValue > '100' && $benifitamountValue <= '1700') {
					$benifitamountValue = '1601-1700';
				} else if ($benifitamountValue > '100' && $benifitamountValue <= '1800') {
					$benifitamountValue = '1701-1800';
				} else if ($benifitamountValue > '100' && $benifitamountValue <= '1900') {
					$benifitamountValue = '1801-1900';
				} else if ($benifitamountValue > '100' && $benifitamountValue <= '2000') {
					$benifitamountValue = '1901-2000';
				} else if ($benifitamountValue > '100' && $benifitamountValue <= '2100') {
					$benifitamountValue = '2001-2100';
				} else if ($benifitamountValue > '100' && $benifitamountValue <= '2200') {
					$benifitamountValue = '2101-2200';
				} else if ($benifitamountValue > '100' && $benifitamountValue <= '2300') {
					$benifitamountValue = '2201-2300';
				} else if ($benifitamountValue > '100' && $benifitamountValue <= '2400') {
					$benifitamountValue = '2301-2400';
				} else {
					$benifitamountValue = '2401-2500';
				}
				$benifitamountValue = explode('-', $benifitamountValue);

				$benfitperiodValue = $input['benefit_period'];
				$monthly_cost_retail_price = DB::table('retail_price_programming')
					->where([
						'min_val' => $benifitamountValue[0],
						'max_val' => $benifitamountValue[1],
						'excess_period' => $input['excessperiod'],
						'cover_type' => $input['typeofcover'],
						'benifit_period' => $input['benefit_period']]
					)
					->first();

				if (empty($monthly_cost_retail_price)) {
					$mntCost = 0;
				} else {
					$mntCost = $monthly_cost_retail_price->monthly_cost_retail_price;
				}

				$monthly_cost_retail_price = $mntCost * $monthlybenefit;
				$monthly_cost_retail_price = number_format($monthly_cost_retail_price, 2, '.', '');

			} elseif ($insurer_type == "Cigna Mortgage Insurance") {
				$monthlybenefit = $input['monthlybenefit'];
				$monthly_cost_retail_price = $monthlybenefit * 0.04;
				$monthly_cost_retail_price = number_format($monthly_cost_retail_price, 2, '.', '');

			} elseif ($insurer_type == "Cigna Loan Insurance") {
				$monthlybenefit = $input['monthlybenefit'];
				$monthly_cost_retail_price = $monthlybenefit * 0.05;
				$monthly_cost_retail_price = number_format($monthly_cost_retail_price, 2, '.', '');

			}

			$excessperiod1 = $input['excessperiod'];

			if (!empty($input['form_new_line1']) || !empty($input['line1'])) {
				if (!empty($input['form_new_line1'])) {
					// selected address
					$line1 = $input['form_new_line1'];
					$line2 = $input['form_new_line2'];
					$line3 = $input['form_new_line3'];
					$line4 = $input['form_new_line4'];
					$town = $input['form_new_town'];
					$country = $input['form_new_country'];
					$postcode = $input['form_new_postcode'];
				}
				if (!empty($input['line1'])) {
					// manually entered address
					$line1 = $input['line1'];
					$line2 = $input['line2'];
					$line3 = $input['line3'];
					$line4 = $input['line4'];
					$town = $input['town'];
					$country = $input['country'];
					$postcode = $input['postal_code'];
				}

				$customer_data['Title'] = $input['title'];
				$customer_data['FirstName'] = substr($input['fname'], 0, 50);
				$customer_data['Surname'] = substr($input['lname'], 0, 50);
				$customer_data['DateOfBirth'] = $input['dob'];
				$loan_data['monthlycost'] = $monthlyPremium;
				$customer_data['Address1'] = substr($line1, 0, 80);
				$customer_data['Address2'] = substr($line2, 0, 50);
				$customer_data['Address3'] = substr($line3, 0, 50);
				$customer_data['Address4'] = substr($line4, 0, 50);
				$customer_data['Postcode'] = $postcode;
				$loan_data['mta_date'] = $midterm_start_date;
				$loan_data['reason'] = $input['reason'];
				$loan_data['preferreddate'] = $information->preferreddate;

				// updating the red apple information of customer and loan -MTA

				$i = Information::with('RAFCustomerInfo')->find($input['id']);
				if (!empty($i->RAFCustomerInfo->id)) {

					if($information->monthlycost==$monthlyPremium)
					{

						$result_data = RAFController::UpdateCustomer($input['id'], $customer_data, $loan_data, 'edit');
						if ($result_data['http_code'] != 200) {
							$error_message = json_encode($result_data['response']);
							\Flash::error($error_message);
							return redirect()->back();
						}
					}

					// affordability check
				/*	$total_loan_amount = $monthlyPremium * 12;
					if ($total_loan_amount > config('raf.raf_affordability_check_amount')) {
						$affordability_check = RAFController::getAffordabilityCheck($input['id']);
						if ($affordability_check['http_code'] != 200) {
							$error_message = json_encode($affordability_check['response']);
							\Flash::error($error_message);
							return redirect()->back();
						}
					}
					$result_data = RAFController::UpdateCustomer($input['id'], $customer_data, $loan_data, 'mta');
					if ($result_data['http_code'] != 200) {
						$error_message = json_encode($result_data['response']);
						\Flash::error($error_message);
						return redirect()->back();
					}*/

				
				}

				//$age = $information->age;

				$insurance_actual = date('Y-m-d', strtotime($information->insurance_startdate));

				// $dob=date('Y-m-d',strtotime($information->dob));
				$dob = explode("/", $input['dob']);
				$dob_actual = $dob[2] . "-" . $dob[1] . "-" . $dob[0];

				$dob = Carbon::parse($dob_actual)->format('Y-m-d');

				$age = date_diff(date_create($dob), date_create($insurance_actual))->y;
				
				$data = Information::where('id', $input['id'])
			        	->first();
			     $data->title = $input['title'];
				 $data->fname = $input['fname'];
				 $data->lname = $input['lname'];
				 $data->full_name = $input['fname'] . " " . $input['lname'];
				 $data->dob = $input['dob'];
				 $data->typeofcover = $input['typeofcover'];
				 $data->excessperiod = $excessperiod1;
				 $data->monthlybenefit = $input['monthlybenefit'];
				 $data->monthlycost = $monthlyPremium;
				 $data->premiseName = $input['premiseName'];
				 $data->address1 = $line1;
				 $data->address2 = $line2;
				 $data->address3 = $line3;
				 $data->address4 = $line4;
				 $data->postcode = $postcode;
				 $data->postaltown = $town;
				 $data->county = $country;
				 $data->mta_updated = 1;
				 $data->mta_date = $midterm_start_date;
				 $data->action = 'MTA';
				 $data->reason = $input['reason'];
				 $data->age = $age; 

				 $update_info=$data->save();   	
				/*$update_info = DB::table('information')
					->where('id', $input['id'])
					->update([
						'title' => $input['title'],
						'fname' => $input['fname'],
						'lname' => $input['lname'],
						'full_name' => $input['fname'] . " " . $input['lname'],
						'dob' => $input['dob'],
						'typeofcover' => $input['typeofcover'],
						'excessperiod' => $excessperiod1,
						'monthlybenefit' => $input['monthlybenefit'],
						'monthlycost' => $monthlyPremium,
						'premiseName' => $input['premiseName'],
						'address1' => $line1,
						'address2' => $line2,
						'address3' => $line3,
						'address4' => $line4,
						'postcode' => $postcode,
						'postaltown' => $town,
						'county' => $country,
						'mta_updated' => 1,
						'mta_date' => $midterm_start_date,
						'action' => 'MTA',
						'reason' => $input['reason'],
						'age'=>$age,
						//'preferreddate'=>$input['preferreddate']
					]);*/
			} else {

				$insurance_actual = date('Y-m-d', strtotime($information->insurance_startdate));

				// $dob=date('Y-m-d',strtotime($information->dob));
				$dob = explode("/", $input['dob']);
				$dob_actual = $dob[2] . "-" . $dob[1] . "-" . $dob[0];

				$dob = Carbon::parse($dob_actual)->format('Y-m-d');

				$age = date_diff(date_create($dob), date_create($insurance_actual))->y;
				
				$customer_data['Title'] = $input['title'];
				$customer_data['FirstName'] = substr($input['fname'], 0, 50);
				$customer_data['Surname'] = substr($input['lname'], 0, 50);
				$customer_data['DateOfBirth'] = $input['dob'];
				$loan_data['monthlycost'] = $monthlyPremium;
				$loan_data['mta_date'] = $midterm_start_date;
				$loan_data['reason'] = substr($input['reason'], 0, 255);
				$loan_data['preferreddate'] = $information->preferreddate;

				// updating the red apple information of customer and loan -MTA
				$i = Information::with('RAFCustomerInfo')->find($input['id']);
				if (!empty($i->RAFCustomerInfo->id)) {

					if($information->monthlycost==$monthlyPremium)
					{

						$result_data = RAFController::UpdateCustomer($input['id'], $customer_data, $loan_data, 'edit');
						if ($result_data['http_code'] != 200) {
							$error_message = json_encode($result_data['response']);
							\Flash::error($error_message);
							return redirect()->back();
						}
					}

					// affordability check
					/*$total_loan_amount = $monthlyPremium * 12;
					if ($total_loan_amount > config('raf.raf_affordability_check_amount')) {
						$affordability_check = RAFController::getAffordabilityCheck($input['id']);
						if ($affordability_check['http_code'] != 200) {
							$error_message = json_encode($affordability_check['response']);
							\Flash::error($error_message);
							return redirect()->back();
						}
					}
					$result_data = RAFController::UpdateCustomer($input['id'], $customer_data, $loan_data, 'mta');
					if ($result_data['http_code'] != 200) {
						$error_message = json_encode($result_data['response']);
						\Flash::error($error_message);
						return redirect()->back();
					}*/
				 
				}

				$data_info_update = Information::where('id', $input['id'])
			        		->first();
			    //dd($data_info);    		
			    $data_info_update->title = $input['title'];
			    $data_info_update->fname = $input['fname'];
			    $data_info_update->lname = $input['lname'];
				$data_info_update->full_name = $input['fname'] . " " . $input['lname'];
				$data_info_update->dob = $input['dob'];
				$data_info_update->typeofcover = $input['typeofcover'];
				$data_info_update->excessperiod = $excessperiod1;
				$data_info_update->monthlybenefit = $input['monthlybenefit'];
				$data_info_update->monthlycost = $monthlyPremium;
				$data_info_update->premiseName = $input['premiseName'];
				$data_info_update->mta_updated = 1;
				$data_info_update->mta_date = $midterm_start_date;
				$data_info_update->action = 'MTA';
				$data_info_update->reason = $input['reason'];
				$data_info_update->age = $age;

				$update_info= $data_info_update->save();   
				/*$update_info = DB::table('information')
					->where('id', $input['id'])
					->update(
						[
							'title' => $input['title'],
							'fname' => $input['fname'],
							'lname' => $input['lname'],
							'full_name' => $input['fname'] . " " . $input['lname'],
							'dob' => $input['dob'],
							'typeofcover' => $input['typeofcover'],
							'excessperiod' => $excessperiod1,
							'monthlybenefit' => $input['monthlybenefit'],
							'monthlycost' => $monthlyPremium,
							'premiseName' => $input['premiseName'],
							'mta_updated' => 1,
							'mta_date' => $midterm_start_date,
							'action' => 'MTA',
							'reason' => $input['reason'],
							'age'=>$age,
							// 'preferreddate'=>$input['preferreddate']
						]
					);*/
			}

			if ($update_info) {
				// Checking last version before inserting new information log record
				$version = DB::table('log_information')
					->select('version as last_version')
					->where('application_id', $input['id'])
					->orderBy('version', 'desc')
					->first();
				if (empty($version)) {
					$version = 0;
				} else {
					$version = $version->last_version;
				}
				$information = DB::table('information')
					->where('id', $input['id'])
					->first();
				// Adding log information
				$logId = DB::table('log_information')
					->insertGetId([
						'application_id' => $information->id,
						'product_id' => $information->product_id,
						'title' => $information->title,
						'fname' => $information->fname,
						'lname' => $information->lname,
						'full_name' => $information->fname . " " . $information->lname,
						'dob' => $information->dob,
						'emp_status' => $information->emp_status,
						'occupation' => $information->occupation,
						'employer_name' => $information->employer_name,
						'building' => $information->building,
						'premiseName' => $information->premiseName,
						'address1' => $information->address1,
						'address2' => $information->address2,
						'address3' => $information->address3,
						'address4' => $information->address4,
						'postcode' => $information->postcode,
						'formattedPO' => $information->formattedPO,
						'postaltown' => $information->postaltown,
						'county' => $information->county,
						'email' => $information->email,
						'telephone' => $information->telephone,
						'mobile' => $information->mobile,
						'marketingOptOut' => $information->marketingOptOut,
						'under_writing_q1' => $information->under_writing_q1,
						'under_writing_ans' => $information->under_writing_ans,
						'under_writing_accept' => $information->under_writing_accept,
						'insurance_startdate' => $information->insurance_startdate,
						'transfer' => $information->transfer,
						'current_provider' => $information->current_provider,
						'current_policy_date' => $information->current_policy_date,
						'typeofcover' => $information->typeofcover,
						'loan_to_pay' => $information->loan_to_pay,
						'monthlycommitment' => $information->monthlycommitment,
						'monthlygrossincome' => $information->monthlygrossincome,
						'mortgagesalary' => $information->mortgagesalary,
						'mortgage' => $information->mortgage,
						'salary' => $information->salary,
						'age' => $information->age,
						'monthlybenefit' => $information->monthlybenefit,
						'monthlycost' => $information->monthlycost,
						'cover' => $information->cover,
						'cover_term' => $information->cover_term,
						'accept' => $information->accept,
						'accountname' => $information->accountname,
						'accountname2' => $information->accountname2,
						'accountnumber' => $information->accountnumber,
						'sortcode' => $information->sortcode,
						'iban' => $information->iban,
						'bank' => $information->bank,
						'bankbic' => $information->bankbic,
						'branch' => $information->branch,
						'branchbic' => $information->branchbic,
						'branch_address' => $information->branch_address,
						'town' => $information->town,
						'bank_postcode' => $information->bank_postcode,
						'bank_phone' => $information->bank_phone,
						'directdebits' => $information->directdebits,
						'preferreddate' => $information->preferreddate,
						'affid' => $information->affid,
						'ip' => $information->ip,
						'date_added' => $information->date_added,
						'time_added' => $information->time_added,
						'guid' => $information->guid,
						'status' => $information->status,
						'comment' => $information->comment,
						'mail_send' => $information->mail_send,
						'mms_senddate' => $information->mms_senddate,
						'mms_sendmonth' => $information->mms_sendmonth,
						'subscription' => $information->subscription,
						'formtype' => $information->formtype,
						'typeofprotection' => $information->typeofprotection,
						'excessperiod' => $information->excessperiod,
						'insurer' => $information->insurer,
						'smoker' => $information->smoker,
						'life_cover' => $information->life_cover,
						'life_cover_term' => $information->life_cover_term,
						'life_cover_type' => $information->life_cover_type,
						'life_cover_premium_type' => $information->life_cover_premium_type,
						'CIC' => $information->CIC,
						'lead_from' => $information->lead_from,
						'lead_source_field' => $information->lead_source_field,
						'benefit_period' => $information->benefit_period,
						'duration' => $information->duration,
						'duration_year' => $information->duration_year,
						'duration_month' => $information->duration_month,
						'contractor_deirectdebitref' => $information->contractor_deirectdebitref,
						'contractor_id' => $information->contractor_id,
						'policy_number' => $information->policy_number,
						'policy_number_full' => $information->policy_number_full,
						'mta_updated' => $information->mta_updated,
						'renew_updated' => '0',
						'insurance_enddate' => $information->insurance_enddate,
						'version' => $version + 1,
						'edit_updated' => $information->edit_updated,
						'mta_date' => $midterm_start_date,
						'action' => 'MTA',
						'reason' => $input['reason'],
						'active_loan_id' => $information->active_loan_id,
					]);
				//$i = Information::with('RAFCustomerInfo')->find($input['id']);
				if (!empty($i->RAFCustomerInfo->id)) {
				//	echo " inthis";
					//exit;
				//	echo $i->monthlycost;
					//echo $monthlyPremium;
					//exit;
					if($i->monthlycost!=$monthlyPremium){

					$raf_date = explode("/", $input['raf_date']);
					$raf_date_actual = $raf_date[2] . "-" . $raf_date[1] . "-" . $raf_date[0];
				//	$midterm_start_date = $mid_term_date;

						$mtacron = DB::table('raf_mta_loan_cron')
						->insertGetId([
							'info_id' => $logId,
							'customerId' => $i->RAFCustomerInfo->id,
							'loanId' => $i->RAFCustomerInfo->id,
							'status' => '0',
							'raf_date' => $raf_date_actual,
							'mta_date' => $midterm_start_date,
							'new_premium' => $input['new_premium'],
							'reason' => $input['reason'],

						]);
					}
					//  $raf_customer_id = $result_data['response']['CustomerId'];

					$raf_docs = RAFLoanDocuments::where('CustomerId', $i->RAFCustomerInfo->id)
						->where('action_type', "mta")
						->whereNull('log_info_id')
						->get();
					foreach ($raf_docs as $raf_doc) {
						$raf_doc->log_info_id = $logId;
						$raf_doc->save();
					}
				}

// file saving
				$logInfo = LogInformation::find($logId);
				//file saving
				$file_name_saved = $this->fileuploader->saveMtaPdf($logId);
				$logInfo->mta_pdf = $file_name_saved;
				$logInfo->action = "MTA";
				$logInfo->save();
				$pdf_url = public_path() . $file_name_saved;

				foreach ($final_update_data as $key => $value) {
					$l_information->$key = $value;
				}
				$l_information->mta_pdf = $file_name_saved;
				$l_information->save();

				$activity = Activity::all()->last();
				//$activity->description = "mta";
				$activity->delete();

				$activity = Activity::all()->last();
				$activity->description = "mta";
				$activity->save();

// end of file saving
				//dummy
				$pdf_url = public_path() . '/uploads/pdf/admin/' . 'application' . date('ymdHis') . 'application.pdf';

				// Pdf download button
				$downloadBtn = '<input type="hidden" value="download_btn" id="download_btn" /><input type="hidden" value="' . $pdf_url . '" id="download_file_path" />';
// end of dummy

				\Flash::success('MTA updated successfully.');
				return redirect()->back();
//return view('admin.leads.mta_completed_lead', compact('information','breadcrumb','policy_prefix','pdf_url','downloadBtn','logInfo'));
			} else {
				\Flash::error('Not updated successfully.');
			}

		}

		return view('admin.leads.mta_completed_lead', compact('information', 'breadcrumb', 'policy_prefix'));

	}

	public function getRenewCompletedLead($id) {
		//Breadcrumb Titles
		$breadcrumb = [
			'title' => 'Completed Leads',
			'subTitle' => 'Renew',
			'home' => 'Leads',
			'homeLink' => URL::to('account/leads?status=completed'),
			'subHome' => 'Completed Leads',
			'subHomeLink' => URL::to('account/leads?status=completed'),
			'subChildHome' => 'Renew ',
			'menu' => 'completed-leads',
			'menuColor' => '#fff',
			'MenuClass' => 'active open',
			'SubMenuClass' => 'active',
		];

//dummy
		$pdf_url = public_path() . '/uploads/pdf/admin/' . 'application' . date('ymdHis') . 'application.pdf';

// Pdf download button
		$downloadBtn = '<input type="hidden" value="download_btn" id="download_btn" /><input type="hidden" value="' . $pdf_url . '" id="download_file_path" />';
//end of dummy

		$information = DB::table('information')
			->where('id', $id)
			->first();

		$previous_session = $information;

		$monthly_cost = CommonComponent::getQuoteProductCost($information->quote_id, $information->product_id);

		$policy_prefix = DB::table('products')
			->where('id', $information->product_id)
			->select('policy_prefix', 'pdf_underwritten_txt', 'benifit_period')
			->first();

		/* This is for renew pdf */
		$last_year_monthly_premium = $previous_session->monthlycost;
		$monthly_premium = $monthly_cost;

		$previous_monthly_premium = '';
		$previous_annual_premium = '';
		$insurance_startdate_old = '';
		$insurance_enddate_old = '';

		return view('admin.leads.renew_completed_lead', compact('information', 'breadcrumb', 'policy_prefix', 'pdf_url', 'downloadBtn', 'previous_monthly_premium', 'previous_annual_premium', 'monthly_premium', 'insurance_startdate_old', 'insurance_enddate_old', 'last_year_monthly_premium'));

	}

	/**
	 * renew completed Lead Page
	 *
	 * @return \Illuminate\Http\Response
	 */
	public function RenewCompletedLead(Request $request, $id = null) {
		// dd($request->all());

		$rules['id'] = 'required|exists:information,id';
		$rules['title'] = 'required';
		$rules['fname'] = 'required';
		$rules['lname'] = 'required';
		$rules['editapppolicystartdate'] = 'required';
		$rules['txtPolicyEndDate'] = 'required';
		$rules['typeofcover'] = 'required';
		$rules['excessperiod'] = 'required';
		$rules['monthlybenefit'] = 'required';
		$rules['renew_benefit_period'] = 'required';
		$rules['monthlycost'] = 'required';
		$rules['previous_monthly_premium'] = 'required';
		$rules['previous_annual_premium'] = 'required';
		$rules['reason'] = 'required';
		$rules['payment_option'] = 'required|in:raf,cc,others,eazycollect';

		$validator = Validator::make($request->all(), $rules);

		if ($validator->fails()) {
			return redirect()->back()
				->withErrors($validator)
				->withInput();
		}

		$information = DB::table('information')
			->where('id', $id)
			->first();
		$inf = Information::with('RAFCustomerInfo')->find($id);

		$customer_status="New";

		if (!empty($inf->RAFCustomerInfo) && $request->payment_option == "raf") {

			$customer_status="Existing";
			//\Flash::error("Raf loan already created for this customer.<br/>Raf Customer Id=" . $inf->RAFCustomerInfo->id);
			//return redirect()->back();
		}
		// dd($inf);
		$product_id = $information->product_id;

		$request->merge(['renew_date' => $request->editapppolicystartdate]);
		$request->merge(['dob' => $inf->dob]);
		$request->merge(['information_id' => $inf->id]);
		try {
			$monthly_premium = $this->calculateMonthlyPremiumRenew($request);

			$renew_date_array = explode("/", $request->editapppolicystartdate);
			$renewdate_actual = $renew_date_array[2] . "-" . $renew_date_array[1] . "-" . $renew_date_array[0];

			$renewdate_final = Carbon::parse($renewdate_actual)->format('Y-m-d');
			//dd($renewdate_final);
			// exit;

			if (($product_id == Config::get('constant.SIMPLE_INCOME_INSURANCE_COVEA') || $product_id == Config::get('constant.BEST_INSURANCE_ULTRA_COVEA') || $product_id == Config::get('constant.BEST_INSURANCE_COVEA') || $product_id == Config::get('constant.BEST_INCOME_BEE_120') || $product_id == Config::get('constant.BEST_INCOME_BEE_90') || $product_id == Config::get('constant.BEST_INCOME_BEE_60')) && $renewdate_final <= '2020-06-30') {

				//echo "inthis also";
				//echo $request->editapppolicystartdate;
			//	$monthly_premium = $information->monthlycost;

			}
			if($information->policy_number_full=="BIG90/06005A2206MMS" || $information->policy_number_full=="BIG120/06005A3041MMS" || $information->policy_number_full=="BIG120/06005A3014MMS" || $information->policy_number_full=="BIG120/06005A2990MMS" || $information->policy_number_full=="BIG90/06005A3825MMS" || $information->policy_number_full=="BIG90/06005A3704MMS" || $information->policy_number_full=="BIG90/06005A3599MMS" || $information->policy_number_full=="BIG90/06005A3590MMS" || $information->policy_number_full=="BIG120/06005A2432MMS" || $information->policy_number_full=="BIG120/06005A2430MMS" || $information->policy_number_full=="BIG120/06005A2404MMS" || $information->policy_number_full=="BIG90/06005A3536MMS" || $information->policy_number_full=="BIG120/06005A2343MMS" || $information->policy_number_full=="BIG120/06005A2337MMS" || $information->policy_number_full=="BIG120/06005A2442MMS" || $information->policy_number_full=="BIG90/06005A3490MMS" || $information->policy_number_full=="BIG120/06005A2253MMS" || $information->policy_number_full=="BIG120/06005A2243MMS" || $information->policy_number_full=="BIG120/06005A2209MMS" || $information->policy_number_full=="BIG120/06005A2194MMS" || $information->policy_number_full=="BIG90/06005A3397MMS" || $information->policy_number_full=="BIG120/06005A2138MMS" || $information->policy_number_full=="BIG90/06005A3356MMS" || $information->policy_number_full=="BIG120/06005A2108MMS" || $information->policy_number_full=="BIG120/06005A2090MMS" || $information->policy_number_full=="BIG120/06005A2040MMS" || $information->policy_number_full=="BIG90/06005A3202MMS" || $information->policy_number_full=="BIG90/06005A3172MMS" || $information->policy_number_full=="BIG120/06005A1800MMS" || $information->policy_number_full=="BIG120/06005A1779MMS" || $information->policy_number_full=="BIG120/06005A1766MMS" || $information->policy_number_full=="BIG120/06005A1699MMS" || $information->policy_number_full=="BIG120/06005A1689MMS" || $information->policy_number_full=="BIG120/06005A1678MMS" || $information->policy_number_full=="BIG120/06005A1677MMS" || $information->policy_number_full=="BIG90/06005A3057MMS" || $information->policy_number_full=="BIG90/06005A2930MMS" || $information->policy_number_full=="BIG120/06005A1480MMS" || $information->policy_number_full=="BIG90/06005A2886MMS" || $information->policy_number_full=="BIG120/06005A1407MMS" || $information->policy_number_full=="BIG90/06005A2808MMS" || $information->policy_number_full=="BIG90/06005A2763MMS" || $information->policy_number_full=="BIG90/06005A2749MMS" || $information->policy_number_full=="BIG120/06005A1367MMS" || $information->policy_number_full=="BIG90/06005A2718MMS" || $information->policy_number_full=="BIG120/06005A1337MMS" || $information->policy_number_full=="BIG120/06005A1313MMS" || $information->policy_number_full=="BIG90/06005A2601MMS" || $information->policy_number_full=="BIG90/06005A2522MMS" || $information->policy_number_full=="BIG120/06005A1240MMS" || $information->policy_number_full=="BIG90/06005A2362MMS" || $information->policy_number_full=="BIG120/06005A1102MMS" || $information->policy_number_full=="BIG90/06005A2206MMS" || $information->policy_number_full=="BIG90/06005A2134MMS" || $information->policy_number_full=="BIG120/06005A993MMS" || $information->policy_number_full=="BIG90/06005A1988MMS" || $information->policy_number_full=="BIG90/06005A1977MMS" || $information->policy_number_full=="BIG120/06005A943MMS" || $information->policy_number_full=="BIG120/06005A914MMS" || $information->policy_number_full=="BIG120/06005A778MMS" || $information->policy_number_full=="BIG90/06005A1389MMS" || $information->policy_number_full=="BIG90/06005A1348MMS" || $information->policy_number_full=="BIG120/06005A561MMS" || $information->policy_number_full=="BIG120/06005A554MMS" || $information->policy_number_full=="BIG120/06005A495MMS" || $information->policy_number_full=="BIG90/06005A1092MMS" || $information->policy_number_full=="BIG120/06005A431MMS" || $information->policy_number_full=="BIG120/06005A416MMS" || $information->policy_number_full=="BIG120/06005A408MMS" || $information->policy_number_full=="BIG120/06005A405MMS" || $information->policy_number_full=="BIG90/06005A812MMS" || $information->policy_number_full=="BIG90/06005A770MMS" || $information->policy_number_full=="BIG90/06005A697MMS" || $information->policy_number_full=="BIG120/06005A358MMS" || $information->policy_number_full=="BIG120/06005A343MMS" || $information->policy_number_full=="BIG90/06005A634MMS" || $information->policy_number_full=="BIG90/06005A454MMS" || $information->policy_number_full=="BIG90/06005A441MMS" || $information->policy_number_full=="BIG90/06005A416MMS" || $information->policy_number_full=="BIG90/06005A398MMS" || $information->policy_number_full=="BIG120/06005A249MMS" || $information->policy_number_full=="BIG90/06005A241MMS" || $information->policy_number_full=="BIG120/06005A135MMS" || $information->policy_number_full=="BIG90/06005A99MMS" || $information->policy_number_full=="BIG120/06005A26MMS")
			{
				$monthly_premium = $information->monthlycost;
			}
			if(endsWith($information->policy_number_full,'SII') && $product_id=="28")
			{
			//	$monthly_premium = $information->monthlycost;
			}

			// dd($monthly_premium);
			if ($monthly_premium != $request->monthlycost) {
				\Flash::error("Invalid Caliculated Premium");
				return redirect()->back();
			}
		} catch (\Exception $e) {
		//	dd($e);
			\Flash::error("Premium not found");
			return redirect()->back();
		}

		$data_to_send = [];

		$data_to_send['id'] = $inf->id;
		$data_to_send['policy_number_full'] = $inf->policy_number_full;
		$data_to_send['title'] = $request->title;
		$data_to_send['fname'] = $request->fname;
		$data_to_send['lname'] = $request->lname;
		$data_to_send['email'] = $inf->email;
		$data_to_send['dob'] = $inf->dob;
		if (!empty($request->form_new_line1) && !empty($request->form_new_postcode)) {
			$data_to_send['address1'] = $request->form_new_line1;
			$data_to_send['address2'] = $request->form_new_line2;
			$data_to_send['address3'] = $request->form_new_line3;
			$data_to_send['address4'] = $request->form_new_line4;
			$data_to_send['postcode'] = $request->form_new_postcode;
			$data_to_send['postaltown'] = $request->form_new_town;
			$data_to_send['county'] = $request->form_new_country;

		} else {
			$data_to_send['address1'] = $inf->address1;
			$data_to_send['address2'] = $inf->address2;
			$data_to_send['address3'] = $inf->address3;
			$data_to_send['address4'] = $inf->address4;
			$data_to_send['postcode'] = $inf->postcode;
			$data_to_send['postaltown'] = $inf->postaltown;
			$data_to_send['county'] = $inf->county;
		}

		$data_to_send['accountname'] = $inf->accountname;
		$data_to_send['accountnumber'] = $inf->accountnumber;
		$data_to_send['sortcode'] = $inf->sortcode;
		$data_to_send['telephone'] = $inf->telephone;

		$data_obj = (object) $data_to_send;

		if ($request->payment_option == "raf") {
			try {
				// affordability check
				$total_loan_amount = $request->monthlycost * 12;
				$insurance_startdate = $request->editapppolicystartdate;

				if ($total_loan_amount > config('raf.raf_affordability_check_amount') && $customer_status=="New") {
					$affordability_check = RAFController::getAffordabilityCheck($data_obj);
					if ($affordability_check['http_code'] != 200) {
						$error_message = json_encode($affordability_check['response']);
						\Flash::error($error_message);
						return redirect()->back();
					}
				}

				// dd($insurance_startdate);
				$insurance_startdate1 = Carbon::createFromFormat('d/m/Y', $insurance_startdate);
				//dd($insurance_startdate);
				$information_data = Information::find($request->id);
				if ($information_data->mms_scheme == "RBS128" || $information_data->mms_scheme == "RBS129" || $information_data->mms_scheme == "RBS130") {

					$insurance_startdate1 = strtr($request->editapppolicystartdate, '/', '-');
					$insurance_startdate1 = date('m/d/Y', strtotime($insurance_startdate1 . '+1 month'));
					//dd($insurance_startdate);
				}

				$result_data = RAFController::postCreateCustomerForRenew($data_obj, "renew", $total_loan_amount, $insurance_startdate1,$customer_status);

			//	dd($result_data);

				if ($result_data['http_code'] != 200) {
					$error_message = json_encode($result_data['response']);
					\Flash::error($error_message);
					return redirect()->back();
				}
			} catch (\Exception $e) {
				$error_message = $e->getMessage();
				\Flash::error($error_message);
				return redirect()->back()
					->withErrors($validator)
					->withInput();
			}
		}

		if($request->payment_option=="raf")
		{
			$payment_type="Red Apple Finance";

			$inf = Information::with('RAFCustomerInfo')->find($id);
		//	$inf->RAFCustomerInfo->id
			$update = DB::table('information')
				->where('id', $request->id)
				->update([
					//'status' => $request->status,
					//'approved_date' => $date,
					//'payment_date' => $date,
					'payment_type' =>$payment_type,
					'active_loan_id' =>$result_data['loan_id'],
				]);
		}

		if (($request->payment_option == "cc")) {
			$date = date('Y-m-d');
			$update = DB::table('information')
				->where('id', $request->id)
				->update([
					//'status' => $request->status,
					//'approved_date' => $date,
					'payment_date' => $date,
					'payment_type' =>'Credit Card',
				]);
			
		}elseif (($request->payment_option == "others" || $request->payment_option == "eazycollect")) {
			if($request->payment_option == "others")
			{
				$payment_type="Others";

			}
			else{
				$payment_type="EazyCollect";
			}
			//echo $payment_type;
			//exit;
			$date = date('Y-m-d');
			$update = DB::table('information')
				->where('id', $request->id)
				->update([
					//'status' => $request->status,
					//'approved_date' => $date,
					//'payment_date' => $date,
					'payment_type' =>$payment_type,
				]);
			
		}

		$final_update_data = [];

		$previous_session = $information;

		$monthly_premium = $information->monthlycost;

		$previous_monthly_premium = '';

		$previous_annual_premium = '';
		$insurance_startdate_old = '';
		$insurance_enddate_old = '';

		$policy_prefix = DB::table('products')
			->where('id', $information->product_id)
			->select('policy_prefix', 'pdf_underwritten_txt', 'benifit_period')
			->first();

		if ($information->benefit_period == 0 || $information->benefit_period == '') {
			$information->benefit_period = $policy_prefix->benifit_period;
		}

		if ($request->input()) {
			$input = $request->input();

			$county = "";
			$l_information = Information::find($input['id']);

			$information_old = DB::table('information')
				->where('id', $input['id'])
				->first();
			$application_date_added = date('Y-m-d');

			$insuranceStartDate = strtr($input['editapppolicystartdate'], '/', '-');
			$insuranceStartDate = date('Y-m-d', strtotime($insuranceStartDate));

			$insuranceEndDate = strtr($input['editapppolicystartdate'], '/', '-');
			$insuranceEndDate = date('Y-m-d', strtotime($insuranceEndDate . '+1 year'));
			$insuranceEndDate = date('Y-m-d', strtotime($insuranceEndDate . '-1 day'));

			$maximum_benefit_period = $input['renew_benefit_period'];

			$quote_update_status = quotes::where('id', $information->quote_id)
				->update([
					'monthly_benifit_amount' => $input['monthlybenefit'],
					'cover_type' => $input['typeofcover'],
					'excess_period' => $input['excessperiod'],
				]);
			//$monthly_cost = CommonComponent::getQuoteProductCost($information->quote_id,$information->product_id);

			$previous_monthly_premium = $input['previous_monthly_premium'];

			$previous_annual_premium = $input['previous_annual_premium'];

			if (!empty($input['form_new_line1']) || !empty($input['line1'])) {
				if (!empty($input['form_new_line1'])) {
					// selected address
					$line1 = $input['form_new_line1'];
					$line2 = $input['form_new_line2'];
					$line3 = $input['form_new_line3'];
					$line4 = $input['form_new_line4'];
					$town = $input['form_new_town'];
					$country = $input['form_new_country'];
					$postcode = $input['form_new_postcode'];
				}
				if (!empty($input['line1'])) {
					// manually entered address
					$line1 = $input['line1'];
					$line2 = $input['line2'];
					$line3 = $input['line3'];
					$line4 = $input['line4'];
					$town = $input['town'];
					$county = $input['country'];
					$postcode = $input['postal_code'];
				}

				$final_update_data['title'] = $input['title'];
				$final_update_data['fname'] = $input['fname'];
				$final_update_data['lname'] = $input['lname'];
				$final_update_data['full_name'] = $input['fname'] . " " . $input['lname'];
				$final_update_data['typeofcover'] = $input['typeofcover'];
				$final_update_data['excessperiod'] = $input['excessperiod'];
				$final_update_data['monthlybenefit'] = $input['monthlybenefit'];
				$final_update_data['monthlycost'] = $input['monthlycost'];
				$final_update_data['premiseName'] = $input['premiseName'];

				$final_update_data['address1'] = $line1;
				$final_update_data['address2'] = $line2;
				$final_update_data['address3'] = $line3;
				$final_update_data['address4'] = $line4;
				$final_update_data['postcode'] = $postcode;
				$final_update_data['postaltown'] = $town;
				$final_update_data['county'] = $county;
				$final_update_data['insurance_enddate'] = $insuranceEndDate;
				//  $final_update_data['insurance_startdate'] =  $insuranceStartDate;

				$final_update_data['last_year_monthly_premium'] = $previous_monthly_premium;
				$final_update_data['last_year_annual_premium'] = $previous_annual_premium;

				$final_update_data['insurance_enddate_old'] = $l_information->insurance_enddate;

				$final_update_data['insurance_startdate_old'] = $l_information->insurance_startdate;

				$final_update_data['renew_updated'] = 1;
				$final_update_data['benefit_period'] = $maximum_benefit_period;

				$final_update_data['action'] = 'RENEW';
				$final_update_data['reason'] = $input['reason'];

				$data = DB::table('information')
				->where('id', $input['id'])
				->first();

				$data->title = $input['title'];
				$data->fname = $input['fname'];
				$data->lname = $input['lname'];
				$data->full_name = $input['fname'] . " " . $input['lname'];
				$data->typeofcover = $input['typeofcover'];
				$data->excessperiod = $input['excessperiod'];
				$data->monthlybenefit = $input['monthlybenefit'];
				$data->monthlycost = $input['monthlycost'];
				$data->premiseName = $input['premiseName'];
				$data->address1 = $line1;
				$data->address2 = $line2;
				$data->address3 = $line3;
				$data->address4 = $line4;
				$data->postcode = $postcode;
				$data->postaltown = $town;
				$data->county = $county;
				$data->insurance_enddate = $insuranceEndDate;
				$data->renewal_date = $insuranceStartDate;
				$data->renew_updated = '1';
				$data->benefit_period = $maximum_benefit_period;

				$data->last_year_monthly_premium = $previous_monthly_premium;
				$data->last_year_annual_premium = $previous_annual_premium;
				$data->insurance_enddate_old = $l_information->insurance_enddate;
				$data->insurance_startdate_old = $l_information->insurance_startdate;
				$data->action = 'RENEW';
				$data->reason = $input['reason'];
				$update_info = $data->save();
				/*$update_info = DB::table('information')
					->where('id', $input['id'])
					->update([
						'title' => $input['title'],
						'fname' => $input['fname'],
						'lname' => $input['lname'],
						'full_name' => $input['fname'] . " " . $input['lname'],
						'typeofcover' => $input['typeofcover'],
						'excessperiod' => $input['excessperiod'],
						'monthlybenefit' => $input['monthlybenefit'],
						'monthlycost' => $input['monthlycost'],
						'premiseName' => $input['premiseName'],
						'address1' => $line1,
						'address2' => $line2,
						'address3' => $line3,
						'address4' => $line4,
						'postcode' => $postcode,
						'postaltown' => $town,
						'county' => $county,
						'insurance_enddate' => $insuranceEndDate,
						'renewal_date' => $insuranceStartDate,
						'renew_updated' => '1',
						'benefit_period' => $maximum_benefit_period,

						'last_year_monthly_premium' => $previous_monthly_premium,
						'last_year_annual_premium' => $previous_annual_premium,
						'insurance_enddate_old' => $l_information->insurance_enddate,
						'insurance_startdate_old' => $l_information->insurance_startdate,
						'action' => 'RENEW',
						'reason' => $input['reason'],
					]);*/

			} else {

				$final_update_data['title'] = $input['title'];
				$final_update_data['fname'] = $input['fname'];
				$final_update_data['lname'] = $input['lname'];
				$final_update_data['full_name'] = $input['fname'] . " " . $input['lname'];
				$final_update_data['typeofcover'] = $input['typeofcover'];
				$final_update_data['excessperiod'] = $input['excessperiod'];
				$final_update_data['monthlybenefit'] = $input['monthlybenefit'];
				$final_update_data['monthlycost'] = $input['monthlycost'];
				$final_update_data['premiseName'] = $input['premiseName'];
				$final_update_data['insurance_enddate'] = $insuranceEndDate;
				//  $final_update_data['insurance_startdate'] =  $insuranceStartDate;

				$final_update_data['renew_updated'] = 1;
				$final_update_data['benefit_period'] = $maximum_benefit_period;

				$final_update_data['last_year_monthly_premium'] = $previous_monthly_premium;
				$final_update_data['last_year_annual_premium'] = $previous_annual_premium;

				$final_update_data['insurance_enddate_old'] = $l_information->insurance_enddate;

				$final_update_data['insurance_startdate_old'] = $l_information->insurance_startdate;

				$final_update_data['action'] = 'RENEW';

				$data_info_renew = Information::where('id', $input['id'])
			        	->first();

				$data_info_renew->title = $input['title'];
				$data_info_renew->fname = $input['fname'];
				$data_info_renew->lname = $input['lname'];
				$data_info_renew->full_name = $input['fname'] . " " . $input['lname'];
				$data_info_renew->typeofcover = $input['typeofcover'];
				$data_info_renew->excessperiod = $input['excessperiod'];
				$data_info_renew->monthlybenefit = $input['monthlybenefit'];
				$data_info_renew->monthlycost = $input['monthlycost'];
				$data_info_renew->premiseName = $input['premiseName'];
				$data_info_renew->insurance_enddate = $insuranceEndDate;
				$data_info_renew->renewal_date = $insuranceStartDate;
				$data_info_renew->renew_updated = 1;
				$data_info_renew->benefit_period = $maximum_benefit_period;
				$data_info_renew->last_year_monthly_premium = $previous_monthly_premium;
				$data_info_renew->last_year_annual_premium = $previous_annual_premium;
				$data_info_renew->insurance_enddate_old = $l_information->insurance_enddate;
				$data_info_renew->insurance_startdate_old = $l_information->insurance_startdate;
				$data_info_renew->action = 'RENEW';
				$data_info_renew->reason = $input['reason'];

				$update_info = $data_info_renew->save();
				/*$update_info = DB::table('information')
					->where('id', $input['id'])
					->update([
						'title' => $input['title'],
						'fname' => $input['fname'],
						'lname' => $input['lname'],
						'full_name' => $input['fname'] . " " . $input['lname'],
						'typeofcover' => $input['typeofcover'],
						'excessperiod' => $input['excessperiod'],
						'monthlybenefit' => $input['monthlybenefit'],
						'monthlycost' => $input['monthlycost'],
						'premiseName' => $input['premiseName'],
						'insurance_enddate' => $insuranceEndDate,
						'renewal_date' => $insuranceStartDate,
						'renew_updated' => '1',
						'benefit_period' => $maximum_benefit_period,
						'last_year_monthly_premium' => $previous_monthly_premium,
						'last_year_annual_premium' => $previous_annual_premium,
						'insurance_enddate_old' => $l_information->insurance_enddate,
						'insurance_startdate_old' => $l_information->insurance_startdate,
						'action' => 'RENEW',
						'reason' => $input['reason'],
						// 'approved_date'=>date('Y-m-d')
					]);*/

			}

			if ($update_info) {
				// Checking last version before inserting new information log record
				$version = DB::table('log_information')
					->select('version as last_version')
					->where('application_id', $input['id'])
					->orderBy('version', 'desc')
					->first();
				if (empty($version)) {
					$version = 0;
				} else {
					$version = $version->last_version;
				}
				$information = DB::table('information')
					->where('id', $input['id'])
					->first();
				// Adding log information
				$logId = DB::table('log_information')
					->insertGetId([
						'application_id' => $information->id,
						'product_id' => $information->product_id,
						'title' => $information->title,
						'fname' => $information->fname,
						'lname' => $information->lname,
						'full_name' => $information->fname . " " . $information->lname,
						'dob' => $information->dob,
						'emp_status' => $information->emp_status,
						'occupation' => $information->occupation,
						'employer_name' => $information->employer_name,
						'building' => $information->building,
						'premiseName' => $information->premiseName,
						'address1' => $information->address1,
						'address2' => $information->address2,
						'address3' => $information->address3,
						'address4' => $information->address4,
						'postcode' => $information->postcode,
						'formattedPO' => $information->formattedPO,
						'postaltown' => $information->postaltown,
						'county' => $information->county,
						'email' => $information->email,
						'telephone' => $information->telephone,
						'mobile' => $information->mobile,
						'marketingOptOut' => $information->marketingOptOut,
						'under_writing_q1' => $information->under_writing_q1,
						'under_writing_ans' => $information->under_writing_ans,
						'under_writing_accept' => $information->under_writing_accept,
						'insurance_startdate' => $information->insurance_startdate,
						'transfer' => $information->transfer,
						'current_provider' => $information->current_provider,
						'current_policy_date' => $information->current_policy_date,
						'typeofcover' => $information->typeofcover,
						'loan_to_pay' => $information->loan_to_pay,
						'monthlycommitment' => $information->monthlycommitment,
						'monthlygrossincome' => $information->monthlygrossincome,
						'mortgagesalary' => $information->mortgagesalary,
						'mortgage' => $information->mortgage,
						'salary' => $information->salary,
						'age' => $information->age,
						'monthlybenefit' => $information->monthlybenefit,
						'monthlycost' => $information->monthlycost,
						'cover' => $information->cover,
						'cover_term' => $information->cover_term,
						'accept' => $information->accept,
						'accountname' => $information->accountname,
						'accountname2' => $information->accountname2,
						'accountnumber' => $information->accountnumber,
						'sortcode' => $information->sortcode,
						'iban' => $information->iban,
						'bank' => $information->bank,
						'bankbic' => $information->bankbic,
						'branch' => $information->branch,
						'branchbic' => $information->branchbic,
						'branch_address' => $information->branch_address,
						'town' => $information->town,
						'bank_postcode' => $information->bank_postcode,
						'bank_phone' => $information->bank_phone,
						'directdebits' => $information->directdebits,
						'preferreddate' => $information->preferreddate,
						'affid' => $information->affid,
						'ip' => $information->ip,
						// 'date_added' => $information->date_added,
						'time_added' => $information->time_added,
						'guid' => $information->guid,
						'status' => $information->status,
						'comment' => $information->comment,
						'mail_send' => $information->mail_send,
						'mms_senddate' => $information->mms_senddate,
						'mms_sendmonth' => $information->mms_sendmonth,
						'subscription' => $information->subscription,
						'formtype' => $information->formtype,
						'typeofprotection' => $information->typeofprotection,
						'excessperiod' => $information->excessperiod,
						'insurer' => $information->insurer,
						'smoker' => $information->smoker,
						'life_cover' => $information->life_cover,
						'life_cover_term' => $information->life_cover_term,
						'life_cover_type' => $information->life_cover_type,
						'life_cover_premium_type' => $information->life_cover_premium_type,
						'CIC' => $information->CIC,
						'lead_from' => $information->lead_from,
						'lead_source_field' => $information->lead_source_field,
						'benefit_period' => $information->benefit_period,
						'duration' => $information->duration,
						'duration_year' => $information->duration_year,
						'duration_month' => $information->duration_month,
						'contractor_deirectdebitref' => $information->contractor_deirectdebitref,
						'contractor_id' => $information->contractor_id,
						'policy_number' => $information->policy_number,
						'policy_number_full' => $information->policy_number_full,
						'mta_updated' => "0",
						'renew_updated' => $information->renew_updated,
						'insurance_enddate' => $information->insurance_enddate,
						'version' => $version + 1,
						'edit_updated' => '0',
						'last_year_monthly_premium' => $information->last_year_monthly_premium,
						'last_year_annual_premium' => $information->last_year_annual_premium,
						'insurance_enddate_old' => $information->insurance_enddate,
						'insurance_startdate_old' => $information->insurance_startdate,
						'renewal_date' => $information->renewal_date,
						'action' => 'RENEW',
						'reason' => $input['reason'],
						'payment_type'=>$information->payment_type,
						'active_loan_id'=>$information->active_loan_id,
					]);

				//file saving
				$logInfo = LogInformation::find($logId);
				// dd($logInfo);
				$file_name_saved = $this->fileuploader->saveRenewPdf($logId);
				$logInfo->renew_pdf = $file_name_saved;
				$logInfo->schedule_pdf = $file_name_saved;
				$logInfo->action = "RENEW";
				$logInfo->save();

				$logInfo = $logInfo->toArray();

				foreach ($final_update_data as $key => $value) {
					$l_information->$key = $value;
				}

				$l_information->mta_pdf = $file_name_saved;
				$l_information->save();

				$activity = Activity::all()->last();
				//$activity->description = "mta";
				$activity->delete();

				$activity = Activity::all()->last();
				$activity->description = "renew";
				$activity->save();

				/*$activity = Activity::where('causer_type', 'App\Information')
					->where('causer_id', Auth::user()->id)
					->orderBy('id', 'DESC')->first();

				if (!empty($activity)) {
					$activity->delete();
					$activity_last = Activity::where('causer_type', 'App\Information')
					->where('causer_id', Auth::user()->id)
					->orderBy('id', 'DESC')->first();
					$activity_last->description = "renew";
					$activity_last->save();
				}*/

				if ($request->payment_option == "raf") {

					$raf_customer_id = $result_data['response']['CustomerId'];
					$raf_docs = RAFLoanDocuments::where('CustomerId', $raf_customer_id)
						->where('action_type', "renew")
						->whereNull('log_info_id')
						->get();

					foreach ($raf_docs as $raf_doc) {
						$raf_doc->log_info_id = $logId;
						$raf_doc->save();
					}
				}
			}
			\Flash::success('Renew updated successfully.');
			return redirect()->back();
		} else {
			\Flash::error('Not updated successfully.');
			return redirect()->back();
		}
	}

	/**
	 * edit Complete Lead Pdf
	 */
	public function editCompleteLeadPdf($info_id) {

		$logInfo = DB::table('information')
			->where('information.id', $info_id)
			->join('products', 'information.product_id', '=', 'products.id')
			->first();
		// $pdf = PDF::loadView('admin.leads.pdf.edit_application', compact('logInfo'))->setPaper('a4', 'portrait')->setWarnings(false);
		$file = public_path() . '/uploads/pdf/admin/' . 'application' . date('ymdHis') . 'application.pdf';
		$fileName = 'application' . date('ymdHis') . 'application.pdf';
		$headers = array(
			'Content-Type: text/pdf',
		);

		$pdf = PDF::loadView('admin.leads.pdf.edit_application', compact('logInfo'))->setPaper('a4', 'portrait')->setWarnings(false)->save($file);
		response::download($file, $fileName, $headers);
		// return $pdf->download('application'.date('ymdHis').'application.pdf');

		// \Flash::success('Updated successfully.');
		// return $pdf->download('application'.date('ymdHis').'.pdf');

	}

	/*
		     *  completed lead reject status method
		     *
	*/
	public function changeStatus(Request $request) {

		$update = DB::table('information')
			->where('id', $request->id)
			->update(['customer_status'=>'Rejected','status' => 0, 'comments_for_rejection' =>$request->reject_reason]);
		if ($update) {
			$log_id = $this->helper->insertLogInfoStatus($request->id,'Rejected');
			\Flash::success('Application rejected successfully.');
		} else {
			\Flash::error('Application not rejected successfully.');
		}
		return back();
	}

	/*
		     *  completed lead Approve status method
		     *
	*/
	public function changeToApproveStatus(LeadRequest $request) {
		$i = Information::find($request->id);
	//	echo $request->payment_option;
	//	exit;
		$request->merge(['policy_number_full' => $i->policy_number_full]);
		$request->merge(['title' => $i->title]);
		$request->merge(['fname' => $i->fname]);
		$request->merge(['lname' => $i->lname]);
		$request->merge(['email' => $i->email]);
		$request->merge(['dob' => $i->dob]);
		$request->merge(['address1' => $i->address1]);
		$request->merge(['postcode' => $i->postcode]);

		$request->merge(['accountnumber' => $i->accountnumber]);
		$request->merge(['sortcode' => $i->sortcode]);
		$request->merge(['accountname' => $i->accountname]);

		$request->merge(['monthlycost' => $i->monthlycost]);
		$request->merge(['insurance_startdate' => $i->insurance_startdate]);
		$request->merge(['preferreddate' => $i->preferreddate]);

		$rules['policy_number_full'] = 'required';
		$rules['title'] = 'required';
		$rules['fname'] = 'required';
		$rules['lname'] = 'required';
		$rules['email'] = 'required|email';
		$rules['dob'] = 'required';
		$rules['address1'] = 'required|string';
		$rules['postcode'] = 'required|string';
		$rules['accountnumber'] = 'required|string';
		$rules['sortcode'] = 'required|string';
		$rules['accountname'] = 'required|string';
		$rules['monthlycost'] = 'required';
		$rules['insurance_startdate'] = 'required';
		$rules['preferreddate'] = 'required';

		$validator = Validator::make($request->all(), $rules);

		if ($validator->fails()) {
			return redirect()->back()
				->withErrors($validator)
				->withInput();
		}

		// Rejected
		if ($request->status == 0) {

			$rules['reject_reason'] = 'required';

			$validator = Validator::make($request->all(), $rules);

				if ($validator->fails()) {
					return redirect()->back()
						->withErrors($validator)
						->withInput();
				}


			$date = date('Y-m-d');
			$update = DB::table('information')
				->where('id', $request->id)
				->update([
					'status' => $request->status,
					'customer_status' =>'Rejected',
					'comments_for_rejection' =>$request->reject_reason,
				]);
			if ($update) {
				\Flash::success('Application rejected successfully.');
				$log_id = $this->helper->insertLogInfoStatus($request->id,'Rejected');
			} else {
				\Flash::error('Please check the errors');
			}
			return redirect()->back();
		}

		if (($request->status == 1) && ($request->payment_option == "cc")) {
			$date = date('Y-m-d');
			$update = DB::table('information')
				->where('id', $request->id)
				->update([
					'status' => $request->status,
					'approved_date' => $date,
					'payment_date' => $date,
					'payment_type' =>'Credit Card',
					'customer_status' =>'Sold',
					'is_webline_product' =>'No',
				]);
			if ($update) {
				\Flash::success('Application Accepted successfully.');
				$log_id = $this->helper->insertLogInfoStatus($request->id,'Approved');
			} else {
				\Flash::error('Please check the errors');
			}
			return redirect()->back();
		}elseif (($request->status == 1) && ($request->payment_option == "others" || $request->payment_option == "eazycollect")) {
			if($request->payment_option == "others")
			{
				$payment_type="Others";

			}
			else{
				$payment_type="EazyCollect";
			}
			//echo $payment_type;
			//exit;
			$date = date('Y-m-d');
			$update = DB::table('information')
				->where('id', $request->id)
				->update([
					'status' => $request->status,
					'approved_date' => $date,
					//'payment_date' => $date,
					'payment_type' =>$payment_type,
					'customer_status' =>'Sold',
					'is_webline_product' =>'No',
				]);
			if ($update) {
				\Flash::success('Application Accepted successfully.');
				$log_id = $this->helper->insertLogInfoStatus($request->id,'Approved');
			} else {
				\Flash::error('Please check the errors');
			}
			return redirect()->back();
		}elseif (($request->status == 1) && ($request->payment_option == "raf")) {
			try {
				// affordability check
				$total_loan_amount = $i->monthlycost * 12;
				if ($total_loan_amount > config('raf.raf_affordability_check_amount')) {
					$affordability_check = RAFController::getAffordabilityCheck($i);
					if ($affordability_check['http_code'] != 200) {
						$error_message = json_encode($affordability_check['response']);
						\Flash::error($error_message);
						return redirect()->back();
					}
				}

				$result_data = RAFController::postCreateCustomer($i->id);

				//dd($result_data);
				if ($result_data['http_code'] != 200) {
					$error_message = json_encode($result_data['response']);
					\Flash::error($error_message);
					return redirect()->back();
				}
			} catch (\Exception $e) {
				$error_message = $e->getMessage();
				\Flash::error($error_message);
				return redirect()->back()
					->withErrors($validator)
					->withInput();
			}

			$date = date('Y-m-d');
			$update = DB::table('information')
				->where('id', $request->id)
				->update([
					'status' => $request->status,
					'approved_date' => $date,
					'payment_type' =>'Red Apple Finance',
					'customer_status' =>'Sold',
					'active_loan_id' =>$result_data['loan_id'],
					'is_webline_product' =>'No',
				]);
			$log_id = $this->helper->insertLogInfoStatus($request->id,'Approved');

			$raf_customer_id = $result_data['response']['CustomerId'];

			$raf_docs = RAFLoanDocuments::where('CustomerId', $raf_customer_id)
				->where('action_type', "new")
				->whereNull('log_info_id')
				->get();
			foreach ($raf_docs as $raf_doc) {
				$raf_doc->log_info_id = $log_id;
				$raf_doc->save();
			}

			if ($update) {
				\Flash::success('Application approved successfully.');
			} else {
				\Flash::error('Please check the errors');
			}
			return back();
		}
	}

	/*
		     * Completed leads generate application pdf
		     *
		     *
	*/
	public function generate_application($id = null) {

		$information = DB::table('information')
			->where('information.id', $id)
			->select('information.*', 'products.pdf_underwritten_txt', 'products.inital_exclusion_period', 'products.benifit_period', 'products.trade_logo_link', 'products.product_name', 'quotes.age', 'quotes.monthly_benifit_amount', 'quotes.cover_type', 'quotes.excess_period', 'affiliates.Legal_Entity')
			->join('products', 'information.product_id', '=', 'products.id')
			->join('quotes', 'information.quote_id', '=', 'quotes.id')
			->leftJoin('affiliates', 'information.affid', '=', 'affiliates.uid')
			->first();

		$quotes = DB::table('quotes')
			->where('quotes.id', $information->quote_id)
			->select('quotes.id', 'quotes.monthly_benifit_amount', 'quotes.excess_period')
			->leftJoin('occupations', 'occupations.id', '=', 'quotes.occupation_id')
			->first();
		$underwriting_questions = DB::table('underwriting_questions')
			->where('quote_id', $information->quote_id)
			->first();

		$prod_questions = DB::table('product_underwriting_questions')
			->where('product_id', $information->product_id)
			->first();

		$age = $information->age;
		$product_id = $information->product_id;
		$monthly_benifit_amount = $information->monthly_benifit_amount;
		$cover_type = $information->cover_type;
		$excess_period = $information->excess_period;
		$product_benifit_period = $information->benifit_period;
		if ($product_id == config('constant.INSTAPROTECT')) {
			if ($cover_type == 'U' || $cover_type == "ASU") {
				$cover_type = "ASU";
			}

			$excess_period = 1;
		}
		if ($product_id == config('constant.BEST_INSURANCE_COVEA') ||
			$product_id == config('constant.BEST_INSURANCE_ULTRA_COVEA') ||
			$product_id == config('constant.BEST_INSURANCE') ||
			$product_id == config('constant.BEST_INSURANCE_ULTRA') ||
			$product_id == config('constant.STANDARD_INCOME') ||
			$product_id == config('constant.SIMPLE_INCOME') ||
			$product_id == config('constant.SIMPLE_INCOME_INSURANCE_COVEA') ||
			$product_id == config('constant.BEST_MORTGAGE') ||
			$product_id == config('constant.STANDARD_MORTGAGE') ||
			$product_id == config('constant.BEST_LOAN') ||
			$product_id == config('constant.EASIPROTECT') ||
			$product_id == config('constant.KEYSTONE') ||
			$product_id == config('constant.HOMEOWNER') ||
			$product_id == config('constant.ASSURITY') ||
			$product_id == config('constant.KEYSTONE_18M') ||
			$product_id == config('constant.INSTAPROTECT') ||
			$product_id == config('constant.APRIL_UK_SHORTERM_INCOME_PROTECTION')) {
			$flag = 1;

		} else {
			$flag = 0;
		}
		$retail_price_programming = new retail_price_programming();

		if ($product_id == config('constant.SIMPLE_INCOME_INSURANCE_COVEA')) {

			$monthlyCost = $retail_price_programming->fetchMonthlyCostSimpleCovea($age, $monthly_benifit_amount, $cover_type, $excess_period, $product_id, $product_benifit_period, $flag);

		} else {
			$monthlyCost = $retail_price_programming->fetchMonthlyCost($age, $monthly_benifit_amount, $cover_type, $excess_period, $product_id, $product_benifit_period, $flag);
		}

		$monthlyCost = $information->monthlycost;

		$typeofcover = $information->typeofcover;
		if ($typeofcover == "U") {
			$cover_type = "Unemployment only";
		} else if ($typeofcover == "AS") {
			$cover_type = "Accident & Sickness only";
		} else {
			$cover_type = "Unemployment, Accident & Sickness";
		}

		$benfitperiodValue = $information->benifit_period;
		$initial_exclusion = $information->inital_exclusion_period;
		if ($benfitperiodValue == "12") {
			$benfitperiodValue1 = "12 Months";
		} else if ($benfitperiodValue == "18") {
			$benfitperiodValue1 = "18 Months";
		} else {
			$benfitperiodValue1 = "6 Months";
		}

		$excess_period = $quotes->excess_period;
		//$benifitamountValue = $monthlycover;
		if ($excess_period == "1") {
			$excess_period1 = "Back to Day 1";
		} else if ($excess_period == "14") {
			$excess_period1 = "14 Days";
		} else if ($excess_period == "30") {
			$excess_period1 = "30 Days";
		} else if ($excess_period == "60") {
			$excess_period1 = "60 Days";
		} else if ($excess_period == "90") {
			$excess_period1 = "90 Days";
		} else {
			$excess_period1 = "120 Days";
		}
		$policy_date = $information->insurance_startdate;
		$policy_date = explode("-", $policy_date);
		$policy_date = $policy_date[2] . "/" . $policy_date[1] . "/" . $policy_date[0];

		$message = 'is a trading name of Best Risk Management and Financial Services Limited who are authorised and regulated by the Financial Conducts Authority (FCA registration number 583497). Registered office is Gemini Business Centre, 136-140, Old Shoreham Road, Hove BN3 7BD (Registered No. 07095571).';

		$pdf = PDF::loadView('admin.leads.pdf.generate_application', compact('information', 'quotes', 'monthlyCost', 'prod_questions', 'underwriting_questions', 'message', 'cover_type', 'excess_period1', 'benfitperiodValue1', 'initial_exclusion', 'policy_date'))->setPaper('a4', 'portrait')->setWarnings(false);

		return $pdf->download($information->product_name . date('ymdHis') . 'application.pdf');
	}

	/**
	 *  get address by postal code
	 *
	 */
	public function getAddressByPostcde(Request $request) {

		$input = $request->input();
		$pocode = $request->postcode;
		// $pocode = 'BN3 7BA';
		$Key = 'ZC52-WY44-WK19-XB35';

		//Build the url
		$url = "https://services.postcodeanywhere.co.uk/PostcodeAnywhere/Interactive/FindByPostcode/v1.00/json.ws?";
		$url .= "&Key=" . urlencode($Key);
		$url .= "&Postcode=" . urlencode($pocode);

		$ch = curl_init();
		$timeout = 5;
		curl_setopt($ch, CURLOPT_URL, $url);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
		curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
		$result = curl_exec($ch);
		curl_close($ch);

		$resArray = json_decode($result);

		$data = ['result' => $resArray];

		return response()->json($data);
	}
	/**
	 *  get address by postal code
	 *
	 */
	public function getFullAddressById(Request $request) {

		$input = $request->input();
		$id = $request->id;
		$Key = 'ZC52-WY44-WK19-XB35';

		//Build the url
		$url = "https://services.postcodeanywhere.co.uk/PostcodeAnywhere/Interactive/RetrieveById/v1.20/json.ws?";
		$url .= "&Key=" . urlencode($Key);
		$url .= "&Id=" . urlencode($id);

		$ch = curl_init();
		$timeout = 5;
		curl_setopt($ch, CURLOPT_URL, $url);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
		curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
		$result = curl_exec($ch);
		curl_close($ch);

		$resArray = json_decode($result);

		$data = ['result' => $resArray];

		return response()->json($resArray);
	}
	/**  getting log information
	 *  get Versions by information id
	 *
	 */
	public function getversionsByInformationId(Request $request) {

		$logInfo = DB::table('log_information')
			->select('version', 'id')
			->where('application_id', $request->infoid)
			->get();

		return response()->json($logInfo);
	}
	/**  Download version information
	 *
	 *
	 */
	public function downloadGenerateScedulePdf(Request $request, $email_flag = false) {

		$logInfo = LogInformation::with('raf_docuemnts')->find($request->logInfoId);

		// print_r(expression)
		//echo $logInfo->product_id;
		if ($logInfo->product_id == 17 || $logInfo->product_id == 27) {
			$file_path = $this->fileuploader->createGenerateScheduleBAIFileIfnotExists($request->logInfoId);
		} else {
			$file_path = $this->fileuploader->createGenerateScheduleFileIfnotExists($request->logInfoId);
		}

		if (isset($request->logInfoId) && !$email_flag) {

			//  echo " in this method";
			//  dd($file_path);

			//return response()->download($file_path);
			return $this->helper->download($file_path);
			//  $file = public_path(). $file_path;
			// return response()->download($file);
		}

		if ($email_flag) {

			if ($logInfo->action == "EDIT") {
				$status = $this->helper->sendEmailWithEditpolicyDocuemnts($request->logInfoId, $request);
			} else {
				$status = $this->helper->sendEmailWithpolicyDocuemnts($request->logInfoId, $request);
			}

			if ($status) {
				if ($request->ajax()) {
					return response()->json(['status' => 'success', 'message' => 'Email sent successfully']);
				} else {
					flash()->sucess("Email sent successfully");
					return rediret()->back();
				}
			} else {
				if ($request->ajax()) {
					return response()->json(['status' => 'error', 'message' => "Something went wrong in processing request"]);
				} else {
					flash()->error("Something went wrong in processing request");
					return rediret()->back();
				}
			}
		}
	}

	public function insertMailTracker($data) {
		$mailtracker = new MailTracker;
		$mailtracker->mt_lead_id = $data['mt_lead_id'];
		$mailtracker->mt_cc_mails = $data['mt_cc_mails'];
		$mailtracker->mt_bcc_mails = $data['mt_bcc_mails'];
		$mailtracker->mt_from_mail = $data['mt_from_mail'];
		$mailtracker->mt_sent_status = $data['mt_sent_status'];
		$mailtracker->mt_contents = $data['mt_contents'];
		$mailtracker->mt_type = $data['mt_type'];
		$mailtracker->mt_created_u_id = \Auth::user()->id;
		$mailtracker->save();
	}

	public function download(Request $request) {
		$logInfo = LogInformation::find($request->logInfoId);

		if ($request->email == 1) {
			$email_flag = true;
		} else {
			$email_flag = false;
		}

		if (!empty($logInfo)) {
			//new call genrate schedule
			if ($logInfo->action == "EDIT") {
				return $this->downloadGenerateScedulePdf($request, $email_flag);
			} elseif ($logInfo->action == "MTA" || $logInfo->action=="Price_Increase_Cover_Letter") {
				return $this->downloadMTAPdfLater($request, $email_flag);
			} elseif ($logInfo->action == "RENEW") {
				return $this->downloadRenewPdfLater($request, $email_flag);
			} elseif ($logInfo->action == "CANCEL") {
				return $this->downloadCancelPdfLater($request, $email_flag);
			} 
			elseif ($logInfo->action == "Rejected") {
				return $this->downloadRejectPdfLater($request, $email_flag);
			} else {
				return $this->downloadGenerateScedulePdf($request, $email_flag);
			}
		}
	}

	/**
	 * To generate a text file
	 * @param  string $value [description]
	 * @return [type]        [description]
	 */
	public function textFile($value = '') {
		$date = date('dmY');
		$heading_name = 'A0BEIN' . $date . '00000000000000000000000000000000000000000000000000000000000000000000';

		$information = DB::table('information')->where('id', '!=', '1')->where('accountnumber', '<>', '')
		// ->where('date_added',date('Y-m-d'))
			->where('id', 4)
			->limit(5)->get();

		$fname_ori_spaces = 15;
		$title_ori_spaces = 4;
		$policy_ori_spaces = 18;
		$mname_ori_spaces = " ";
		$sname_ori_spaces = 35;
		$dob_ori_spaces = 8;
		$mrryStatus_ori_spaces = " ";
		$add1_ori_spaces = 30;
		$add2_ori_spaces = 30;
		$add3_ori_spaces = 30;
		$add4_ori_spaces = 30;
		$pcode_ori_spaces = 8;
		$financier_num_ori_spaces = 5;
		$dateWritten_ori_spaces = 8;
		$dateEffective_ori_spaces = 8;
		$coverageTerm_ori_spaces = 3;
		$sumInsured_ori_spaces = 9;
		$premium_ori_spaces = 7;
		$scemaNum_ori_spaces = 2;
		$outLet_ori_spaces = 7;
		$dataCance_ori_spaces = 8;
		$canceCommisn_ori_spaces = 9;
		$netPrem_ori_spaces = 9;
		$monthInstlmnt_ori_spaces = 7;
		$combid1_ori_spaces = 3;
		$cancleRsn_ori_spaces = 3;
		$ballonAmt_ori_spaces = 11;
		$ScndISNtitle_ori_spaces = 4;
		$ScndISNfname_ori_spaces = 15;
		$ScndISNsname_ori_spaces = 35;
		$creditFee_ori_spaces = 5;
		$noOfPrem_ori_spaces = 3;
		$ESI_ori_spaces = 1;
		$ScndISNDOB_ori_spaces = 8;
		$vehicMake_ori_spaces = 15;
		$vehicModel_ori_spaces = 40;
		$vehicRegi_ori_spaces = 15;
		$purchasePri_ori_spaces = 11;
		$scemaSubCode_ori_spaces = 3;
		$pafRate_ori_spaces = 6;
		$oldPolNum_ori_spaces = 8;
		$mandNum_ori_spaces = 8;
		$sortCode_ori_spaces = 8;
		$BankAcc_ori_spaces = 10;
		$BankAccTitl_ori_spaces = 18;
		$NBR_ori_spaces = 1;
		$expDate_ori_spaces = 8;
		$prodSchema_ori_spaces = 8;
		$firstDueDate_ori_spaces = 8;
		$nextDueDate_ori_spaces = 8;
		$email_ori_spaces = 45;
		$telNum_ori_spaces = 20;
		$mobNum_ori_spaces = 20;
		$MortgageAccNum_ori_spaces = 18;
		$filler_ori_spaces = 30;
		$niNum1stAssu_ori_spaces = 20;
		$niNum2ndAssu_ori_spaces = 20;
		$IbanNum_ori_spaces = 34;
		$bicCode_ori_spaces = 11;
		$MndSignedDate_ori_spaces = 10;
		$MndRefUMR_ori_spaces = 18;

		$fileds = "";
		$fnamesp = "";
		$policy_zeros = "";
		$Titlesp = "";
		$titleArray = "";

		foreach ($information as $info) {

			$policynumber = $info->policy_number;
			// substr for remove last charecter in title, that is dot(.)
			$title = substr($info->title, 0, -1);
			$fname = $info->fname;
			// policy number condition
			$policy_count = strlen($policynumber);
			if ($policy_count <= $policy_ori_spaces) {
				$spaces = $policy_ori_spaces - $policy_count;
				$i = 0;
				while ($i < $spaces) {
					if ($i == $spaces) {break;}
					$policy_zeros .= "0";
					$i++;
				}
			} elseif ($policy_count >= $policy_ori_spaces) {

				foreach ($policynumber as $polinum) {

				}
			}
			// Title condition
			$ftitle = '';
			$title_len = strlen($title);
			if ($title_len <= $title_ori_spaces) {
				$spaces = $title_ori_spaces - $title_len;
				$i = 0;
				while ($i < $spaces) {
					if ($i == $spaces) {break;}
					// adding space
					$Titlesp .= " ";
					$i++;
				}
			} elseif ($title_len >= $title_ori_spaces) {
				$titleArray = str_split($title);
				$r = 1;
				foreach ($titleArray as $tit) {
					$ftitle .= $tit;
					if ($r == $title_ori_spaces) {break;}
					$r++;
				}
			} else {
				$spaces = $title_ori_spaces;
				$i = 0;
				while ($i < $spaces) {
					if ($i == $spaces) {break;}
					// adding space
					$Titlesp .= " ";
					$i++;
				}
			}
			//  first name condition
			$fname_len = strlen($fname);
			$fFname = '';
			if ($fname_len <= $fname_ori_spaces) {
				$spaces = $fname_ori_spaces - $fname_len;
				$i = 0;
				while ($i < $spaces) {
					if ($i == $spaces) {break;}
					$fnamesp .= " ";
					$i++;
				}
			} elseif ($fname_len >= $fname_ori_spaces) {
				$fnameArray = str_split($fname);
				$r = 1;
				foreach ($fnameArray as $fname) {
					$fFname .= $fname;
					if ($r == $fname_ori_spaces) {break;}
					$r++;
				}
			} else {
				$spaces = $fname_ori_spaces;
				$i = 0;
				while ($i < $spaces) {
					if ($i == $spaces) {break;}
					$fnamesp .= " ";
					$i++;
				}
			}
			// surname condition
			$sname = $info->lname;
			$snamesp = '';
			$sname_len = strlen($sname);
			if ($sname_len <= $sname_ori_spaces) {
				$spaces = $sname_ori_spaces - $sname_len;
				$i = 0;
				while ($i < $spaces) {
					if ($i == $spaces) {break;}
					$snamesp .= " ";
					$i++;
				}
			} elseif ($sname_len >= $sname_ori_spaces) {
				$snameArray = str_split($sname);
				$sname = '';
				$r = 1;
				foreach ($snameArray as $snameA) {
					$sname .= $snameA;
					if ($r == $sname_ori_spaces) {break;}
					$r++;
				}
			} else {
				$spaces = $sname_ori_spaces;
				$i = 0;
				while ($i < $spaces) {
					if ($i == $spaces) {break;}
					$snamesp .= " ";
					$i++;
				}
			}

			// DOB condition
			$dob = $info->dob;
			$dobsp = '';
			if (isset($dob) && !empty($dob)) {
				$dob = date('dmY', strtotime($dob));
				$dob_len = strlen($dob);
				if ($dob_len <= $dob_ori_spaces) {
					$spaces = $dob_ori_spaces - $dob_len;
					$i = 0;
					while ($i < $spaces) {
						if ($i == $spaces) {break;}
						$dobsp .= " ";
						$i++;
					}
				}
			} else {
				$dob = "        ";
			}
			// Add1 condition
			$add1 = $info->address1;
			$add1sp = '';
			$add1_len = strlen($add1);
			if ($add1_len <= $add1_ori_spaces) {
				$spaces = $add1_ori_spaces - $add1_len;
				$i = 0;
				while ($i < $spaces) {
					if ($i == $spaces) {break;}
					$add1sp .= " ";
					$i++;
				}
			} elseif ($add1_len >= $add1_ori_spaces) {
				$add1Array = str_split($add1);
				$add1 = '';
				$r = 1;
				foreach ($add1Array as $add1A) {
					$add1 .= $add1A;
					if ($r == $add1_ori_spaces) {break;}
					$r++;
				}
			} else {
				$spaces = $add1_ori_spaces;
				$i = 0;
				while ($i < $spaces) {
					if ($i == $spaces) {break;}
					$add1sp .= " ";
					$i++;
				}
			}
			// Add2 condition
			$add2 = $info->address2;
			$add2sp = '';
			$add2_len = strlen($add2);
			if ($add2_len <= $add2_ori_spaces) {
				$spaces = $add2_ori_spaces - $add2_len;
				$i = 0;
				while ($i < $spaces) {
					if ($i == $spaces) {break;}
					$add2sp .= " ";
					$i++;
				}
			} elseif ($add2_len >= $add2_ori_spaces) {
				$add2Array = str_split($add2);
				$add2 = '';
				$r = 1;
				foreach ($add2Array as $add2A) {
					$add2 .= $add2A;
					if ($r == $add2_ori_spaces) {break;}
					$r++;
				}
			} else {
				$spaces = $add2_ori_spaces;
				$i = 0;
				while ($i < $spaces) {
					if ($i == $spaces) {break;}
					$add2sp .= " ";
					$i++;
				}
			}
			// address3 & address4(both have 30 blank spaces)
			$add3And4sp = "";
			if (isset($add3_ori_spaces) || isset($add4_ori_spaces)) {
				$spaces = $add3_ori_spaces; // or $add4_ori_spaces
				$i = 0;
				while ($i < $spaces) {
					if ($i == $spaces) {break;}
					$add3And4sp .= " ";
					$i++;
				}
			}

			// postcode condition
			$postcode = $info->postcode;
			$postcodesp = '';
			$postcode_len = strlen($postcode);
			if (isset($postcode) && !empty($postcode)) {

				if ($postcode_len <= $pcode_ori_spaces) {
					$spaces = $pcode_ori_spaces - $postcode_len;
					$i = 0;
					while ($i < $spaces) {
						if ($i == $spaces) {break;}
						$postcodesp .= " ";
						$i++;
					}
				} elseif ($postcode_len >= $pcode_ori_spaces) {
					$postcodeArray = str_split($postcode);
					$postcode = '';
					$r = 1;
					foreach ($postcodeArray as $pcode) {
						$postcode .= $pcode;
						if ($r == $pcode_ori_spaces) {break;}
						$r++;
					}
				}
			} else {
				$spaces = $pcode_ori_spaces; // or $add4_ori_spaces
				$i = 0;
				while ($i < $spaces) {
					if ($i == $spaces) {break;}
					$postcode .= " ";
					$i++;
				}
			}

			// Financial number
			$financier_num_ori_spaces = "";
			if (isset($financier_num_ori_spaces)) {
				$spaces = $financier_num_ori_spaces; // or $add4_ori_spaces
				$i = 0;
				while ($i < $spaces) {
					if ($i == $spaces) {break;}
					$financier_num_ori_spaces .= " ";
					$i++;
				}
			}
			// Policy start date policy means created date
			$insurance_startdate = $info->date_added;
			$insurance_startdatesp = '';
			if (isset($insurance_startdate) && !empty($insurance_startdate)) {
				$insurance_startdate = date('dmY', strtotime($insurance_startdate));
				$insurance_startdate_len = strlen($insurance_startdate);
				if ($insurance_startdate_len <= $dateWritten_ori_spaces) {
					$spaces = $dateWritten_ori_spaces - $insurance_startdate_len;
					$i = 0;
					while ($i < $spaces) {
						if ($i == $spaces) {break;}
						$insurance_startdatesp .= " ";
						$i++;
					}
				}
			} else {
				$spaces = $dateWritten_ori_spaces; // or $add4_ori_spaces
				$i = 0;
				while ($i < $spaces) {
					if ($i == $spaces) {break;}
					$insurance_startdatesp .= " ";
					$i++;
				}
			}

			// Effective date (insurance start date)
			$Effinsurance_startdate = $info->insurance_startdate;
			$effinsurance_startdatesp = '';
			if (isset($Effinsurance_startdate) && !empty($Effinsurance_startdate)) {
				$Effinsurance_startdate = date('dmY', strtotime($Effinsurance_startdate));
				$insurance_startdate_len = strlen($Effinsurance_startdate);
				if ($insurance_startdate_len <= $dateWritten_ori_spaces) {
					$spaces = $dateWritten_ori_spaces - $insurance_startdate_len;
					$i = 0;
					while ($i < $spaces) {
						if ($i == $spaces) {break;}
						$effinsurance_startdatesp .= " ";
						$i++;
					}
				}
			} else {
				$spaces = $dateWritten_ori_spaces; // or $add4_ori_spaces
				$i = 0;
				while ($i < $spaces) {
					if ($i == $spaces) {break;}
					$effinsurance_startdatesp .= " ";
					$i++;
				}
			}

			/*  Not Implemented */
			// cover term condition
			$coverType = 12;
			$coverTypesp = '';
			$coverType_len = strlen($coverType);
			if (isset($coverType) && !empty($coverType)) {

				if ($coverType_len <= $coverageTerm_ori_spaces) {
					$spaces = $coverageTerm_ori_spaces - $coverType_len;
					$i = 0;
					while ($i < $spaces) {
						if ($i == $spaces) {break;}
						$coverTypesp .= "0";
						$i++;
					}
				}
			}

			// Sum insured (Monthly benefit * 12) condition
			$sumInsuredsp = '';
			if (isset($info->monthlybenefit) && !empty($info->monthlybenefit)) {
				$sumInsured = $info->monthlybenefit * 12;
				$sumInsured = $sumInsured . '00';
				$sumInsured_len = strlen($sumInsured);

				if ($sumInsured_len <= $sumInsured_ori_spaces) {
					$spaces = $sumInsured_ori_spaces - $sumInsured_len;
					$i = 0;
					while ($i < $spaces) {
						if ($i == $spaces) {break;}
						$sumInsuredsp .= "0";
						$i++;
					}
				} elseif ($sumInsured_len >= $sumInsured_ori_spaces) {
					$sumInsuredArray = str_split($sumInsured);
					$sumInsured = '';
					$r = 1;
					foreach ($sumInsuredArray as $sa) {
						$sumInsured .= $sa;
						if ($r == $sumInsured_ori_spaces) {break;}
						$r++;
					}
				}
			} else {
				$spaces = $sumInsured_ori_spaces; // or $add4_ori_spaces
				$i = 0;
				while ($i < $spaces) {
					if ($i == $spaces) {break;}
					$sumInsured .= "0";
					$i++;
				}
			}

			// Premium or refund paid(Monthly cost) condition
			$sumInsuredsp = '';
			if (isset($info->monthlycost) && !empty($info->monthlycost)) {
				$sumInsured = $info->monthlycost;
				$sumInsured = $sumInsured . '00';
				$sumInsured_len = strlen($sumInsured);

				if ($sumInsured_len <= $sumInsured_ori_spaces) {
					$spaces = $sumInsured_ori_spaces - $sumInsured_len;
					$i = 0;
					while ($i < $spaces) {
						if ($i == $spaces) {break;}
						$sumInsuredsp .= "0";
						$i++;
					}
				} elseif ($sumInsured_len >= $sumInsured_ori_spaces) {
					$sumInsuredArray = str_split($sumInsured);
					$sumInsured = '';
					$r = 1;
					foreach ($sumInsuredArray as $sa) {
						$sumInsured .= $sa;
						if ($r == $sumInsured_ori_spaces) {break;}
						$r++;
					}
				}
			} else {
				$spaces = $sumInsured_ori_spaces; // or $add4_ori_spaces
				$i = 0;
				while ($i < $spaces) {
					if ($i == $spaces) {break;}
					$sumInsured .= "0";
					$i++;
				}
			}

			echo "<pre>";
			print_r($sumInsuredsp . $sumInsured);
			echo "</pre>";

			if (isset($ftitle) && !empty($ftitle)) {
				$title = $ftitle;
			}
			if (isset($fFname) && !empty($fFname)) {
				$fname = $fFname;
			}
			if (isset($fFname) && !empty($fFname)) {
				$fname = $fFname;
			}

			$fileds .= 'A1' . $policy_zeros . $policynumber . $title . $Titlesp . $fname . $fnamesp . $mname_ori_spaces . $sname . $snamesp . $dob . $dobsp . $mrryStatus_ori_spaces . $add1 . $add1sp . $add2 . $add2sp . $add3And4sp . $add3And4sp . $postcode . $postcodesp . $financier_num_ori_spaces . $insurance_startdate . $insurance_startdatesp . $Effinsurance_startdate . $effinsurance_startdatesp . $coverTypesp . $coverType . $sumInsuredsp . $sumInsured . "\n";

			echo "<pre>";
			print_r($fileds);
			echo "</pre>";
			return;
			$fnamesp = "";
			$policy_zeros = "";
			$Titlesp = "";
			$ftitle = "";
			$fFname = "";
			$sname = "";
		}
		echo "<pre>";
		print_r($information);
		echo "</pre>";
		return;

		$fileText = $heading_name . "\n" . $fileds;
		// $fileText = "Hello";

		$fileName = "Text" . $date . ".txt";
		$headers = ['Content-type' => 'text/plain', 'test' => 'YoYo', 'Content-Disposition' => sprintf('attachment; filename="%s"', $fileName), 'X-BooYAH' => 'WorkyWorky'];

		return Response::make($fileText, 200, $headers);
	}

	public function viewWeblineLeadInfo(Request $request) {
		$quote_id = (int) $request->quote_id;
		$status = $request->status;

		$lead = $request->lead;
		$id = $request->information_id;

		// getting lead information
		$information = DB::table('information')
			->where('id', $id)->first();
		// Questions information
		$questions = DB::table('webline_underwriting_question_answers')
			->where('quote_id', $quote_id)
			->orderBy('id', 'DESC')
			->first();

		$underwriting_questions = DB::table('webline_underwriting_questions')
			->orderBy('id', 'DESC')
			->first();
		// getting policy prefix information
		$policy_prefix = DB::table('products')
			->where('id', $information->product_id)
			->select('policy_prefix')
			->first();
		$insurer_details = DB::table('temp_quot_webline_products')
			->join('webline_insurers', 'temp_quot_webline_products.ProviderName', '=', 'webline_insurers.insurer_code')
			->where('temp_quot_webline_products.QuoteId', $information->quote_id)
			->where('temp_quot_webline_products.ProductID', $information->product_id)
			->first();
		if (isset($insurer_details)) {
			$information->insurer = $insurer_details->insurer;
			$information->product_name = $insurer_details->ProductName;
		}
		// echo '<pre>';
		// print_r($insurer_details);
		// echo '</pre>';

		if ($lead == 'incompleted') {
			$subHomeName = 'Incomplete Leads';
			$lead_name = 'Incomplete';
		} elseif ($lead == 'completed') {
			$subHomeName = 'Completed Leads';
			$lead_name = 'Completed';
		} else {
			$subHomeName = 'Leads';
			$lead_name = 'Lead';
		}

		//Breadcrumb Titles
		$breadcrumb = [
			'title' => $lead_name . ' Leads',
			'subTitle' => 'Preview of completed lead',
			'home' => 'Leads',
			'homeLink' => '/account/leads?status=' . $lead,
			'subHome' => $subHomeName,
			'subHomeLink' => URL::to('account/leads?status=' . $lead . ''),
			'subChildHome' => 'View',
			'menu' => '' . $lead . '-leads',
			'menuColor' => '#fff',
			'MenuClass' => 'active open',
			'SubMenuClass' => 'active',
		];
		// echo '<pre>';
		// print_r($underwriting_questions);
		// echo '</pre>';
		return view('admin.leads.view_webline_lead_Info', compact('information', 'questions', 'breadcrumb', 'policy_prefix', 'underwriting_questions'));

		# code...
	}
	/*
		    *   Polacy transfer form best income to simple -- bhaskar (06-02-2018)
	*/
	public function TransferBestincomeToSimple(Request $request, $id = null) {

		// echo $id;
		$information = DB::table('information')
			->join('quotes', 'quotes.id', '=', 'information.quote_id')
			->join('industries', 'industries.id', '=', 'quotes.industry_type_id')
			->where('information.id', $id)
			->select('information.*', 'industries.industry_name', 'industries.id as industry_id', 'quotes.monthly_gross_income')
			->first();
		/*echo "<pre>";
			        echo "Hello";
			        print_r($information);
		*/

		$previous_session = $information;

		$policy_prefix = DB::table('products')
			->where('id', SIMPLE_INCOME)
			->select('policy_prefix', 'pdf_underwritten_txt', 'benifit_period')
			->first();
		if ($information->benefit_period == 0 || $information->benefit_period == '') {
			$information->benefit_period = $policy_prefix->benifit_period;
		}

		//Breadcrumb Titles
		$breadcrumb = [
			'title' => 'Completed Leads',
			'subTitle' => 'Renew',
			'home' => 'Leads',
			'homeLink' => URL::to('account/leads?status=completed'),
			'subHome' => 'Completed Leads',
			'subHomeLink' => URL::to('account/leads?status=completed'),
			'subChildHome' => 'Policy transfer ',
			'menu' => 'completed-leads',
			'menuColor' => '#fff',
			'MenuClass' => 'active open',
			'SubMenuClass' => 'active',
		];
		if ($request->input()) {
			$input = $request->input();
			$application_date_added = date('Y-m-d');

			//$insuranceEndDate = date('Y-m-d',strtotime($input['editapppolicystartdate'].'+1 year'.'-1 day'));
			$insuranceStartDate = strtr($input['editapppolicystartdate'], '/', '-');
			$insuranceStartDate = date('Y-m-d', strtotime($insuranceStartDate));

			$insuranceEndDate = strtr($input['editapppolicystartdate'], '/', '-');
			$insuranceEndDate = date('Y-m-d', strtotime($insuranceEndDate . '+1 year'));

			$maximum_benefit_period = $input['renew_benefit_period'];

			$monthly_cost = CommonComponent::getQuoteProductCost($information->quote_id, $information->product_id);

			$dob_array = explode("/", $input['dob']);
			$dob = $dob_array[2] . '-' . $dob_array[1] . '-' . $dob_array[0];
			$age = date_diff(date_create($dob), date_create('today'))->y;

			$personal_dob = sprintf("%s", CommonComponent::actualDateFormat($dob));

			// insert the present data into another  table before update it -- start
			$information_data = DB::table('information')
				->where('id', $input['id'])
				->first();
			$quote_data = DB::table('quotes')
				->where('id', $information->quote_id)
				->first();
			$quote_inserted_array = array(
				'quote_id' => $information->quote_id,
				'affiliate_uid' => $quote_data->affiliate_uid,
				'lead_from' => $quote_data->lead_from,
				'dob' => $quote_data->dob,
				'age' => $quote_data->age,
				'residential_status' => $quote_data->residential_status,
				'mortgage_type' => $quote_data->mortgage_type,
				'monthly_mortgage_repay' => $quote_data->monthly_mortgage_repay,
				'mortgage_duration_month' => $quote_data->mortgage_duration_month,
				'mortgage_duration_year' => $quote_data->mortgage_duration_year,
				'monthly_rent' => $quote_data->monthly_rent,
				'loan_repayment' => $quote_data->loan_repayment,
				'taken_loan' => $quote_data->taken_loan,
				'loan_duration_month' => $quote_data->loan_duration_month,
				'loan_duration_year' => $quote_data->loan_duration_year,
				'monthly_loan_repay' => $quote_data->monthly_loan_repay,
				'monthly_gross_income' => $quote_data->monthly_gross_income,
				'monthly_benifit_amount' => $quote_data->monthly_benifit_amount,
				'industry_type_id' => $quote_data->industry_type_id,
				'occupation_id' => $quote_data->occupation_id,
				'cover_type' => $quote_data->cover_type,
				'cease_cover' => $quote_data->cease_cover,
				'term_in_year' => $quote_data->term_in_year,
				'age_or_term' => $quote_data->age_or_term,
				'excess_period' => $quote_data->excess_period,
				'created_at' => $quote_data->created_at,
				'updated_at' => $quote_data->updated_at,
				'inserted_date' => date("Y-m-d H:i:s"),
			);

			$information_inserted_array = array(
				'user_id' => $information_data->user_id,
				'information_id' => $input['id'],
				'quote_id' => $information_data->quote_id,
				'product_id' => $information_data->product_id,
				'title' => $information_data->title,
				'gender' => $information_data->gender,
				'increasing_benefit' => $information_data->increasing_benefit,
				'fname' => $information_data->fname,
				'lname' => $information_data->lname,
				'dob' => $information_data->dob,
				'emp_status' => $information_data->emp_status,
				'occupation' => $information_data->occupation,
				'employer_name' => $information_data->employer_name,
				'building' => $information_data->building,
				'premiseName' => $information_data->premiseName,
				'address1' => $information_data->address1,
				'address2' => $information_data->address2,
				'address3' => $information_data->address3,
				'address4' => $information_data->address4,
				'postcode' => $information_data->postcode,
				'formattedPO' => $information_data->formattedPO,
				'postaltown' => $information_data->postaltown,
				'county' => $information_data->county,
				'email' => $information_data->email,
				'telephone' => $information_data->telephone,
				'mobile' => $information_data->mobile,
				'marketingOptOut' => $information_data->marketingOptOut,
				'declaration_confirm' => $information_data->declaration_confirm,
				'under_writing_q1' => $information_data->under_writing_q1,
				'under_writing_ans' => $information_data->under_writing_ans,
				'under_writing_accept' => $information_data->under_writing_accept,
				'insurance_startdate' => $information_data->insurance_startdate,
				'transfer' => $information_data->transfer,
				'current_provider' => $information_data->current_provider,
				'current_policy_date' => $information_data->current_policy_date,
				'typeofcover' => $information_data->typeofcover,
				'loan_to_pay' => $information_data->loan_to_pay,
				'monthlycommitment' => $information_data->monthlycommitment,
				'monthlygrossincome' => $information_data->monthlygrossincome,
				'mortgagesalary' => $information_data->mortgagesalary,
				'mortgage' => $information_data->mortgage,
				'salary' => $information_data->salary,
				'age' => $information_data->age,
				'monthlybenefit' => $information_data->monthlybenefit,
				'monthlycost' => $information_data->monthlycost,
				'cover' => $information_data->cover,
				'cover_term' => $information_data->cover_term,
				'accept' => $information_data->accept,
				'accountname' => $information_data->accountname,
				'accountname2' => $information_data->accountname2,
				'accountnumber' => $information_data->accountnumber,
				'sortcode' => $information_data->sortcode,
				'iban' => $information_data->iban,
				'bank' => $information_data->bank,
				'bankbic' => $information_data->bankbic,
				'branch' => $information_data->branch,
				'branchbic' => $information_data->branchbic,
				'branch_address' => $information_data->branch_address,
				'town' => $information_data->town,
				'bank_postcode' => $information_data->bank_postcode,
				'bank_phone' => $information_data->bank_phone,
				'directdebits' => $information_data->directdebits,
				'preferreddate' => $information_data->preferreddate,
				'affid' => $information_data->affid,
				'ip' => $information_data->ip,
				'date_added' => $information_data->date_added,
				'time_added' => $information_data->time_added,
				'guid' => $information_data->guid,
				'status' => $information_data->status,
				'comments_for_rejection' => $information_data->comments_for_rejection,
				'comment' => $information_data->comment,
				'mail_send' => $information_data->mail_send,
				'mms_senddate' => $information_data->mms_senddate,
				'mms_sendmonth' => $information_data->mms_sendmonth,
				'subscription' => $information_data->subscription,
				'formtype' => $information_data->formtype,
				'typeofprotection' => $information_data->typeofprotection,
				'excessperiod' => $information_data->excessperiod,
				'insurer' => $information_data->insurer,
				'smoker' => $information_data->smoker,
				'life_cover' => $information_data->life_cover,
				'life_cover_term' => $information_data->life_cover_term,
				'life_cover_type' => $information_data->life_cover_type,
				'life_cover_premium_type' => $information_data->life_cover_premium_type,
				'CIC' => $information_data->CIC,
				'lead_from' => $information_data->lead_from,
				'lead_source_field' => $information_data->lead_source_field,
				'benefit_period' => $information_data->benefit_period,
				'duration' => $information_data->duration,
				'duration_year' => $information_data->duration_year,
				'duration_month' => $information_data->duration_month,
				'contractor_deirectdebitref' => $information_data->contractor_deirectdebitref,
				'contractor_id' => $information_data->contractor_id,
				'policy_number' => $information_data->policy_number,
				'policy_number_full' => $information_data->policy_number_full,
				'mta_updated' => $information_data->mta_updated,
				'renew_updated' => $information_data->renew_updated,
				'edit_updated' => $information_data->edit_updated,
				'insurance_enddate' => $information_data->insurance_enddate,
				'credit_agreement_generated' => $information_data->credit_agreement_generated,
				'rate_reference' => $information_data->rate_reference,
				'loan_reference_number' => $information_data->loan_reference_number,
				'crm_id' => $information_data->crm_id,
				'is_webline_product' => $information_data->is_webline_product,
				'rates' => $information_data->rates,
				'inserted_date' => date("Y-m-d H:i:s"),
			);

			DB::table('old_transfered_quotes')->insert($quote_inserted_array);

			DB::table('old_transfered_information')->insert($information_inserted_array);
			// insert the present data into another table before update it -- end
			/*echo "<pre>";
	            echo $insuranceEndDate."<br>";
	            echo $insuranceStartDate."<br>";
	            echo $monthly_cost;
	            print_r($_POST);
*/

			$industry_type_id = $input['industry_type_id'];
			$industry_type_id = ($industry_type_id != '' ? $industry_type_id : $quote_data->industry_type_id);

			$new_policyno = CommonComponent::get_policy_no(SIMPLE_INCOME, $id);

			$quote_update_status = quotes::where('id', $information->quote_id)
				->update([
					'monthly_benifit_amount' => $input['monthlybenefit'],
					'cover_type' => $input['typeofcover'],
					'excess_period' => $input['excessperiod'],
					'monthly_gross_income' => $input['monthly_gross_income'],
					'dob' => $dob,
					'age' => $age,
					'industry_type_id' => $industry_type_id,
				]);

			if (!empty($input['form_new_line1']) || !empty($input['line1'])) {
				if (!empty($input['form_new_line1'])) {
					// selected address
					$line1 = $input['form_new_line1'];
					$line2 = $input['form_new_line2'];
					$line3 = $input['form_new_line3'];
					$line4 = $input['form_new_line4'];
					$town = $input['form_new_town'];
					$country = $input['form_new_country'];
					$postcode = $input['form_new_postcode'];
				}
				if (!empty($input['line1'])) {
					// manually entered address
					$line1 = $input['line1'];
					$line2 = $input['line2'];
					$line3 = $input['line3'];
					$line4 = $input['line4'];
					$town = $input['town'];
					$country = $input['country'];
					$postcode = $input['postal_code'];
				}

				$update_info = DB::table('information')
					->where('id', $input['id'])
					->update([
						// 'insurance_startdate' => $input['editapppolicystartdate'],
						'date_added' => $application_date_added,
						'title' => $input['title'],
						'fname' => $input['fname'],
						'lname' => $input['lname'],
						'full_name' => $input['fname'] . " " . $input['lname'],
						'typeofcover' => $input['typeofcover'],
						'excessperiod' => $input['excessperiod'],
						'monthlybenefit' => $input['monthlybenefit'],
						'monthlycost' => $monthly_cost,
						'premiseName' => $input['premiseName'],
						'address1' => $line1,
						'address2' => $line2,
						'address3' => $line3,
						'address4' => $line4,
						'postcode' => $postcode,
						'postaltown' => $town,
						'county' => $country,
						'policy_number' => $input['policy_number'],
						'insurance_enddate' => $insuranceEndDate,
						'insurance_startdate' => $insuranceStartDate,
						'renew_updated' => '1',
						'benefit_period' => $maximum_benefit_period,
						'product_id' => SIMPLE_INCOME,
						'dob' => $personal_dob,
						'age' => $age,
						'emp_status' => $input['emp_status'],
						'employer_name' => $input['employer_name'],
						'monthlygrossincome' => $input['monthly_gross_income'],
						'policy_number' => $new_policyno,

					]);
			} else {
				$update_info = DB::table('information')
					->where('id', $input['id'])
					->update([
						'insurance_startdate' => $input['editapppolicystartdate'],
						'date_added' => $application_date_added,
						'title' => $input['title'],
						'fname' => $input['fname'],
						'lname' => $input['lname'],
						'full_name' => $input['fname'] . " " . $input['lname'],
						'typeofcover' => $input['typeofcover'],
						'excessperiod' => $input['excessperiod'],
						'monthlybenefit' => $input['monthlybenefit'],
						'monthlycost' => $monthly_cost,
						'premiseName' => $input['premiseName'],
						'policy_number' => $input['policy_number'],
						'insurance_enddate' => $insuranceEndDate,
						'insurance_startdate' => $insuranceStartDate,
						'renew_updated' => '1',
						'benefit_period' => $maximum_benefit_period,
						'product_id' => SIMPLE_INCOME,
						'dob' => $personal_dob,
						'age' => $age,
						'emp_status' => $input['emp_status'],
						'employer_name' => $input['employer_name'],
						'monthlygrossincome' => $input['monthly_gross_income'],
						'policy_number' => $new_policyno,

					]);
			}

			if (isset($update_info)) {
				// Checking last version before inserting new information log record
				$version = DB::table('log_information')
					->select('version as last_version')
					->where('application_id', $input['id'])
					->orderBy('version', 'desc')
					->first();
				if (empty($version)) {
					$version = 0;
				} else {
					$version = $version->last_version;
				}
				/*$information = DB::table('information')
					                            ->where('id', $input['id'])
				*/
				$information = DB::table('information')
					->join('quotes', 'quotes.id', '=', 'information.quote_id')
					->join('industries', 'industries.id', '=', 'quotes.industry_type_id')
					->where('information.id', $id)
					->select('information.*', 'industries.industry_name', 'industries.id as industry_id', 'quotes.monthly_gross_income')
					->first();
				// Adding log information
				DB::table('log_information')
					->insert([
						'application_id' => $information->id,
						'product_id' => SIMPLE_INCOME,
						'title' => $information->title,
						'fname' => $information->fname,
						'lname' => $information->lname,
						'full_name' => $information->fname . " " . $information->lname,
						'dob' => $information->dob,
						'emp_status' => $information->emp_status,
						'occupation' => $information->occupation,
						'employer_name' => $information->employer_name,
						'building' => $information->building,
						'premiseName' => $information->premiseName,
						'address1' => $information->address1,
						'address2' => $information->address2,
						'address3' => $information->address3,
						'address4' => $information->address4,
						'postcode' => $information->postcode,
						'formattedPO' => $information->formattedPO,
						'postaltown' => $information->postaltown,
						'county' => $information->county,
						'email' => $information->email,
						'telephone' => $information->telephone,
						'mobile' => $information->mobile,
						'marketingOptOut' => $information->marketingOptOut,
						'under_writing_q1' => $information->under_writing_q1,
						'under_writing_ans' => $information->under_writing_ans,
						'under_writing_accept' => $information->under_writing_accept,
						'insurance_startdate' => $information->insurance_startdate,
						'transfer' => $information->transfer,
						'current_provider' => $information->current_provider,
						'current_policy_date' => $information->current_policy_date,
						'typeofcover' => $information->typeofcover,
						'loan_to_pay' => $information->loan_to_pay,
						'monthlycommitment' => $information->monthlycommitment,
						'monthlygrossincome' => $information->monthlygrossincome,
						'mortgagesalary' => $information->mortgagesalary,
						'mortgage' => $information->mortgage,
						'salary' => $information->salary,
						'age' => $information->age,
						'monthlybenefit' => $information->monthlybenefit,
						'monthlycost' => $information->monthlycost,
						'cover' => $information->cover,
						'cover_term' => $information->cover_term,
						'accept' => $information->accept,
						'accountname' => $information->accountname,
						'accountname2' => $information->accountname2,
						'accountnumber' => $information->accountnumber,
						'sortcode' => $information->sortcode,
						'iban' => $information->iban,
						'bank' => $information->bank,
						'bankbic' => $information->bankbic,
						'branch' => $information->branch,
						'branchbic' => $information->branchbic,
						'branch_address' => $information->branch_address,
						'town' => $information->town,
						'bank_postcode' => $information->bank_postcode,
						'bank_phone' => $information->bank_phone,
						'directdebits' => $information->directdebits,
						'preferreddate' => $information->preferreddate,
						'affid' => $information->affid,
						'ip' => $information->ip,
						'date_added' => $information->date_added,
						'time_added' => $information->time_added,
						'guid' => $information->guid,
						'status' => $information->status,
						'comment' => $information->comment,
						'mail_send' => $information->mail_send,
						'mms_senddate' => $information->mms_senddate,
						'mms_sendmonth' => $information->mms_sendmonth,
						'subscription' => $information->subscription,
						'formtype' => $information->formtype,
						'typeofprotection' => $information->typeofprotection,
						'excessperiod' => $information->excessperiod,
						'insurer' => $information->insurer,
						'smoker' => $information->smoker,
						'life_cover' => $information->life_cover,
						'life_cover_term' => $information->life_cover_term,
						'life_cover_type' => $information->life_cover_type,
						'life_cover_premium_type' => $information->life_cover_premium_type,
						'CIC' => $information->CIC,
						'lead_from' => $information->lead_from,
						'lead_source_field' => $information->lead_source_field,
						'benefit_period' => $information->benefit_period,
						'duration' => $information->duration,
						'duration_year' => $information->duration_year,
						'duration_month' => $information->duration_month,
						'contractor_deirectdebitref' => $information->contractor_deirectdebitref,
						'contractor_id' => $information->contractor_id,
						'policy_number' => $information->policy_number,
						'policy_number_full' => $information->policy_number_full,
						'mta_updated' => "0",
						'renew_updated' => $information->renew_updated,
						'insurance_enddate' => $information->insurance_enddate,
						'version' => $version + 1,
						'edit_updated' => '0',

					]);

				$pdf_url = public_path() . '/uploads/pdf/admin/' . 'application' . date('ymdHis') . 'application.pdf';

				// Pdf download button
				$downloadBtn = '<input type="hidden" value="download_btn" id="download_btn" /><input type="hidden" value="' . $pdf_url . '" id="download_file_path" />';

				$policy_prefix = DB::table('products')
					->where('id', $information->product_id)
					->select('policy_prefix', 'pdf_underwritten_txt', 'benifit_period')
					->first();

/* This is for renew pdf */
				$last_year_monthly_premium = $previous_session->monthlycost;

				\Flash::success('Updated successfully.');

				return view('admin.leads.transfer_bestincome_to_simple', compact('information', 'breadcrumb', 'policy_prefix', 'pdf_url', 'downloadBtn', 'last_year_monthly_premium'));

			} else {
				\Flash::error('Not updated successfully.');
			}
		} // $request->input() -- end
		/* This is for renew pdf */
		/* echo "<pre>";
			        print_r($information);
		*/

		$new_policyno = CommonComponent::get_policy_no(SIMPLE_INCOME, $id);
		$information->policy_number = $new_policyno;

		$monthly_cost = CommonComponent::getQuoteProductCost($information->quote_id, SIMPLE_INCOME);
		$information->monthlycost = $monthly_cost;

		$last_year_monthly_premium = '';
		return view('admin.leads.transfer_bestincome_to_simple', compact('information', 'breadcrumb', 'policy_prefix', 'last_year_monthly_premium'));
	}

	// calculate monthly premium value
	public function calculateMonthlyPremium(Request $request) {
		$typeofcover = $request->typeofcover;
		$excessperiod = $request->excessperiod;
		$monthlybenefit = $request->monthlybenefit;
		$renew_benefit_period = $request->renew_benefit_period;

		$information_id = $request->information_id;

		if (($information_id != '') && ($typeofcover != '') && ($excessperiod != '') && ($monthlybenefit != '') && ($renew_benefit_period != 0)) {
			$information = DB::table('information')
				->where('id', $information_id)
				->first();

			if ($information) {
				$product_id = $information->product_id;
				$quote_dtls = CommonComponent::getQuoteInfo($information->quote_id);

				if ($quote_dtls['dob'] == "0000-00-00") {
					// $dob=date_create($information->dob);
					//echo $information->dob;
					//exit;
					$dob = explode("/", $information->dob);
					$dob_actual = $dob[2] . "-" . $dob[1] . "-" . $dob[0];
					//  echo $dob_actual;
					$dob_actual = date('Y-m-d', strtotime($dob_actual));
					// echo $dob_actual;
					// exit;
					$dueDateTime = Carbon::createFromFormat('Y-m-d', $dob_actual);

					//  $date = Carbon::parse(date_format($information->dob,'Y-m-d'));
					//  echo $dueDateTime;

					// exit;
					$age = date_diff(date_create($dueDateTime), date_create('today'))->y;
				} else {
					$age = date_diff(date_create($quote_dtls['dob']), date_create('today'))->y;
				}

				$insurance_actual = date('Y-m-d', strtotime($information->insurance_startdate));

				// $dob=date('Y-m-d',strtotime($information->dob));
				$dob = explode("/", $information->dob);
				$dob_actual = $dob[2] . "-" . $dob[1] . "-" . $dob[0];

				$dob = Carbon::parse($dob_actual)->format('Y-m-d');

				//echo $insurance_actual;
				//echo $dob;

				$age = date_diff(date_create($dob), date_create($insurance_actual))->y;

				// echo $age;
				// exit;
				//$age = date_diff(date_create($quote_dtls['dob']), date_create('today'))->y;

				$monthly_benifit_amount = $monthlybenefit;
				$cover_type = $typeofcover;
				$excess_period = $excessperiod;

				if ($product_id == Config::get('constant.INSTAPROTECT')) {
					if ($cover_type == 'U' || $cover_type == "ASU") {
						$cover_type = "ASU";
					}

					$excess_period = 1;
				}

				if ($product_id == Config::get('constant.SHEPHERDS_FRIENDLY_LONGTERM') || $product_id == Config::get('constant.SHEPHERDS_FRIENDLY_SHORTERM')) {

					if ($excess_period == 30) {
						$excess_period = 28;
					} else if ($excess_period == 60) {
						$excess_period = 56;
					} else {
						$excess_period = $information->excessperiod;
					}

				}

				//Fetch Product Details
				//$product_dtls = CommonComponent::getProductDetails($product_id);

				//Product Details
				//$product_benifit_period = $product_dtls['benifit_period'];
				$monthly_premium = 0;

				if ($product_id == Config::get('constant.SIMPLE_INCOME_INSURANCE_COVEA')) {

					$monthly_premium = CommonComponent::fetchMonthlyCostSimpleCovea($age, $monthly_benifit_amount, $cover_type, $excess_period, $product_id, $renew_benefit_period);
				} else {
					$monthly_premium = CommonComponent::fetchMonthlyCostSimpleCovea($age, $monthly_benifit_amount, $cover_type, $excess_period, $product_id, $renew_benefit_period);

				}
				echo $monthly_premium;
			}
			$monthly_premium = 0;
			echo $monthly_premium;
		} else {
			$monthly_premium = 0;
			echo $monthly_premium;
		}
		exit;
	}

	// calculate monthly premium value
	public function calculateMonthlyPremiumMta(Request $request) {
		$typeofcover = $request->typeofcover;
		$excessperiod = $request->excessperiod;
		$monthlybenefit = $request->monthlybenefit;
		$dob = $request->dob;
		$dob_actual = date('Y-m-d', strtotime($request->dob));
		// $age = date_diff(date_create($dob_actual), date_create('today'))->y;
		//$renew_benefit_period = $request->renew_benefit_period;

		$information_id = $request->information_id;

		if (($information_id != '') && ($typeofcover != '') && ($excessperiod != '') && ($monthlybenefit != '')) {
			$information = DB::table('information')
				->where('id', $information_id)
				->first();

			if ($information) {
				$product_id = $information->product_id;
				$quote_dtls = CommonComponent::getQuoteInfo($information->quote_id);

				$age = $information->age;

				if($information->renewal_date!="")
				{
					$insurance_actual = date('Y-m-d', strtotime($information->renewal_date));
				}
				else{
					$insurance_actual = date('Y-m-d', strtotime($information->insurance_startdate));
				}

				if ($product_id =="26" || $product_id=="24" || $product_id=="25") {

					$insurance_actual = date('Y-m-d', strtotime($information->insurance_startdate));
				}

				// $dob=date('Y-m-d',strtotime($information->dob));
				$dob = explode("/", $request->dob);
				$dob_actual = $dob[2] . "-" . $dob[1] . "-" . $dob[0];

				$dob = Carbon::parse($dob_actual)->format('Y-m-d');

				//echo $insurance_actual;
				//echo $dob;
				$age = date_diff(date_create($dob), date_create($insurance_actual))->y;

				// echo $age;
				// exit;

				$monthly_benifit_amount = $monthlybenefit;
				$cover_type = $typeofcover;
				$excess_period = $excessperiod;

				if ($product_id == Config::get('constant.INSTAPROTECT')) {
					if ($cover_type == 'U' || $cover_type == "ASU") {
						$cover_type = "ASU";
					}

					$excess_period = 1;
				}

				if ($product_id == Config::get('constant.SHEPHERDS_FRIENDLY_LONGTERM') || $product_id == Config::get('constant.SHEPHERDS_FRIENDLY_SHORTERM')) {

					if ($excess_period == 30) {
						$excess_period = 28;
					} else if ($excess_period == 60) {
						$excess_period = 56;
					} else {
						$excess_period = $information->excessperiod;
					}

				}

				//Fetch Product Details
				//$product_dtls = CommonComponent::getProductDetails($product_id);

				//Product Details
				//$product_benifit_period = $product_dtls['benifit_period'];
				$monthly_premium = 0;

				if($information->policy_number_full=='CC/CMPI1/1012083')
				{
					$age="37";

				}

				if($information->policy_number_full=='CC/CMPM1/1010196')
				{
					$age="37";
					
				}

				if($information->policy_number_full=='CC/CMPM1/1014669')
				{
					$age="42";
					
				}

				if($information->policy_number_full=='CC/CMPI1/1014549')
				{
					$age="42";
					
				}

				if($information->policy_number_full=='CC/CMPM1/1005380')
				{
					$age="37";
					
				}

				if($information->policy_number_full=='CC/CMPM1/1011941')
				{
					$age="42";
					
				}
			//	echo $age

				$monthly_premium = CommonComponent::fetchMonthlyCostSimpleCoveaMtaRenew($age,$monthly_benifit_amount,$cover_type,$excess_period,$product_id,0);

				
				if(($product_id=="3" || $product_id=="6" || $product_id=="30" || $product_id=="31" || $product_id=="28") && $information->renewal_date<="2021-01-31")
				{

					$monthly_premium = CommonComponent::fetchMonthlyCostSimpleCoveaMtaStandard($age,$monthly_benifit_amount,$cover_type,$excess_period,$product_id,0);
				}

				$mta_date=date('m/d/Y');
				$raf_date=date('m/d/Y');

				$new_annual_premium=$monthly_premium*12;
				$i = Information::with('RAFCustomerInfo')->find($information_id);

				
				if (!empty($i->RAFCustomerInfo->id)) {

					//$loan_details = DB::table('raf_loan')
					//->where('customerId', $i->RAFCustomerInfo->id)
					//->where('is_active', 1)
					//->first();

					$loan_details = RAFLoan::where('CustomerId',$i->RAFCustomerInfo->id)->orderBy('primary_id', 'desc')->first();

					//print_r($loan_details);

					$loan_schedules=DB::table('raf_loan_dates')
					->where('raf_loan_id',$loan_details->id)
					->first();

					RAFSchedulerController::getLoanPaymentScheduler($i->id,$loan_details->id);

										
					//dd($loan_details);

					$today=date('Y-m-d');
					$cover_from_date = Carbon::parse($today);
					$next_available_date = RAFSchedulerController::addDaysWithOutWeekendsAndBankHolidys($cover_from_date,9);

					//echo $next_available_date;

					$next_loan_dates=DB::table('raf_loan_dates')
					->where('raf_loan_id', $loan_details->id)
					->where('payment_date','>',$today)
					->first();

					$next_payment_date=Carbon::parse($next_loan_dates->payment_date);
					//dd($next_loan_dates);
					//echo $next_payment_date;
					$mta_date=$next_loan_dates->cover_from;
					$mta_date=Carbon::parse($next_loan_dates->cover_from);

					//echo $mta_date;
					//echo $today;
					//exit;
					if($next_payment_date->gt($next_available_date) && ($mta_date->gt($today)))
					{
						//echo "in this";
						//exit;

						$raf_date=RAFSchedulerController::removeDaysWithOutWeekendsAndBankHolidys($next_payment_date,9);
						$raf_date=Carbon::parse($raf_date)->format('d/m/Y');
						//echo "raf date".$raf_date;
						
						$mta_date=Carbon::parse($mta_date)->format('d/m/Y');

						$payment_details = RAFController::getPaymentTransaction($loan_details->id);
						
						$new_annual_premium=($monthly_premium*$payment_details['response']['PaymentsRemaining']) + $payment_details['response']['TotalReceived'];

						//echo $raf_date;
					}
					else{

						$next_loan_dates=DB::table('raf_loan_dates')
						->where('raf_loan_id', $loan_details->id)
						->where('payment_date','>',$next_payment_date)
						->first();
						//dd($next_loan_dates);

						$next_payment_date=Carbon::parse($next_loan_dates->payment_date);

						$mta_date=$next_loan_dates->cover_from;
						$mta_date=Carbon::parse($next_loan_dates->cover_from);


						if($mta_date->gt($today))
					{
						//echo "in this";
						//exit;

						$raf_date=RAFSchedulerController::removeDaysWithOutWeekendsAndBankHolidys($next_payment_date,9);
						$raf_date=Carbon::parse($raf_date)->format('d/m/Y');
						//echo "raf date".$raf_date;
						
						$mta_date=Carbon::parse($mta_date)->format('d/m/Y');

						$payment_details = RAFController::getPaymentTransaction($loan_details->id);
						
						$new_annual_premium=($monthly_premium*$payment_details['response']['PaymentsRemaining']) + $payment_details['response']['TotalReceived'];

						//echo $raf_date;
					}
					else{

						$next_loan_dates=DB::table('raf_loan_dates')
						->where('raf_loan_id', $loan_details->id)
						->where('payment_date','>',$next_payment_date)
						->first();
						//dd($next_loan_dates);

						$next_payment_date=Carbon::parse($next_loan_dates->payment_date);



						
					//	echo "next payment date--".$next_payment_date;

						$raf_date=RAFSchedulerController::removeDaysWithOutWeekendsAndBankHolidys($next_payment_date,9);
						//$raf_date=Carbon::parse($raf_date,'d/m/y');
						$raf_date=Carbon::parse($raf_date)->format('d/m/Y');
						//echo "raf date".$raf_date;
						$mta_date=$next_loan_dates->cover_from;
						$mta_date=Carbon::parse($mta_date)->format('d/m/Y');

						$payment_details = RAFController::getPaymentTransaction($loan_details->id);
						//dd($payment_details);
						
						$new_annual_premium=($monthly_premium*($payment_details['response']['PaymentsRemaining']-1)) + $payment_details['response']['TotalReceived'] + $payment_details['response']['NextPaymentAmount'];

					}

				

					}

					return $monthly_premium."|".$mta_date."|".$raf_date."|".$new_annual_premium."|raf";

				}
				//echo "in this";
				return $monthly_premium."|".$mta_date."|".$raf_date."|".$new_annual_premium."|notraf";
					
			}
			//echo "in this also";
			$monthly_premium = 0;
			return $monthly_premium."|".$mta_date."|".$raf_date."|".$new_annual_premium."|notraf";;
		} else {
			$monthly_premium = 0;
			return $monthly_premium."|".$mta_date."|".$raf_date."|".$new_annual_premium."|notraf";;
		}
		exit;
	}

// calculate monthly premium value for renew
	public static function calculateMonthlyPremiumRenew(Request $request) {

		$typeofcover = $request->typeofcover;
		$excessperiod = $request->excessperiod;
		$monthlybenefit = $request->monthlybenefit;
		$renewdate = $request->renew_date;
		//echo $renewdate;
		$dob = $request->dob;
		$dob_actual = date('Y-m-d', strtotime($request->dob));
		// $age = date_diff(date_create($dob_actual), date_create('today'))->y;
		//$renew_benefit_period = $request->renew_benefit_period;

		$information_id = $request->information_id;

		if (($information_id != '') && ($typeofcover != '') && ($excessperiod != '') && ($monthlybenefit != '')) {
			$information = DB::table('information')
				->where('id', $information_id)
				->first();

			if ($information) {
				$product_id = $information->product_id;
				$quote_dtls = CommonComponent::getQuoteInfo($information->quote_id);

				$age = $information->age;

				$renew_date_array = explode("/", $renewdate);
				$renewdate_actual = $renew_date_array[2] . "-" . $renew_date_array[1] . "-" . $renew_date_array[0];

				$renewdate_final = Carbon::parse($renewdate_actual)->format('Y-m-d');

				$dob = explode("/", $information->dob);
				$dob_actual = $dob[2] . "-" . $dob[1] . "-" . $dob[0];

				$dob = Carbon::parse($dob_actual)->format('Y-m-d');

				//	echo $information->policy_number_full;
			

			if($information->policy_number_full=="BIG90/06005A2206MMS" || $information->policy_number_full=="BIG120/06005A3041MMS" || $information->policy_number_full=="BIG120/06005A3014MMS" || $information->policy_number_full=="BIG120/06005A2990MMS" || $information->policy_number_full=="BIG90/06005A3825MMS" || $information->policy_number_full=="BIG90/06005A3704MMS" || $information->policy_number_full=="BIG90/06005A3599MMS" || $information->policy_number_full=="BIG90/06005A3590MMS" || $information->policy_number_full=="BIG120/06005A2432MMS" || $information->policy_number_full=="BIG120/06005A2430MMS" || $information->policy_number_full=="BIG120/06005A2404MMS" || $information->policy_number_full=="BIG90/06005A3536MMS" || $information->policy_number_full=="BIG120/06005A2343MMS" || $information->policy_number_full=="BIG120/06005A2337MMS" || $information->policy_number_full=="BIG120/06005A2442MMS" || $information->policy_number_full=="BIG90/06005A3490MMS" || $information->policy_number_full=="BIG120/06005A2253MMS" || $information->policy_number_full=="BIG120/06005A2243MMS" || $information->policy_number_full=="BIG120/06005A2209MMS" || $information->policy_number_full=="BIG120/06005A2194MMS" || $information->policy_number_full=="BIG90/06005A3397MMS" || $information->policy_number_full=="BIG120/06005A2138MMS" || $information->policy_number_full=="BIG90/06005A3356MMS" || $information->policy_number_full=="BIG120/06005A2108MMS" || $information->policy_number_full=="BIG120/06005A2090MMS" || $information->policy_number_full=="BIG120/06005A2040MMS" || $information->policy_number_full=="BIG90/06005A3202MMS" || $information->policy_number_full=="BIG90/06005A3172MMS" || $information->policy_number_full=="BIG120/06005A1800MMS" || $information->policy_number_full=="BIG120/06005A1779MMS" || $information->policy_number_full=="BIG120/06005A1766MMS" || $information->policy_number_full=="BIG120/06005A1699MMS" || $information->policy_number_full=="BIG120/06005A1689MMS" || $information->policy_number_full=="BIG120/06005A1678MMS" || $information->policy_number_full=="BIG120/06005A1677MMS" || $information->policy_number_full=="BIG90/06005A3057MMS" || $information->policy_number_full=="BIG90/06005A2930MMS" || $information->policy_number_full=="BIG120/06005A1480MMS" || $information->policy_number_full=="BIG90/06005A2886MMS" || $information->policy_number_full=="BIG120/06005A1407MMS" || $information->policy_number_full=="BIG90/06005A2808MMS" || $information->policy_number_full=="BIG90/06005A2763MMS" || $information->policy_number_full=="BIG90/06005A2749MMS" || $information->policy_number_full=="BIG120/06005A1367MMS" || $information->policy_number_full=="BIG90/06005A2718MMS" || $information->policy_number_full=="BIG120/06005A1337MMS" || $information->policy_number_full=="BIG120/06005A1313MMS" || $information->policy_number_full=="BIG90/06005A2601MMS" || $information->policy_number_full=="BIG90/06005A2522MMS" || $information->policy_number_full=="BIG120/06005A1240MMS" || $information->policy_number_full=="BIG90/06005A2362MMS" || $information->policy_number_full=="BIG120/06005A1102MMS" || $information->policy_number_full=="BIG90/06005A2206MMS" || $information->policy_number_full=="BIG90/06005A2134MMS" || $information->policy_number_full=="BIG120/06005A993MMS" || $information->policy_number_full=="BIG90/06005A1988MMS" || $information->policy_number_full=="BIG90/06005A1977MMS" || $information->policy_number_full=="BIG120/06005A943MMS" || $information->policy_number_full=="BIG120/06005A914MMS" || $information->policy_number_full=="BIG120/06005A778MMS" || $information->policy_number_full=="BIG90/06005A1389MMS" || $information->policy_number_full=="BIG90/06005A1348MMS" || $information->policy_number_full=="BIG120/06005A561MMS" || $information->policy_number_full=="BIG120/06005A554MMS" || $information->policy_number_full=="BIG120/06005A495MMS" || $information->policy_number_full=="BIG90/06005A1092MMS" || $information->policy_number_full=="BIG120/06005A431MMS" || $information->policy_number_full=="BIG120/06005A416MMS" || $information->policy_number_full=="BIG120/06005A408MMS" || $information->policy_number_full=="BIG120/06005A405MMS" || $information->policy_number_full=="BIG90/06005A812MMS" || $information->policy_number_full=="BIG90/06005A770MMS" || $information->policy_number_full=="BIG90/06005A697MMS" || $information->policy_number_full=="BIG120/06005A358MMS" || $information->policy_number_full=="BIG120/06005A343MMS" || $information->policy_number_full=="BIG90/06005A634MMS" || $information->policy_number_full=="BIG90/06005A454MMS" || $information->policy_number_full=="BIG90/06005A441MMS" || $information->policy_number_full=="BIG90/06005A416MMS" || $information->policy_number_full=="BIG90/06005A398MMS" || $information->policy_number_full=="BIG120/06005A249MMS" || $information->policy_number_full=="BIG90/06005A241MMS" || $information->policy_number_full=="BIG120/06005A135MMS" || $information->policy_number_full=="BIG90/06005A99MMS" || $information->policy_number_full=="BIG120/06005A26MMS")
			{
				$monthly_premium = 0;
				return $monthly_premium;
			}

			

					if ($information->mms_scheme == "RBS128" || $information->mms_scheme == "RBS129" || $information->mms_scheme == "RBS130" || $information->product_id == "24" || $information->product_id == "25") {
						$age = date_diff(date_create($dob), date_create($information->insurance_startdate))->y;
					} else {
						$age = date_diff(date_create($dob), date_create($renewdate_final))->y;
					}

					$monthly_benifit_amount = $monthlybenefit;
					$cover_type = $typeofcover;
					$excess_period = $excessperiod;

					if ($product_id == Config::get('constant.INSTAPROTECT')) {
						if ($cover_type == 'U' || $cover_type == "ASU") {
							$cover_type = "ASU";
						}

						$excess_period = 1;
					}

					if ($product_id == Config::get('constant.SHEPHERDS_FRIENDLY_LONGTERM') || $product_id == Config::get('constant.SHEPHERDS_FRIENDLY_SHORTERM')) {

						if ($excess_period == 30) {
							$excess_period = 28;
						} else if ($excess_period == 60) {
							$excess_period = 56;
						} else {
							$excess_period = $information->excessperiod;
						}

					}

					$monthly_premium = 0;

					$monthly_premium = CommonComponent::fetchMonthlyCostSimpleCoveaMtaRenew($age, $monthly_benifit_amount, $cover_type, $excess_period, $product_id, 0);
				//	echo "inthis".$monthly_premium;
					return $monthly_premium;
				

			}
			
		} else {
		//	echo "inthis";
			$monthly_premium = 0;
			return $monthly_premium;
		}
	}

	public function ViewBestAccidentCompleteLead(Request $request, $id = null) {
		$status = $request->status;
		// getting lead information
		$information = DB::table('information')
			->join('bestaccident_information', 'information.id', '=', 'bestaccident_information.information_id')
			->join('occupations', 'bestaccident_information.main_occupation', '=', 'occupations.id')
		// ->join('occupations','bestaccident_information.second_occupation','=','occupations.id')
			->join('pricing_plans', 'bestaccident_information.plan_id', '=', 'pricing_plans.id')
			->where('information.id', $id)->first();

		$mailtracker = MailTracker::where('mt_lead_id', $id)->get();

		// getting policy prefix information
		$policy_prefix = DB::table('products')
			->where('id', $information->product_id)
			->select('product_name', 'insurer', 'policy_prefix', 'benifit_period')
			->first();

		if ($information->benefit_period == 0 || $information->benefit_period == '') {
			$information->benefit_period = $policy_prefix->benifit_period;
		}

		$status = $this->getStatus($information);
		//Breadcrumb Titles
		$breadcrumb = [
			'title' => 'Completed Leads',
			'subTitle' => 'Preview of completed lead',
			'home' => 'Leads',
			'homeLink' => '/account/leads?status=completed',
			'subHome' => 'Completed Leads',
			'subHomeLink' => URL::to('account/leads?status=completed'),
			'subChildHome' => 'View',
			'menu' => 'completed-leads',
			'menuColor' => '#fff',
			'MenuClass' => 'active open',
			'SubMenuClass' => 'active',
		];
		return view('admin.leads.completed_view_bestaccident', compact('information', 'breadcrumb', 'policy_prefix', 'status', 'mailtracker'));
	}

	public function getStatus($information) {
		if (!empty($information->cancel_date)) {
			$current_date = Carbon::now();
			$cancelled_date = Carbon::parse($information->cancel_date);
			$cancellation_approve_date = Carbon::parse($information->cancellation_approve_date);
			if ($current_date->lt($cancelled_date)) {
				$status = '<span class="text-red">To be cancelled on:' . $cancelled_date->format('d/m/Y') . '</span><br/>';
				if (!empty($information->cancellation_approve_date)) {
					$status .= '<span class="text-red">Cancellation Approve Date:' . $cancellation_approve_date->format('d/m/Y') . '</span>';
				}

				if (!empty($information->cancel_reason)) {
					$status .= '<br><span class="text-red">Reason:' . $information->cancel_reason . '</span>';
				}
			} else {
				$status =
				'<span class="text-red">Cancelled:' . $cancelled_date->format('d/m/Y') . '</span><br/>';
				if (!empty($information->cancellation_approve_date)) {
					$status .= '<span class="text-red">Cancellation Approve Date:' . $cancellation_approve_date->format('d/m/Y') . '</span>';
				}

				if (!empty($information->cancel_reason)) {
					$status .= '<br><span class="text-red">Reason:' . $information->cancel_reason . '</span>';
				}
			}
		} elseif ($information->status == 1) {
			$status = '<span class="text-green">Approved</span>';
		} elseif ($information->status == -1) {
			$status = '<span class="text-blue">Submitted</span><br><span style="text-align:center"></span>';
		} else {
			$status = '<span class="text-red">Rejected &nbsp; <a href="javascript:void(0)" style="color: #000">
        <span title="' . $information->comments_for_rejection . '"><i class="fa fa-info-circle" aria-hidden="true"></i>
        </span>
        </a></span>';
		}
		return $status;
	}

	/**
	 * Edit completed Lead for best accident Page
	 *
	 * @return \Illuminate\Http\Response
	 */
	public function EditCompletedLeadBestAccident(Request $request, $id = null) {
		$final_update_data = [];
		//Breadcrumb Titles
		$breadcrumb = [
			'title' => 'Completed Leads',
			'subTitle' => 'Edit completed lead',
			'home' => 'Leads',
			'homeLink' => URL::to('account/leads?status=completed'),
			'subHome' => 'Completed Leads',
			'subHomeLink' => URL::to('account/leads?status=completed'),
			'subChildHome' => 'Edit Lead',
			'menu' => 'completed-leads',
			'MenuClass' => 'active open',
			'menuColor' => '#fff',
			'SubMenuClass' => 'active',
		];

		// echo $id;

		$information = DB::table('information')
			->join('bestaccident_information', 'information.id', '=', 'bestaccident_information.information_id')
			->where('information.id', $id)
			->first();

		$policy_prefix = DB::table('products')
			->where('id', $information->product_id)
			->select('policy_prefix', 'pdf_underwritten_txt', 'benifit_period')
			->first();

		if ($information->benefit_period == 0 || $information->benefit_period == '') {
			$information->benefit_period = $policy_prefix->benifit_period;
		}

		$pricing_plans = PricingPlan::pluck('title', 'id');
		if ($request->input()) {
			$input = $request->input();
			$l_information = Information::find($input['id']);
			// Adding log information if not exists
			$this->helper->insertLogInfo($input['id']);

			/*  $application_date_added = date('Y-m-d');
				            $insuranceStartDate = strtr($input['editapppolicystartdate'], '/', '-');
			*/

			if ($input['title'] == '0') {
				\Flash::error('Please enter Title.');
				return view('admin.leads.edit_completed_view_bestaccident', compact('information', 'breadcrumb', 'policy_prefix', 'pricing_plans'));
			}
			if (!empty($input['form_new_line1']) || !empty($input['line1'])) {
				if (!empty($input['form_new_line1'])) {
					// selected address
					$line1 = $input['form_new_line1'];
					$line2 = $input['form_new_line2'];
					$line3 = $input['form_new_line3'];
					$line4 = $input['form_new_line4'];
					$town = $input['form_new_town'];
					$country = $input['form_new_country'];
					$postcode = $input['form_new_postcode'];
				}
				if (!empty($input['line1'])) {
					// manually entered address
					$line1 = $input['line1'];
					$line2 = $input['line2'];
					$line3 = $input['line3'];
					$line4 = $input['line4'];
					$town = $input['town'];
					$country = $input['country'];
					$postcode = $input['postal_code'];
				}

				/*   $final_update_data['title'] =  $input['title'];
					                $final_update_data['fname'] =  $input['fname'];
					                $final_update_data['lname'] =  $input['lname'];
					                $final_update_data['full_name'] =  $input['fname']." ".$input['lname'];
					                $final_update_data['monthlycost'] =  $input['monthlycost'];
					                $final_update_data['premiseName'] =  $input['premiseName'];

					                $final_update_data['address1'] =  $line1;
					                $final_update_data['address2'] =  $line2;
					                $final_update_data['address3'] =  $line3;
					                $final_update_data['address4'] =  $line4;
					                $final_update_data['postcode'] =  $postcode;
					                $final_update_data['postaltown'] =  $town;
					                $final_update_data['county'] =  $county;
					                $final_update_data['policy_number'] =  $input['policy_number'] ;
				*/
				$final_update_data['edit_updated'] = 1;
				$final_update_data['action'] = "EDIT";
				$final_update_data['reason'] = $input['reason'];

				$update_info = DB::table('information')
					->where('id', $input['id'])
					->update([
						/*'insurance_startdate' => $input['editapppolicystartdate'],
							                    'date_added' => $application_date_added,
							                    'title' => $input['title'],
							                    'fname' => $input['fname'],
							                    'lname' => $input['lname'] ,

						*/
						'email' => $input['email'],
						'telephone' => $input['telephone'],
						/*'monthlycost' => $input['monthlycost'] ,
							                    'premiseName' => $input['premiseName'] ,
							                    'address1' => $line1,
							                    'address2' => $line2,
							                    'address3' => $line3,
							                    'address4' => $line4,
							                    'postcode' => $postcode,
							                    'postaltown' => $town,
							                    'county' => $country,
							                    'policy_number' => $input['policy_number'] ,
						*/
						'edit_updated' => 1,
						'action' => "EDIT",
						'reason' => $input['reason'],
					]);
			} else {

				/*  $final_update_data['title'] =  $input['title'];
					                $final_update_data['fname'] =  $input['fname'];
					                $final_update_data['lname'] =  $input['lname'];
					                $final_update_data['full_name'] =  $input['fname']." ".$input['lname'];
					                $final_update_data['monthlycost'] =  $input['monthlycost'];
					                $final_update_data['premiseName'] =  $input['premiseName'];
					                $final_update_data['policy_number'] =  $input['policy_number'] ;
					                $final_update_data['insurance_startdate'] =  $insuranceStartDate;
				*/
				$final_update_data['edit_updated'] = 1;
				$final_update_data['action'] = "EDIT";
				$final_update_data['reason'] = $input['reason'];

				$update_info = DB::table('information')
					->where('id', $input['id'])
					->update([
						/*'date_added' => $application_date_added,
							                    'title' => $input['title'],
							                    'fname' => $input['fname'],
							                    'lname' => $input['lname'] ,
						*/
						'email' => $input['email'],
						'telephone' => $input['telephone'],
						/*'monthlycost' => $input['monthlycost'] ,
							                    'premiseName' => $input['premiseName'] ,
							                    'policy_number' => $input['policy_number'] ,
						*/
						'edit_updated' => 1,
						'action' => "EDIT",
						'reason' => $input['reason'],
					]);
			}

			/* $update_other_information=DB::table('bestaccident_information')
				            ->where('information_id',$input['id'])
				            ->update([
				                'plan_id' => $input['pricing_plan'],
				                'child_cover' => $input['child_cover'],
				                'sports_cover' => $input['sports_cover'],
				                'health_cover' => $input['health_cover'],
				                'kids_cover' => $input['kids_cover'],
			*/

			if (isset($update_info)) {
				// Checking last version before inserting new information log record
				$version = DB::table('log_information')
					->select('version as last_version')
					->where('application_id', $input['id'])
					->orderBy('version', 'desc')
					->first();

				if (empty($version)) {
					$version = 0;
				} else {
					$version = $version->last_version;
				}

				$information = DB::table('information')
					->join('bestaccident_information', 'information.id', '=', 'bestaccident_information.information_id')
					->where('information.id', $id)
					->first();

				// Adding log information
				$logId = DB::table('log_information')
					->insertGetId([
						'application_id' => $id,
						'product_id' => $information->product_id,
						'title' => $information->title,
						'fname' => $information->fname,
						'lname' => $information->lname,
						'full_name' => $information->fname . " " . $information->lname,
						'dob' => $information->dob,
						'emp_status' => $information->emp_status,
						'occupation' => $information->occupation,
						'employer_name' => $information->employer_name,
						'building' => $information->building,
						'premiseName' => $information->premiseName,
						'address1' => $information->address1,
						'address2' => $information->address2,
						'address3' => $information->address3,
						'address4' => $information->address4,
						'postcode' => $information->postcode,
						'formattedPO' => $information->formattedPO,
						'postaltown' => $information->postaltown,
						'county' => $information->county,
						'email' => $information->email,
						'telephone' => $information->telephone,
						'mobile' => $information->mobile,
						'marketingOptOut' => $information->marketingOptOut,
						'under_writing_q1' => $information->under_writing_q1,
						'under_writing_ans' => $information->under_writing_ans,
						'under_writing_accept' => $information->under_writing_accept,
						'insurance_startdate' => $information->insurance_startdate,
						'transfer' => $information->transfer,
						'current_provider' => $information->current_provider,
						'current_policy_date' => $information->current_policy_date,
						'typeofcover' => $information->typeofcover,
						'loan_to_pay' => $information->loan_to_pay,
						'monthlycommitment' => $information->monthlycommitment,
						'monthlygrossincome' => $information->monthlygrossincome,
						'mortgagesalary' => $information->mortgagesalary,
						'mortgage' => $information->mortgage,
						'salary' => $information->salary,
						'age' => $information->age,
						'monthlybenefit' => $information->monthlybenefit,
						'monthlycost' => $information->monthlycost,
						'cover' => $information->cover,
						'cover_term' => $information->cover_term,
						'accept' => $information->accept,
						'accountname' => $information->accountname,
						'accountname2' => $information->accountname2,
						'accountnumber' => $information->accountnumber,
						'sortcode' => $information->sortcode,
						'iban' => $information->iban,
						'bank' => $information->bank,
						'bankbic' => $information->bankbic,
						'branch' => $information->branch,
						'branchbic' => $information->branchbic,
						'branch_address' => $information->branch_address,
						'town' => $information->town,
						'bank_postcode' => $information->bank_postcode,
						'bank_phone' => $information->bank_phone,
						'directdebits' => $information->directdebits,
						'preferreddate' => $information->preferreddate,
						'affid' => $information->affid,
						'ip' => $information->ip,
						'date_added' => $information->date_added,
						'time_added' => $information->time_added,
						'guid' => $information->guid,
						'status' => $information->status,
						'comment' => $information->comment,
						'mail_send' => $information->mail_send,
						'mms_senddate' => $information->mms_senddate,
						'mms_sendmonth' => $information->mms_sendmonth,
						'subscription' => $information->subscription,
						'formtype' => $information->formtype,
						'typeofprotection' => $information->typeofprotection,
						'excessperiod' => $information->excessperiod,
						'insurer' => $information->insurer,
						'smoker' => $information->smoker,
						'life_cover' => $information->life_cover,
						'life_cover_term' => $information->life_cover_term,
						'life_cover_type' => $information->life_cover_type,
						'life_cover_premium_type' => $information->life_cover_premium_type,
						'CIC' => $information->CIC,
						'lead_from' => $information->lead_from,
						'lead_source_field' => $information->lead_source_field,
						'benefit_period' => $information->benefit_period,
						'duration' => $information->duration,
						'duration_year' => $information->duration_year,
						'duration_month' => $information->duration_month,
						'contractor_deirectdebitref' => $information->contractor_deirectdebitref,
						'contractor_id' => $information->contractor_id,
						'policy_number' => $information->policy_number,
						'policy_number_full' => $information->policy_number_full,
						'mta_updated' => "0",
						'renew_updated' => "0",
						'insurance_enddate' => $information->insurance_enddate,
						'version' => $version + 1,
						'edit_updated' => $information->edit_updated,
						'reason' => $input['reason'],
					]);

				// saving file & storing in log

				$logInfo = LogInformation::find($logId);
				//file saving
				$file_name_saved =
				$this->fileuploader->saveEditGeneratePdfBAI($logId);
				$logInfo->schedule_pdf = $file_name_saved;
				$logInfo->action = "EDIT";
				$logInfo->save();
				$pdf_url = public_path() . $file_name_saved;

				$logInfo = $logInfo->toArray();

				foreach ($final_update_data as $key => $value) {
					$l_information->$key = $value;
				}

				$l_information->schedule_pdf = $file_name_saved;
				$l_information->save();

				$activity = Activity::all()->last();
				$activity->description = "edit";
				$activity->save();
				Flash::success('Updated successfully.');
				return redirect()->action("LeadController@index", '?status=completed');
				// end of saving file & storing in log

				$pdf_url = public_path() . '/uploads/pdf/admin/' . 'application' . date('ymdHis') . 'application.pdf';

				// Pdf download button
				$downloadBtn = '<input type="hidden" value="download_btn" id="download_btn" /><input type="hidden" value="' . $pdf_url . '" id="download_file_path" />';

				\Flash::success('Updated successfully.');

			} else {
				\Flash::error('Not updated successfully.');
			}

		}

		if (isset($pdf_url)) {
			return view('admin.leads.edit_completed_view_bestaccident', compact('information', 'breadcrumb', 'policy_prefix', 'pdf_url', 'downloadBtn', 'pricing_plans'));
		} else {
			return view('admin.leads.edit_completed_view_bestaccident', compact('information', 'breadcrumb', 'policy_prefix', 'pricing_plans'));
		}

	}

	public function getLeadLog($lead_id) {
		$subHome = 'Lead Log';
		$subHomeLink = '/account/leads?status=completed';
		//Breadcrumb Titles
		$breadcrumb = [
			'title' => 'Leads',
			'subTitle' => 'Complete Leads List',
			'home' => 'Leads',
			'homeLink' => '#',
			'subHome' => $subHome,
			'subHomeLink' => $subHomeLink,
			// 'subChildHome' => 'Vew leads',
			'menuColor' => '#fff',
			'menu' => 'completed-leads',
			'MenuClass' => 'active open',
			'SubMenuClass' => 'active',
		];
		$activity = Activity::
			where('properties', 'like', '%"id":' . $lead_id . '%')->get();

		return view('admin.leads.leads-log', compact('breadcrumb', 'activity'));
	}

	public function downloadFromAdvisor(Request $request) {
		// print_r($request->all());
		// exit;

		$logInfo = LogInformation::where("application_id", $request->logInfoId)
			->orderBy('id', 'desc')
			->first();

		// print_r($request->all());
		//  exit;
		//  $logInfo = LogInformation::find($request->logInfoId);

		$email_flag = false;

		if (!empty($logInfo)) {
			$request['logInfoId'] = $logInfo->id;
			//new call genrate schedule
			if ($logInfo->action == "EDIT") {
				return $this->downloadGenerateScedulePdf($request, $email_flag);
			} elseif ($logInfo->action == "MTA") {
				return $this->downloadMTAPdfLater($request, $email_flag);
			} elseif ($logInfo->action == "RENEW") {
				return $this->downloadRenewPdfLater($request, $email_flag);
			} elseif ($logInfo->action == "CANCEL") {
				return $this->downloadCancelPdfLater($request, $email_flag);
			} else {
				return $this->downloadGenerateScedulePdf($request, $email_flag);
			}
		} else {

			$this->helper->insertLogInfo($request->logInfoId);

			$logInfo = LogInformation::where("application_id", $request->logInfoId)
				->orderBy('id', 'desc')
				->first();
			// print_r($logInfo);
			//exit;
			$request['logInfoId'] = $logInfo['id'];
			$email_flag = false;

			return $this->downloadGenerateScedulePdf($request, $email_flag);

		}

	}

	public function mmsCoverletters()
    { 
    

        $mms_coverletter_details = DB::table('mms_coverletter_details')
                        ->orderBy('created_at', 'desc')
                       // ->orderBy('date_added', 'desc')
                        ->get();

   //     print_r($mms_coverletter_details);
      //  exit;

        //Breadcrumb Titles 
        $breadcrumb = [
            'title' => 'MMS Cover Letter Details',
            'subTitle' => 'Preview of emails',
            'home' => 'MMS Cover Letter Details',
            'homeLink' => '/account/mms_coverletters',
            'subHome' => 'MMS Cover Letter Details',
            'subHomeLink' => '#',
            // 'subChildHome' => '',
            'menu' => 'MMS Cover Letter Details',
            'MenuClass' => 'active open',
            'SubMenuClass' => 'active'
		];
		

        return view('admin.leads.mms_coverletter_details',compact('mms_coverletter_details','breadcrumb'));
	}
	

	public function downloadCoverletter(Request $request) {
		
		$coverInfo = MmsCoverletterDetails::find($request->id);

		return $this->helper->download($coverInfo->coverletter_pdf);

		
	
	}

	public function mmsTransferCoverletters()
    { 
    

        $mms_coverletter_details = DB::table('mms_coverletter_details')
       				    ->where('letter_type','Transfer')
       				    ->join('information', 'information.id', '=', 'mms_coverletter_details.info_id')
                        ->orderBy('mms_coverletter_details.id', 'desc')
                       // ->orderBy('date_added', 'desc')
                        ->get();

       // print_r($mms_coverletter_details);
       // exit;

        //Breadcrumb Titles 
        $breadcrumb = [
            'title' => 'MMS Transfer Cover Letter Details',
            'subTitle' => 'Preview of emails',
            'home' => 'MMS Transfer Cover Letter Details',
            'homeLink' => '/account/mms_transfer_coverletters',
            'subHome' => 'MMS Transfer Cover Letter Details',
            'subHomeLink' => '#',
            // 'subChildHome' => '',
            'menu' => 'MMS Transfer Cover Letter Details',
            'MenuClass' => 'active open',
            'SubMenuClass' => 'active'
		];
		

        return view('admin.leads.mms_transfer_coverletter_details',compact('mms_coverletter_details','breadcrumb'));
	}

	public function testMissedEmails()
{

	try {
		//exit;
	$date = date('d');
	$month = date('m');
	$anniversary=$month."-".$date;
	$review_date=date('Y-m-d');
		
	//	$date="01";
		echo $date;
		$mms_simple_policies = Information::where('status', 1)
		->whereIn('policy_number_full',['MMS/SPBST/05A11458'])
		//	->where('renewal_date', '2020-12-16')
		//	->where('action','RENEW')
		//	->whereIn('product_id',['24','25'])
			->where('cancel_date', NULL)
			//->where('mta_date',NULL)
			//->limit(10)
			->get();

			//dd($mms_simple_policies);	
		foreach($mms_simple_policies as $key => $value)


		{
			$info_id=$value->id;
		//	$mail_tracker=MailTracker::where('mt_lead_id',$info_id)->where('created_at','LIKE','2020-11-06%')->first();


		//	if(empty($mail_tracker))
		//	{
		
		//	dispatch(new AutoReviewMailJob($value->id));

			
			$logInfo = DB::table('log_information')
			->where('log_information.application_id', $info_id)
			->where('action','RENEW')
			->join('products', 'log_information.product_id', '=', 'products.id')
			->orderby('log_information.id','DESC')
			->first();

		//	print_r($logInfo);

		if (!empty($logInfo->renew_pdf)) {
			$isExists = Storage::disk('s3')->has($logInfo->renew_pdf);
			if ($isExists) {
				$email_data['gererated_renew_file'] = env('S3_BUCKET_URL') . $logInfo->renew_pdf;
			} else {
				$email_data['gererated_renew_file'] = null;
			}
		} else {

			$file_name_saved = FileController::saveReviewPdf($logInfo->id);

			$email_data['gererated_renew_file'] = env('S3_BUCKET_URL') . $file_name_saved;
		}

		//policy wording file
		if (!empty($logInfo->policy_wordings_doc)) {
			$policy_wordings_doc = 'static_policy_documents/' . $logInfo->policy_wordings_doc;
			$isExists = Storage::disk('s3')->get($policy_wordings_doc);
			if ($isExists) {
				$email_data['policy_document_file'] = env('S3_BUCKET_URL') . $policy_wordings_doc;
			} else {
				$email_data['policy_document_file'] = null;
			}
		} else {
			$email_data['policy_document_file'] = null;
		}

	   
		$faq_file_name = "Frequently_Asked_Questions_.pdf";
	   

		$faq_file = 'static_policy_documents/' . $faq_file_name;

		$isExists = Storage::disk('s3')->has($faq_file);
		if ($isExists) {
			$email_data['faq_file'] = env('S3_BUCKET_URL') . $faq_file;
		} else {
			$email_data['faq_file'] = null;
		}

		//Relevant  IPID file()
		if (!empty($logInfo->keyfacts_doc)) {
			$keyfacts_doc = 'static_policy_documents/' . $logInfo->keyfacts_doc;
			$isExists = Storage::disk('s3')->has($keyfacts_doc);
			if ($isExists) {
				$email_data['ipid_file'] = env('S3_BUCKET_URL') . $keyfacts_doc;
			} else {
				$email_data['ipid_file'] = null;
			}
		} else {
			$email_data['ipid_file'] = null;
		}

		

		// Best_Insurance_Terms_Of_Buisiness
		$best_insurance_terms_of_buisiness_file = 'static_policy_documents/Best_Insurance_Terms_Of_Buisiness.pdf';
		$isExists = Storage::disk('s3')->get($best_insurance_terms_of_buisiness_file);
		if ($isExists) {
			$email_data['best_insurance_terms_of_buisiness_file'] = env('S3_BUCKET_URL') . $best_insurance_terms_of_buisiness_file;
		} else {
			$email_data['best_insurance_terms_of_buisiness_file'] = null;
		}

		

	  //  $email_data['cc'] = $request->cc_emails;
		$email_data['bcc'] = 'archive@bestinsurance.co.uk';
		$email_data['subject'] = "Important Information from Best Insurance: Your Protection Policy Annual Review";
		$email_data['from'] = "advisor@bestinsurance.co.uk";
		$email_data['email'] = $logInfo->email;
	   // $email_data['email']="ranjith.nagabandi@quadone.com";
		$email_data['first_name'] = $logInfo->fname;
		$email_data['first_name'] = $logInfo->fname;
		$email_data['last_name'] = $logInfo->lname;
		$email_data['title'] = $logInfo->title;

		
			

		$edd=array();

		$edd['mt_lead_id'] = $logInfo->application_id;
		$edd['mt_cc_mails'] = '';
		$edd['mt_bcc_mails'] = $email_data['bcc'];
		$edd['mt_from_mail'] = $email_data['from'];
		$edd['to_email'] = $email_data['email'];
		$edd['mt_sent_status'] = false;
		print_r($email_data);
		//exit;


		$view = View::make('admin.mail.mail-review-mms', ['first_name' => $email_data['first_name'], 'last_name' => $email_data['last_name'], 'title' => $email_data['title']]);
		// $view = View::make('admin.mail.mail-renew', ['first_name' => $email_data['first_name']]);
		$mt_contents = $view->render();
		$edd['mt_contents'] = $mt_contents;
		$edd['mt_type'] = 4; //renew

		$raf_documents = RAFLoanDocuments::where('log_info_id', $logInfo->id)
			->where('action_type', 'renew')
			->whereNotIn('Alias', ['Reinstatement Letter', 'Credit Agreement Reminder Letter', 'Action Needed Letter'])
			->whereNotNull('s3_url')
			->get()->groupBy('Alias');

			
		// send mail
		try {
			$mailSuccess = Mail::send(['html' => 'admin.mail.mail-review-mms'], $email_data, function ($message) use ($email_data, $raf_documents, $logInfo) {
				$message->from($email_data['from']);
				$message->to($email_data['email'])
					->subject($email_data['subject']);

				if (!empty($email_data['cc'])) {
					$message->cc($email_data['cc']);
				}

				if (!empty($email_data['bcc'])) {
					$message->bcc($email_data['bcc']);
				}
				$message->bcc('archive@bestinsurance.co.uk');
				if (!empty($logInfo->bundle_policy_documents) && !empty($logInfo->bundle_direct_debit_documents) && !empty($logInfo->bundle_terms_and_conditions_documents)) {

					$policy_document_file = env('S3_BUCKET_URL') . $logInfo->bundle_policy_documents;
					$direct_debit_documents = env('S3_BUCKET_URL') . $logInfo->bundle_direct_debit_documents;
					$bundle_terms_and_conditions_documents = env('S3_BUCKET_URL') . $logInfo->bundle_terms_and_conditions_documents;

					//$message->attach(str_replace(" ", "+", trim($policy_document_file)),array('as' => 'AnnualReview.pdf'));

					if (!empty($email_data['gererated_renew_file'])) {
						$message->attach(str_replace(" ", "+", trim($email_data['gererated_renew_file'])),array('as' => 'AnnualReview.pdf'));
					}


					$message->attach(str_replace(" ", "+", trim($direct_debit_documents)));

					if (!empty($email_data['ipid_file'])) {
						$message->attach(str_replace(" ", "+", trim($email_data['ipid_file'])));
					}

					if (!empty($email_data['faq_file'])) {
						$message->attach(str_replace(" ", "+", trim($email_data['faq_file'])));
					}


				//	$message->attach(str_replace(" ", "+", trim($bundle_terms_and_conditions_documents)));

				} else {

					if (!empty($email_data['gererated_renew_file'])) {
						$message->attach(str_replace(" ", "+", trim($email_data['gererated_renew_file'])),array('as' => 'AnnualReview.pdf'));
					}

				  /*  if (!empty($email_data['policy_document_file'])) {
						$message->attach(str_replace(" ", "+", trim($email_data['policy_document_file'])));
					}*/

					if (!empty($email_data['ipid_file'])) {
						$message->attach(str_replace(" ", "+", trim($email_data['ipid_file'])));
					}

				   /* if (!empty($email_data['best_insurance_terms_of_buisiness_file'])) {
						$message->attach(str_replace(" ", "+", trim($email_data['best_insurance_terms_of_buisiness_file'])));
					}*/

				 /*   if (!empty($email_data['faq_file'])) {
						$message->attach(str_replace(" ", "+", trim($email_data['faq_file'])));
					}*/

					foreach ($raf_documents as $key => $raf_document) {
						$message->attach(env('S3_BUCKET_URL') . $raf_document->orderBy('primary_id', 'desc')->first()->s3_url);
					}
				}
			});

			$edd['mt_sent_status'] = true;
			// Insert into mail tracker
		//	HelperController::insertMailTrackerReview($edd);

			$mailtracker = new MailTracker;
			$mailtracker->mt_lead_id = $edd['mt_lead_id'];
		//	$mailtracker->mt_cc_mails = $edd['mt_cc_mails'];
			$mailtracker->mt_bcc_mails = $edd['mt_bcc_mails'];
			$mailtracker->mt_from_mail = $edd['mt_from_mail'];
			$mailtracker->mt_sent_status = $edd['mt_sent_status'];
			$mailtracker->mt_contents = $edd['mt_contents'];
			$mailtracker->mt_type = $edd['mt_type'];
			$mailtracker->to_email = $edd['to_email'];
			$mailtracker->mt_created_u_id = 1;
			$mailtracker->save();
			//exit;
		//	return true;
		} catch (Exception $e) {

			dd($e);
		//	HelperController::insertMailTrackerReview($edd);
			//return false;
		}
		
		}
	//	}

	} catch (\Exception $e) {
		Log::info("Eception from raf scheduler job");
	}

}

}