<?php

namespace LoftyIDX\apis;

use LoftyIDX\includes\LoftyIDXHelpers;
use LoftyIDX\includes\common\LoftyIDXListingHelper;

class LoftyIDXListingApi
{
    public static $mlsList = null;
    public static function index()
    {
        $params = LoftyIDXHelpers::get_request_param();

        $result = [
            'status' => [
                'code' => 0,
                'msg' => 'success'
            ],
        ];
        if ($params['path'] === urldecode('/search/realTimeListings')) {
            try {
                $data = [];
                $isSoldListing = isset($params['listingType']) && $params['listingType'] === 'sold-listing';

                if ($isSoldListing) {
                    $data = LoftyIDXListingHelper::getSoldListing($params);
                } else {
                    $data = LoftyIDXListingHelper::getActiveListing($params);
                }
                if (isset($params['format']) && $params['format'] == 'json') {
                    wp_send_json($data);
                    wp_die();
                    return;
                }
                if (is_null(self::$mlsList)) {
                    self::$mlsList = LoftyIDXListingHelper::get_mls_info();
                }
                $data["listings"] = $data["listings"]??[];
                $data["currentCount"] = count($data["listings"]??[]);
                $data["html"] = LoftyIDXListingHelper::render_listing_list($data, self::$mlsList, $isSoldListing);

                $result['data'] = $data;
            } catch (\Exception $e) {
                $result["status"] = [
                    'code' => 500,
                    'msg' => $e->getMessage(),
                ];
            }
        }
        elseif ($params['path'] === urldecode('/save-search/tags')) {
            $result['data'] = LoftyIDXListingHelper::getSaveSearchTags($params);
        }

        wp_send_json($result);
        wp_die();
    }
}
