Opal-Estate-Pro/inc/api/v1/search-form.php

155 lines
3.1 KiB
PHP
Executable File

<?php
// Exit if accessed directly.
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
/**
* Property_Api
*
* @since 1.0.0
* @package Opalestate_Search_Form_Api
*/
class Opalestate_Search_Form_Api extends Opalestate_Base_API {
/**
* The unique identifier of the route resource.
*
* @since 1.0.0
* @access public
* @var string $base .
*/
public $base = '/search-form';
/**
* Register Routes
*
* Register all CURD actions with POST/GET/PUT and calling function for each
*
* @since 1.0
*
*/
public function register_routes() {
register_rest_route(
$this->namespace,
'/' . $this->base,
[
[
'methods' => WP_REST_Server::READABLE,
'callback' => [ $this, 'get_fields' ],
'permission_callback' => [ $this, 'get_items_permissions_check' ],
// 'args' => $this->get_search_params(),
],
]
);
}
/**
* Get List Of Properties
*
* Based on request to get collection
*
* @return WP_REST_Response is json data
* @since 1.0
*
*/
public function get_fields( $request ) {
$response = [];
$fields = [];
$fields['min_price'] = [
'enable' => opalestate_is_enable_price_field(),
'default' => opalestate_options( 'search_min_price', 0 ),
];
$fields['max_price'] = [
'enable' => opalestate_is_enable_price_field(),
'default' => opalestate_options( 'search_max_price', 10000000 ),
];
$fields['min_area'] = [
'enable' => opalestate_is_enable_areasize_field(),
'default' => opalestate_options( 'search_min_area', 0 ),
];
$fields['max_area'] = [
'enable' => opalestate_is_enable_areasize_field(),
'default' => opalestate_options( 'search_max_area', 1000 ),
];
$fields['search_text'] = [
'default' => '',
];
$fields['location_text'] = [
'default' => '',
];
$fields['geo_long'] = [
'default' => '',
];
$fields['geo_lat'] = [
'default' => '',
];
$fields['types'] = [
'enable' => true,
'default' => -1,
'data' => Opalestate_Taxonomy_Type::get_list(),
];
$fields['status'] = [
'enable' => true,
'default' => -1,
'data' => Opalestate_Taxonomy_Status::get_list(),
];
$fields['cat'] = [
'enable' => true,
'default' => -1,
'data' => Opalestate_Taxonomy_Categories::get_list(),
];
$fields['location'] = [
'enable' => true,
'default' => -1,
'data' => Opalestate_Taxonomy_Location::get_list(),
];
$fields['city'] = [
'enable' => true,
'default' => -1,
'data' => Opalestate_Taxonomy_City::get_list(),
];
$fields['state'] = [
'enable' => true,
'default' => -1,
'data' => Opalestate_Taxonomy_State::get_list(),
];
$fields['amenities'] = [
'enable' => true,
'default' => [],
'data' => Opalestate_Taxonomy_Amenities::get_list(),
];
$info_fields = OpalEstate_Search::get_setting_search_fields();
$info = [];
if ( $info_fields ) {
foreach ( $info_fields as $field_key => $field_name ) {
$info[] = [
'key' => $field_key,
'name' => $field_name,
];
}
}
$fields['info'] = $info;
$response['fields'] = $fields;
return $this->get_response( 200, $response );
}
}