<?php

namespace bff\modules\geo;

use GeoBase;

class Frontend extends GeoBase
{
    /**
     * Geocode & reverse geocode queries processing
     * @return \bff\http\Response
     */
    public function geocode()
    {
        $provider = $this->input->get('provider', TYPE_STR) ?: $this->config('geo.geocode.provider');
        $reverse = $this->input->post('reverse', TYPE_BOOL);

        if ($reverse) {
            $format = $this->input->post('format', TYPE_NOTAGS);
            $format = (!empty(trim($format, ', ')) ? explode(',', $format) : []);
            $response = $this->geocodeReverseQuery(
                $provider,
                $this->input->post('lat', TYPE_NOTAGS),
                $this->input->post('lng', TYPE_NOTAGS),
                $format
            );
        } else {
            $response = $this->geocodeQuery(
                $provider,
                $this->input->post('address', TYPE_NOTAGS)
            );
            if (is_array($response) && ! empty($response)) {
                $response = [$response['lat'], $response['lng']];
            } else {
                $response = [];
            }
        }

        return $this->ajaxResponseForm([
            'response' => $response,
        ]);
    }
}