Your IP : 216.73.216.84


Current Path : /home/h/e/l/helpink/www/components/com_jbusinessdirectory/controllers/
Upload File :
Current File : /home/h/e/l/helpink/www/components/com_jbusinessdirectory/controllers/companies.php

<?php

/**
 * @package    J-BusinessDirectory
 *
 * @author     CMSJunkie http://www.cmsjunkie.com/
 * @copyright  Copyright (C) 2007 - 2022 CMSJunkie. All rights reserved.
 * @license    https://www.gnu.org/licenses/agpl-3.0.en.html
 */
defined('_JEXEC') or die('Restricted access');



class JBusinessDirectoryControllerCompanies extends JControllerLegacy
{
	/**
	 * constructor (registers additional tasks to methods)
	 * @return void
	 */

	public function __construct()
	{
		parent::__construct();
	}

	public function displayCompany()
	{
		parent::display();
	}

	public function showCompany()
	{
		$model = $this->getModel('companies');
		$model->increaseViewCount();
		JFactory::getApplication()->input->set("view", "companies");
		parent::display();
	}

	public function saveReview()
	{
		$app = JFactory::getApplication();
		$model = $this->getModel('companies');
		$user = JBusinessUtil::getUser();
		$data = JFactory::getApplication()->input->post->getArray();
		$companyId = JFactory::getApplication()->input->get('itemId');
		$company = $model->getPlainCompany($companyId);
		$userReviews = $model->checkUserReviews($user->id, $companyId);
		$ipAddress = $_SERVER['REMOTE_ADDR'];
		$data["ipAddress"] = $ipAddress;

		$appSettings = JBusinessUtil::getApplicationSettings();
		if ($appSettings->captcha) {
			$namespace = "jbusinessdirectory.contact";
			try {
				$captchaAnswer = !empty($post['recaptcha_response_field']) ? $post['recaptcha_response_field'] : $post['g-recaptcha-response'];
				$app = JFactory::getApplication();
				$captchaPlugin = $app->get('captcha');
				$captcha = JCaptcha::getInstance($captchaPlugin, array('namespace' => $namespace));
				if (!$captcha->checkAnswer(null)) {
					//$error = $captcha->getError();
					$app->setUserState('com_jbusinessdirectory.add.review.data', $post);
					$this->setMessage("Captcha error!", 'warning');
					$this->setRedirect(JBusinessUtil::getCompanyLink($company));
					return;
				}
			} catch (Exception $e) {
				//$error = $captcha->getError();
				$this->setMessage("Captcha error!", 'warning');
				$this->setRedirect(JBusinessUtil::getCompanyLink($company));
				return;
			}
		}

		$pictures = array();
		foreach ($data as $key => $value) {
			if (
				strpos($key, 'picture_info') !== false
				||
				strpos($key, 'picture_path') !== false
				||
				strpos($key, 'picture_enable') !== false
			) {
				foreach ($value as $k => $v) {
					if (!isset($pictures[$k])) {
						$pictures[$k] = array('picture_info' => '', 'picture_path' => '', 'picture_enable' => 1);
					}
					$pictures[$k][$key] = $v;
				}
			}
		}
		$data['pictures'] = $pictures;

		if ($data['itemUserId'] == $user->id && !empty($user->id)) {
			$this->setMessage(JText::_('LNG_NO_REVIEW_FROM_ITEM_OWNER'), 'warning');
			$this->setRedirect(JBusinessUtil::getCompanyLink($company));
			return;
		}

		if ($userReviews && $user->id != 0) {
			$this->setMessage(JText::_('LNG_NO_MORE_THAN_ONE_REVIEW'), 'warning');
			$this->setRedirect(JBusinessUtil::getCompanyLink($company));
			return;
		}

		if ($appSettings->enable_reviews_users && $user->id == 0) {
			$this->setMessage(JText::_('LNG_ERROR_SAVING_REVIEW'), 'error');
			$this->setRedirect(JBusinessUtil::getCompanyLink($company));
			return;
		}

		if ($model->saveReview($data, $company)) {
			$this->setMessage(JText::_('LNG_REVIEW_SAVED'));
			$this->setRedirect(JBusinessUtil::getCompanyLink($company));
		} else {
			$this->setMessage(JText::_('LNG_ERROR_SAVING_REVIEW'), 'error');
			$this->setRedirect(JBusinessUtil::getCompanyLink($company));
		}
	}

	public function updateRating()
	{
		$appSettings = JBusinessUtil::getApplicationSettings();
		$user = JBusinessUtil::getUser();
		if ($appSettings->enable_reviews_users && $user->id == 0) {
			exit;
		}

		$model = $this->getModel('companies');
		$data = JFactory::getApplication()->input->post->getArray();
		$ipAddress = $_SERVER['REMOTE_ADDR'];
		$data["ipAddress"] = $ipAddress;
		$ratingId = $model->saveRating($data);
		$nrRatings = $model->getRatingsCount($data['companyId']);
		$company = $model->getCompany($data['companyId']);

		echo '<?xml version="1.0" encoding="utf-8" ?>';
		echo '<company_statement>';
		echo '<answer  nrRatings="' . ($nrRatings) . '" id="' . $data["companyId"] . '" ratingId="' . $ratingId . '" averageRating="' . $company->averageRating . '"/>';
		echo '</company_statement>';
		echo '</xml>';
		exit;
	}

	public function reportAbuse()
	{

		JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN'));

		$app = JFactory::getApplication();
		$appSettings = JBusinessUtil::getApplicationSettings();
		$model = $this->getModel('companies');
		$data = JFactory::getApplication()->input->post->getArray();

		$companyId = JFactory::getApplication()->input->get('companyId');
		$company = $model->getPlainCompany($companyId);

		if ($appSettings->captcha) {
			$captchaAnswer = (!isset($data['recaptcha_response_field']) && !empty($data['recaptcha_response_field'])) ? $data['recaptcha_response_field'] : $data['g-recaptcha-response'];
			$namespace = "jbusinessdirectory.contact";
			try {
				$app = JFactory::getApplication();
				$captchaPlugin = $app->get('captcha');
				$captcha = JCaptcha::getInstance($captchaPlugin, array('namespace' => $namespace));
				if (!$captcha->checkAnswer(null)) {
					//$error = $captcha->getError();
					$this->setMessage("Captcha error!", 'warning');
					$message = "Captcha error";
					$this->setRedirect(JBusinessUtil::getCompanyLink($company));
					return;
				}
			} catch (Exception $e) {
				//$error = $captcha->getError();
				$this->setMessage("Captcha error!", 'warning');
				$this->setRedirect(JBusinessUtil::getCompanyLink($company));
				return;
			}
		}

		$model = $this->getModel('companies');

		$result = $model->reportAbuse($data);

		if ($result) {
			$this->setMessage(JText::_('COM_JBUSINESS_DIRECTORY_REVIEW_ABUSE_SUCCESS'));
			$this->setRedirect(JBusinessUtil::getCompanyLink($company));
		} else {
			$this->setMessage(JText::_('COM_JBUSINESS_DIRECTORY_REVIEW_ABUSE_FAILED'), 'warning');
			$this->setRedirect(JBusinessUtil::getCompanyLink($company));
		}
	}

	public function saveReviewResponse()
	{

		JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN'));

		$app = JFactory::getApplication();
		$appSettings = JBusinessUtil::getApplicationSettings();
		$model = $this->getModel('companies');
		$data = JFactory::getApplication()->input->post->getArray();
		$companyId = JFactory::getApplication()->input->get('companyId');
		$company = $model->getPlainCompany($companyId);
		$ipAddress = $_SERVER['REMOTE_ADDR'];
		$data["ipAddress"] = $ipAddress;
		//exit;

		if ($appSettings->captcha) {
			$captchaAnswer = (!isset($data['recaptcha_response_field']) && !empty($data['recaptcha_response_field'])) ? $data['recaptcha_response_field'] : $data['g-recaptcha-response'];
			try {
				$namespace = "jbusinessdirectory.contact";
				$app = JFactory::getApplication();
				$captchaPlugin = $app->get('captcha');
				$captcha = JCaptcha::getInstance($captchaPlugin, array('namespace' => $namespace));
				if (!$captcha->checkAnswer(null)) {
					//$error = $captcha->getError();
					$app->setUserState('com_jbusinessdirectory.review.response.data', $post);
					$this->setMessage("Captcha error!", 'warning');
					$this->setRedirect(JBusinessUtil::getCompanyLink($company));
					return;
				}
			} catch (Exception $e) {
				//$error = $captcha->getError();
				$this->setMessage("Captcha error!", 'warning');
				$this->setRedirect(JBusinessUtil::getCompanyLink($company));
				return;
			}
		}

		if ($model->saveReviewResponse($data)) {
			$this->setMessage(JText::_('LNG_REVIEW_RESPONSE_SAVED'));
		} else {
			$this->setMessage(JText::_('LNG_ERROR_SAVING_REVIEW'), 'warning');
		}

		$redirect = JFactory::getApplication()->input->get('redirect');
		if (!empty($redirect)) {
			$redirect = base64_decode($redirect);
			$this->setRedirect($redirect);
		} else {
			$this->setRedirect(JBusinessUtil::getCompanyLink($company));
		}
	}

	public function increaseReviewLikeCountAjax()
	{
		$model = $this->getModel('companies');
		$data = JFactory::getApplication()->input->post->getArray();;
		$result = $model->increaseReviewLikeCount($data["reviewId"]);

		echo '<?xml version="1.0" encoding="utf-8" ?>';
		echo '<company_statement>';
		echo '<answer result="' . $result . '" reviewId="' . $data["reviewId"] . '"/>';
		echo '</company_statement>';
		echo '</xml>';
		exit;
	}

	public function increaseReviewDislikeCountAjax()
	{
		$model = $this->getModel('companies');
		$data = JFactory::getApplication()->input->post->getArray();;
		$result = $model->increaseReviewDislikeCount($data["reviewId"]);

		echo '<?xml version="1.0" encoding="utf-8" ?>';
		echo '<company_statement>';
		echo '<answer result="' . $result . '" reviewId="' . $data["reviewId"] . '"/>';
		echo '</company_statement>';
		echo '</xml>';
		exit;
	}

	public function increaseReviewLoveCountAjax()
	{
		$model = $this->getModel('companies');
		$data = JFactory::getApplication()->input->post->getArray();;
		$result = $model->increaseReviewLoveCount($data["reviewId"]);

		echo '<?xml version="1.0" encoding="utf-8" ?>';
		echo '<company_statement>';
		echo '<answer result="' . $result . '" reviewId="' . $data["reviewId"] . '"/>';
		echo '</company_statement>';
		echo '</xml>';
		exit;
	}

	public function updateCompanyOwner()
	{
		$model = $this->getModel('companies');
		$data = JFactory::getApplication()->input->post->getArray();;
		$result = $model->updateCompanyOwner($data["companyId"], $data["userId"]);


		echo '<?xml version="1.0" encoding="utf-8"?>';
		echo '<company_statement>';
		echo '<answer result="' . $result . '"/>';
		echo '</company_statement>';
		echo '</xml>';
		exit;
	}

	public function checkCompanyName()
	{
		$data = JFactory::getApplication()->input->post->getArray();
		$model = $this->getModel('companies');
		$company = $model->getCompanyByName(trim($data["companyName"]));


		$claim = isset($company->userId) ? 0 : 1;

		$exists = isset($company) ? 1 : 0;

		echo '<?xml version="1.0" encoding="utf-8" ?>';
		echo '<company_statement>';
		echo '<answer exists="' . $exists . '" claim="' . $claim . '" name="' . trim($data["companyName"]) . '"/>';
		echo '</company_statement>';
		echo '</xml>';
		exit;
	}

	public function contactCompany()
	{
		// Check for request forgeries.
		JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN'));

		$jinput = JFactory::getApplication()->input;

		$appSettings = JBusinessUtil::getApplicationSettings();
		$model = $this->getModel('companies');

		$data = $jinput->post->getArray();
		$companyId = $jinput->get('companyId');
		$contactId = $jinput->getInt('contact_id');
		$company = $model->getPlainCompany($companyId);

		if ($appSettings->captcha) {
			$captchaAnswer = !empty($data['recaptcha_response_field']) ? $data['recaptcha_response_field'] : $data['g-recaptcha-response'];
			$namespace = "jbusinessdirectory.contact";
			try {
				$app = JFactory::getApplication();
				$captchaPlugin = $app->get('captcha');
				$captcha = JCaptcha::getInstance($captchaPlugin, array('namespace' => $namespace));
				if (!$captcha->checkAnswer(null)) {
					//$error = $captcha->getError();
					$this->setMessage("Captcha error!", 'warning');
					$this->setRedirect(JBusinessUtil::getCompanyLink($company));
					return;
				}
			} catch (Exception $e) {
				//$error = $captcha->getError();
				$this->setMessage("Captcha error!", 'warning');
				$this->setRedirect(JBusinessUtil::getCompanyLink($company));
				return;
			}
		}

		$data['description'] = $jinput->get('description', '', 'RAW');
		$data['contact_id'] = $contactId;

		$result = $model->contactCompany($data);

		if ($result) {
			$this->setMessage(JText::_('LNG_CONTACT_REQUEST_SENT_SUCCESSFULLY'));
		} else {
			$this->setMessage(JText::_('LNG_CONTACT_REQUEST_ERROR'));
		}

		$model->saveCompanyMessages();
		if (!empty($appSettings->redirect_contact_url)) {
			$this->setRedirect(htmlspecialchars($appSettings->redirect_contact_url, ENT_QUOTES));
		} else {
			$this->setRedirect(JBusinessUtil::getCompanyLink($company));
		}
	}


	public function contactCompanyAjax()
	{
		// Check for request forgeries.
		$appSettings = JBusinessUtil::getApplicationSettings();
		$data = JFactory::getApplication()->input->post->getArray();
		$captchaAnswer = !empty($data['recaptcha_response_field']) ? $data['recaptcha_response_field'] : $data['g-recaptcha-response'];

		$errorFlag = false;
		$message = "";
		if ($appSettings->captcha) {
			try {
				$namespace = "jbusinessdirectory.contact";
				$app = JFactory::getApplication();
				$captchaPlugin = $app->get('captcha');
				$captcha = JCaptcha::getInstance($captchaPlugin, array('namespace' => $namespace));
				if (!$captcha->checkAnswer(null)) {
					//$error = $captcha->getError();
					$this->setMessage("Captcha error!", 'warning');
					$message = "Captcha error";
					$errorFlag = true;
				}
			} catch (Exception $e) {
				//$error = $captcha->getError();
				$this->setMessage("Captcha error!", 'warning');
				$message = "Captcha error";
				$errorFlag = true;
			}
		}

		$model = $this->getModel('companies');

		if (!$errorFlag) {
			$result = $model->contactCompany($data);

			if ($result) {
				$this->setMessage(JText::_('COM_JBUSINESS_DIRECTORY_COMPANY_CONTACTED'));
			} else {
				$this->setMessage(JText::_('COM_JBUSINESS_DIRECTORY_COMPANY_NOT_CONTACTED'));
				$message = JText::_('COM_JBUSINESS_DIRECTORY_COMPANY_NOT_CONTACTED');
				$errorFlag = true;
			}
		}

		$model->saveCompanyMessages();

		echo '<?xml version="1.0" encoding="utf-8" ?>';
		echo '<category_statement>';
		echo '<answer error="' . (!$errorFlag ? "0" : "1") . '" errorMessage="' . $message . '" redirect_url="' . (!empty($appSettings->redirect_contact_url) ? htmlspecialchars($appSettings->redirect_contact_url, ENT_QUOTES) : "") . '" ';
		echo '</category_statement>';
		echo '</xml>';
		exit;
	}

	public function requestQuoteCompanyAjax()
	{
		// Check for request forgeries.
		$appSettings = JBusinessUtil::getApplicationSettings();
		$data = JFactory::getApplication()->input->post->getArray();
		$captchaAnswer = !empty($data['recaptcha_response_field']) ? $data['recaptcha_response_field'] : $data['g-recaptcha-response'];

		$errorFlag = false;
		$message = "";
		if ($appSettings->captcha) {
			try {
				$namespace = "jbusinessdirectory.contact.quote";
				$app = JFactory::getApplication();
				$captchaPlugin = $app->get('captcha');
				$captcha = JCaptcha::getInstance($captchaPlugin, array('namespace' => $namespace));
				if (!$captcha->checkAnswer(null)) {
					//$error = $captcha->getError();
					$this->setMessage("Captcha error!", 'warning');
					$message = "Captcha error";
					$errorFlag = true;
				}
			} catch (Exception $e) {
				//$error = $captcha->getError();
				$this->setMessage("Captcha error!", 'warning');
				$message = "Captcha error";
				$errorFlag = true;
			}
		}

		if (!$errorFlag) {
			$model = $this->getModel('companies');

			$result = $model->requestQuoteCompany($data);

			if ($result) {
				$this->setMessage(JText::_('COM_JBUSINESS_DIRECTORY_COMPANY_CONTACTED'));
				$message = JText::_('COM_JBUSINESS_DIRECTORY_COMPANY_CONTACTED');
			} else {
				$this->setMessage(JText::_('COM_JBUSINESS_DIRECTORY_COMPANY_NOT_CONTACTED'));
				$message = JText::_('COM_JBUSINESS_DIRECTORY_COMPANY_NOT_CONTACTED');
				$errorFlag = true;
			}
		}


		echo '<?xml version="1.0" encoding="utf-8" ?>';
		echo '<category_statement>';
		echo '<answer error="' . (!$errorFlag ? "0" : "1") . '" errorMessage="' . $message . '"/>';
		echo '</category_statement>';
		echo '</xml>';
		exit;
	}

	public function checkBusinessAboutToExpire()
	{
		$model = $this->getModel('companies');
		$model->checkBusinessAboutToExpire();
	}

	/**
	 * Process expired orders
	 *
	 * @return void
	 */
	public function processExpiredOrders()
	{
		$model = $this->getModel('companies');
		$model->processExpiredOrders();
	}

	public function getReviewQuestionAnswersAjax()
	{
		$reviewId = JFactory::getApplication()->input->get('reviewId');
		$model = $this->getModel('Companies');

		$result = $model->getReviewQuestionAnswersAjax($reviewId);

		/* Send as JSON */
		header("Content-Type: application/json", true);
		echo json_encode($result);
		exit;
	}

	public function saveAnswerAjax()
	{
		$answerId = JFactory::getApplication()->input->get('answerId');
		$answer = JFactory::getApplication()->input->getString('answer');

		$data = array();
		$data["id"] = $answerId;
		$data["answer"] = $answer;

		$model = $this->getModel('Companies');

		$result = $model->saveAnswerAjax($data);

		/* Send as JSON */
		header("Content-Type: application/json", true);
		echo json_encode($result);
		exit;
	}

	public function reportListing()
	{
		$app = JFactory::getApplication();
		$appSettings = JBusinessUtil::getApplicationSettings();
		$model = $this->getModel('companies');
		$data = JFactory::getApplication()->input->post->getArray();

		$companyId = JFactory::getApplication()->input->get('companyId');
		$company = $model->getPlainCompany($companyId);

		if ($appSettings->captcha) {
			try {
				$captchaAnswer = ! empty($post['recaptcha_response_field']) ? $post['recaptcha_response_field'] : $post['g-recaptcha-response'];
				$namespace = "jbusinessdirectory.contact";
				$app = JFactory::getApplication();
				$captchaPlugin = $app->get('captcha');
				$captcha = JCaptcha::getInstance($captchaPlugin, array(
					'namespace' => $namespace
				));

				if (! $captcha->checkAnswer(null)) {
					//$error = $captcha->getError();
					$this->setMessage("Captcha error!", 'warning');
					$message = "Captcha error";
					$this->setRedirect(JBusinessUtil::getCompanyLink($company));
					return;
				}
			} catch (Exception $e) {
				//$error = $captcha->getError();
				$this->setMessage("Captcha error!", 'warning');
				$message = "Captcha error";
				$this->setRedirect(JBusinessUtil::getCompanyLink($company));
				return;
			}
		}

		$result = $model->reportListing();
		if ($result) {
			$this->setMessage(JText::_('COM_JBUSINESS_DIRECTORY_OFFER_REVIEW_ABUSE_SUCCESS'));
		} else {
			$this->setMessage(JText::_('COM_JBUSINESS_ERROR'));
		}

		$this->setRedirect(JBusinessUtil::getCompanyLink($company));
	}
	/**
	 * Gets the appointment data from the front end, checks the captcha,
	 * redirects in case of an error in the captcha. Calls a function to save the
	 * appointment data. On success, it sends an email containing the information,
	 * and redirects to the company page and displays a success message.
	 *
	 * On failure, it redirects back to the company page and displays an error.
	 */
	public function leaveAppointment()
	{
		$app = JFactory::getApplication();
		$appSettings = JBusinessUtil::getApplicationSettings();
		$model = $this->getModel('companies');
		$data = JFactory::getApplication()->input->post->getArray();
		$companyId = JFactory::getApplication()->input->get('company_id');
		$company = $model->getPlainCompany($companyId);
		$companyEmail = $company->email;
		$companyName = $company->name;

		if ($appSettings->captcha) {
			try {
				$captchaAnswer = !empty($post['recaptcha_response_field']) ? $post['recaptcha_response_field'] : $post['g-recaptcha-response'];
				$namespace = "jbusinessdirectory.contact";
				$app = JFactory::getApplication();
				$captchaPlugin = $app->get('captcha');
				$captcha = JCaptcha::getInstance($captchaPlugin, array('namespace' => $namespace));
				if (!$captcha->checkAnswer(null)) {
					//$error = $captcha->getError();
					$this->setMessage("Captcha error!", 'warning');
					$this->setRedirect(JBusinessUtil::getCompanyLink($company));
					return;
				}
			} catch (Exception $e) {
				//$error = $captcha->getError();
				$this->setMessage("Captcha error!", 'warning');
				$this->setRedirect(JBusinessUtil::getCompanyLink($company));
				return;
			}
		}

		$eventModel = $this->getModel('event');
		$event = $eventModel->getPlainEvent($data['event_id']);
		if ($eventModel->leaveAppointment($data)) {
			$this->setMessage(JText::_('LNG_APPOINTMENT_RESERVED'));
			EmailService::sendAppointmentEmail($event, $data, $company, $companyName);
			$this->setRedirect(JBusinessUtil::getCompanyLink($company));
		} else {
			$this->setMessage(JText::_('LNG_ERROR_RESERVING_APPOINTMENT'), 'warning');
			$this->setRedirect(JBusinessUtil::getCompanyLink($company));
		}
	}

	public function increaseShareCountAjax()
	{
		$model = $this->getModel('companies');
		$company = $model->increaseShareCount(JFactory::getApplication()->input->get('itemId'), JFactory::getApplication()->input->get('itemType'));

		JFactory::getApplication()->close();
	}

	public function getProjectDetailsAjax()
	{
		$projectId = JFactory::getApplication()->input->get('projectId');
		$model = $this->getModel('Companies');

		$result = $model->getProjectDetails($projectId);

		/* Send as JSON */
		header("Content-Type: application/json", true);
		echo json_encode($result);
		exit;
	}

	public function generateQrCode()
	{
		$listingId = JFactory::getApplication()->input->get('itemId');
		$model = $this->getModel('Companies');

		$model->generateQrCode($listingId);
		exit;
	}

	public function generateVCard()
	{
		$listingId = JFactory::getApplication()->input->get('itemId');
		$model = $this->getModel('Companies');

		$model->generateVCard($listingId);
		exit;
	}

	public function acceptMapGDPRAjax()
	{
		setcookie('jbd_map_gdpr', true, time() + (86400 * 30), "/");

		/* Send as JSON */
		header("Content-Type: application/json", true);
		echo json_encode(true);
		exit;
	}

	public function requestQuoteCompanyProductAjax()
	{
		// Check for request forgeries.
		$appSettings = JBusinessUtil::getInstance()->getApplicationSettings();
		$post = JFactory::getApplication()->input->post->getArray();
		$captchaAnswer = !empty($post['recaptcha_response_field']) ? $post['recaptcha_response_field'] : $post['g-recaptcha-response'];

		$errorFlag = false;
		$message = "";
		if ($appSettings->captcha) {
			$namespace = "jbusinessdirectory.contact";
			$app = JFactory::getApplication();
			$captchaPlugin = $app->get('captcha');
			$captcha = JCaptcha::getInstance($captchaPlugin, array('namespace' => $namespace));
			if (!$captcha->checkAnswer(null)) {
				//$error = $captcha->getError();
				$this->setMessage("Captcha error!", 'warning');
				$message = "Captcha error";
				$errorFlag = true;
			}
		}

		if (!$errorFlag) {
			$model = $this->getModel('companies');

			$result = $model->requestQuoteCompanyProduct($post);

			if ($result) {
				$this->setMessage(JText::_('COM_JBUSINESS_DIRECTORY_COMPANY_CONTACTED'));
				$message = JText::_('COM_JBUSINESS_DIRECTORY_COMPANY_CONTACTED');
			} else {
				$this->setMessage(JText::_('COM_JBUSINESS_DIRECTORY_COMPANY_NOT_CONTACTED'));
				$message = JText::_('COM_JBUSINESS_DIRECTORY_COMPANY_NOT_CONTACTED');
				$errorFlag = true;
			}
		}


		echo '<?xml version="1.0" encoding="utf-8" ?>';
		echo '<category_statement>';
		echo '<answer error="' . (!$errorFlag ? "0" : "1") . '" errorMessage="' . $message . '"/>';
		echo '</category_statement>';
		echo '</xml>';
		exit;
	}

	/**
	 * Process the link request from the user.
	 * Get the main company Id and the company Ids and link them
	 *
	 * @throws Exception
	 */
	public function joinCompany()
	{
		$companyIds = JFactory::getApplication()->input->getString('companyIds');
		$multipleListings = JFactory::getApplication()->input->getString('multipleListings');
		$mainCompanyId = JFactory::getApplication()->input->getString('mainCompanyId');

		if (empty($companyIds)) {
			if (!$multipleListings) {
				$user = JBusinessUtil::getUser();
				$companyIds = array();
				$companies = JBusinessUtil::getCompaniesOptions($mainCompanyId, $user->id);
				foreach ($companies as $company) {
					$companyIds[] = $company->id;
				}
			} else {
				$companyIds = array();
			}
		}

		if (!is_array($companyIds)) {
			$companyIds = explode(',', $companyIds);
		}

		$model = $this->getModel('Companies');
		if ($model->joinCompany($mainCompanyId, $companyIds)) {
			$response['message'] = JText::_('COM_JBUSINESS_DIRECTORY_COMPANY_REGISTERED_SUCCESSFULLY');
			$response['error'] = 0;
		} else {
			$response['message'] = JText::_('COM_JBUSINESS_DIRECTORY_COMPANY_NOT_JOINED');
			$response['error'] = 1;
		}

		header('Content-Type: application/json', true);
		echo json_encode($response);
		exit;
	}


	public function getMoreReviewsAjax()
	{

		$view = $this->getView("Companies", "Html");

		$input = JFactory::getApplication()->input;
		$start = $input->getInt("start");
		$companyId = $input->getInt("companyId");

		$model = $this->getModel('Companies');
		$company = $model->getCompany();
		$view->setModel($model, true);
		$reviews = $model->getReviews(null, $start, REVIEWS_LIMIT, $companyId);

		$response = new stdClass();
		ob_start();
		$view->displayReviews($reviews, 'reviews');

		$response->reviews =  ob_get_contents();
		ob_end_clean();
		$response->show_more = count($reviews) == REVIEWS_LIMIT;

		$displayLimit = REVIEWS_LIMIT - 1;
		$response->reviewsCount = count($reviews) > $displayLimit ? $displayLimit : count($reviews);
		JBusinessUtil::sendJsonResponse($response, RESPONSE_STATUS_SUCCESS, '');
	}
}