<?php
if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}


if ( ! class_exists( 'OsSearchController' ) ) :


	class OsSearchController extends OsController {

		private $booking;

		function __construct() {
			parent::__construct();
			$this->views_folder = LATEPOINT_VIEWS_ABSPATH . 'search/';
		}

		function query_results() {
			$query = trim( $this->params['query'] );
			if ( ! $query ) {
				return;
			}
			$sql_query = '%' . $query . '%';


			$bookings               = new OsBookingModel();
			$bookings               = $bookings->filter_allowed_records()->where( [ 'booking_code' => strtoupper( $query ) ] )->get_results_as_models();
			$this->vars['bookings'] = $bookings;

			$customers = new OsCustomerModel();
			$customers->filter_allowed_records()->where(
				array(
					'OR' => array(
						'CONCAT (first_name, " ", last_name) LIKE ' => $sql_query,
						'email LIKE' => $sql_query,
						'phone LIKE' => $sql_query,
					),
				) 
			)->set_limit( 6 );
	  
			$customers               = $customers->get_results_as_models();
			$this->vars['customers'] = $customers;
			$this->vars['query']     = $query;

			if ( OsRolesHelper::can_user( 'service__view' ) ) {
				$services               = new OsServiceModel();
				$services               = $services->filter_allowed_records()->where( array( 'name LIKE ' => $sql_query ) )->set_limit( 6 )->get_results_as_models();
				$this->vars['services'] = $services;
			}
			if ( OsRolesHelper::can_user( 'agent__view' ) ) {
				$agents               = new OsAgentModel();
				$agents               = $agents->filter_allowed_records()->where(
					array(
						'OR' => array(
							'CONCAT (first_name, " ", last_name) LIKE ' => $sql_query,
							'email LIKE' => $sql_query,
							'phone LIKE' => $sql_query,
						),
					) 
				)->set_limit( 6 )->get_results_as_models();
				$this->vars['agents'] = $agents;
			}


			$this->format_render( __FUNCTION__ );
		}
	}
endif;
