using DealerSelection.Api.Interface; using DealerSelection.WebApi.Models; using Microsoft.AspNetCore.Mvc; using Swashbuckle.AspNetCore.Annotations; using System.ComponentModel.DataAnnotations; using Model = DealerSelection.Api.Models; using Microsoft.AspNetCore.Authorization; using DealerSelection.Api.Infrastructure.Mulesoft; using Microsoft.Extensions.Caching.Memory; namespace DealerSelection.WebApi.Controllers; [ApiController] [Route("Mulesoft")] public class MulesoftController : ControllerBase { private readonly ILogger _logger; private readonly IMemoryCache _memoryCache; private IMulesoftApi Api { get; } public MulesoftController(IMemoryCache memoryCache, IMulesoftApi api, ILogger logger) { Api = api; _memoryCache = memoryCache; _logger = logger; } /// /// Get Dealers /// /// /// /// /// /// [Authorize] [HttpGet] [ProducesResponseType(StatusCodes.Status200OK, Type = typeof(string))] [SwaggerOperation(Tags = new[] { "Mulesoft" })] [Route("GetDealers")] public async Task> GetDealers([Required] int buId,[Required] string buUnit,[Required] string latitude,[Required] string longitude) { Model.MulesoftResponse responseApi = await Api.GetDealers(buId, buUnit, latitude, longitude); return responseApi.Result; } /// /// Get Delear Master Details /// /// /// /// [Authorize] [HttpGet] [ProducesResponseType(StatusCodes.Status200OK, Type = typeof(string))] [SwaggerOperation(Tags = new[] { "Mulesoft" })] [Route("GetDealersDetail")] public async Task> GetDealersDetail([Required] int buId,[Required] string dealerCode) { Model.MulesoftResponse responseApi = await Api.GetAndInsertDealerDetails(buId, dealerCode); return responseApi.Result; } }