using Microsoft.AspNetCore.Mvc;
using Server.Services;

namespace Server.Controllers;

[Route("api/")]
[ApiController]
public class VehicleEnrollmentSearchController : ControllerBase
{
    private readonly VehicleEnrollmentSearchService _vehicleEnrollmentSearchService;

    public VehicleEnrollmentSearchController(VehicleEnrollmentSearchService vehicleEnrollmentSearchService)
    {
        _vehicleEnrollmentSearchService = vehicleEnrollmentSearchService;
    }

    [HttpGet("search")]
    public async Task<IActionResult> GetEnrollments(int fromCityId, int toCityId, DateTime date)
    {
        var result = await _vehicleEnrollmentSearchService.GetEnrollments(fromCityId, toCityId, date);

        if (!result.isSucceed)
        {
            return result.actionResult;
        }

        return Ok(result.result);
    }

    [HttpGet("autocomplete")]
    public async Task<IActionResult> AutocompleteCityName([FromQuery] string type, [FromQuery] string query, [FromQuery] int limit)
    {
        var result = await _vehicleEnrollmentSearchService.GetPopularCityNames(type, query, limit);

        if (!result.isSucceed)
        {
            return result.actionResult;
        }
        
        return new OkObjectResult(result.cities);
    }
    
    [HttpGet("popular")]
    public async Task<IActionResult> GetPopularCityNames([FromQuery] string type, [FromQuery] int limit)
    {
        var result = await _vehicleEnrollmentSearchService.GetPopularCityNames(type, limit);

        if (!result.isSucceed)
        {
            return result.actionResult;
        }
        
        return new OkObjectResult(result.cities);
    }
}