<?php

class ApiController extends BaseController {

	/**
	 * Display a listing of the resource.
	 *
	 * @return Response
	 */
	public function api() {
		$input		 = Input::all();
		$callback	 = $input['callback'];
		$referrer	 = false;

		if (!is_numeric($input['site_id'])) {
			return \App::abort(404);
		}

		if (isset($input['referrer'])) {
			$referrer = urldecode($input['referrer']);

			$searchEngines = array(
					'yandex.'				 => 'text',
					'google.'				 => 'q',
					'mail.ru'				 => 'q',
					'rambler.'			 => 'query',
					'bing.'					 => 'q',
					'webalta.'			 => 'q',
					'nigma.'				 => 's',
					'search.qip.'		 => 'query',
					'yahoo.'				 => 'p',
					'live.'					 => 'q',
					'msn.'					 => 'q',
					'aol.'					 => 'query',
					'aol.'					 => 'encquery',
					'lycos.'				 => 'query',
					'ask.'					 => 'q',
					'altavista.'		 => 'q',
					'netscape.'			 => 'query',
					'cnn.'					 => 'query',
					'looksmart.'		 => 'qt',
					'about.'				 => 'terms',
					'mamma.'				 => 'query',
					'alltheweb.'		 => 'q',
					'gigablast.'		 => 'q',
					'voila.'				 => 'rdata',
					'virgilio.'			 => 'qs',
					'baidu.'				 => 'wd',
					'alice.'				 => 'qs',
					'najdi.'				 => 'q',
					'aol.'					 => 'q',
					'club-internet.' => 'q',
					'mama.'					 => 'query',
					'seznam.'				 => 'q',
					'search.'				 => 'q',
					'szukaj.'				 => 'szukaj',
					'szukaj.'				 => 'qt',
					'netsprint.'		 => 'q',
					'szukacz.'			 => 'q',
					'yam.'					 => 'k',
					'pchome.'				 => 'q',
					'rambler.ru'		 => 'words',
					'meta.ua'				 => 'q',
					'bigmir.net'		 => 'q',
					'aport.ru'			 => 'r',
					'a-counter'			 => 'sub_data',
					'i.ua'					 => 'q'
			);
			$referrerHost	 = parse_url($referrer, PHP_URL_HOST);
			$referrerQuery = parse_url($referrer, PHP_URL_QUERY);

			$queryItems = array();
			parse_str($referrerQuery, $queryItems);

			$searchWord = '';
			foreach ($searchEngines as $needle => $param) {
				if (strpos($referrerHost, $needle) !== false && !empty($queryItems[$param])) {
					$searchWord = urldecode($queryItems[$param]);
					break;
				}
			}
		}
		else {
			$referrer			 = '';
			$referrerHost	 = '';
			$searchWord		 = '';
		}

		if (!isset($input['entrypoint'])) {
			$input['entrypoint'] = '';
		}
		if (!isset($input['name'])) {
			$input['name'] = '';
		}
		if (!isset($input['phone'])) {
			$input['phone'] = '';
		}
		if (!isset($input['email'])) {
			$input['email'] = '';
		}
		if (!isset($input['data'])) {
			$input['data'] = '';
		}

		$site = Site::find($input['site_id']);
		if ($site) {
			Lead::create(array(
					"site_id"				 => $input['site_id'],
					"project_id"		 => $site->project_id,
					"entrypoint"		 => $input['entrypoint'],
					"name"					 => $input['name'],
					"phone"					 => $this->preparePhone($input['phone']),
					"email"					 => $input['email'],
					"referrer"			 => $referrer,
					"referrer_host"	 => $referrerHost,
					"search_word"		 => $searchWord,
					"data"					 => json_encode($input['data']),
			));
		}

		return $callback . '(' . json_encode($input) . ');';
	}

	public function papi() {
		$input		 = Input::all();
		$referrer	 = false;

		if (!is_numeric($input['site_id'])) {
			return \App::abort(404);
		}

		if (isset($input['referrer'])) {
			$referrer = urldecode($input['referrer']);

			$searchEngines = array(
					'yandex.'				 => 'text',
					'google.'				 => 'q',
					'mail.ru'				 => 'q',
					'rambler.'			 => 'query',
					'bing.'					 => 'q',
					'webalta.'			 => 'q',
					'nigma.'				 => 's',
					'search.qip.'		 => 'query',
					'yahoo.'				 => 'p',
					'live.'					 => 'q',
					'msn.'					 => 'q',
					'aol.'					 => 'query',
					'aol.'					 => 'encquery',
					'lycos.'				 => 'query',
					'ask.'					 => 'q',
					'altavista.'		 => 'q',
					'netscape.'			 => 'query',
					'cnn.'					 => 'query',
					'looksmart.'		 => 'qt',
					'about.'				 => 'terms',
					'mamma.'				 => 'query',
					'alltheweb.'		 => 'q',
					'gigablast.'		 => 'q',
					'voila.'				 => 'rdata',
					'virgilio.'			 => 'qs',
					'baidu.'				 => 'wd',
					'alice.'				 => 'qs',
					'najdi.'				 => 'q',
					'aol.'					 => 'q',
					'club-internet.' => 'q',
					'mama.'					 => 'query',
					'seznam.'				 => 'q',
					'search.'				 => 'q',
					'szukaj.'				 => 'szukaj',
					'szukaj.'				 => 'qt',
					'netsprint.'		 => 'q',
					'szukacz.'			 => 'q',
					'yam.'					 => 'k',
					'pchome.'				 => 'q',
					'rambler.ru'		 => 'words',
					'meta.ua'				 => 'q',
					'bigmir.net'		 => 'q',
					'aport.ru'			 => 'r',
					'a-counter'			 => 'sub_data',
					'i.ua'					 => 'q'
			);
			$referrerHost	 = parse_url($referrer, PHP_URL_HOST);
			$referrerQuery = parse_url($referrer, PHP_URL_QUERY);

			$queryItems = array();
			parse_str($referrerQuery, $queryItems);

			$searchWord = '';
			foreach ($searchEngines as $needle => $param) {
				if (strpos($referrerHost, $needle) !== false && !empty($queryItems[$param])) {
					$searchWord = urldecode($queryItems[$param]);
					break;
				}
			}
		}
		else {
			$referrer			 = '';
			$referrerHost	 = '';
			$searchWord		 = '';
		}

		if (!isset($input['entrypoint'])) {
			$input['entrypoint'] = '';
		}
		if (!isset($input['name'])) {
			$input['name'] = '';
		}
		if (!isset($input['phone'])) {
			$input['phone'] = '';
		}
		if (!isset($input['email'])) {
			$input['email'] = '';
		}
		if (!isset($input['data'])) {
			$input['data'] = '';
		}
		if (!isset($input['leadid'])) {
			$input['leadid'] = '';
		}
		if (!isset($input['realroi_id'])) {
			$input['realroi_id'] = '';
		}

		$site = Site::find($input['site_id']);
		if ($site) {
			Lead::create(array(
					"site_id"					 => $input['site_id'],
					"project_id"			 => $site->project_id,
					"entrypoint"			 => $input['entrypoint'],
					"name"						 => $input['name'],
					"phone"						 => $this->preparePhone($input['phone']),
					"email"						 => $input['email'],
					"referrer"				 => $referrer,
					"referrer_host"		 => $referrerHost,
					"search_word"			 => $searchWord,
					"data"						 => json_encode($input['data']),
					"leadstat_lead_id" => $input['leadid'],
					"realroi_id"			 => $input['realroi_id'],
			));
			return json_encode(array('success' => 1, 'inputData' => $input));
		}
		else {
			return json_encode(array('success' => 0, 'inputData' => $input));
		}
	}

}
