You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
87 lines
2.9 KiB
87 lines
2.9 KiB
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<MulesoftController> logger)
|
|
{
|
|
Api = api;
|
|
_memoryCache = memoryCache;
|
|
_logger = logger;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Get Dealers
|
|
/// </summary>
|
|
/// <param name="buId"></param>
|
|
/// <param name="buUnit"></param>
|
|
/// <param name="latitude"></param>
|
|
/// <param name="longitude"></param>
|
|
/// <returns></returns>
|
|
[Authorize]
|
|
[HttpGet]
|
|
[ProducesResponseType(StatusCodes.Status200OK, Type = typeof(string))]
|
|
[SwaggerOperation(Tags = new[] { "Mulesoft" })]
|
|
[Route("GetDealers")]
|
|
public async Task<ActionResult<string>> 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;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Get Delear Master Details
|
|
/// </summary>
|
|
/// <param name="buId"></param>
|
|
/// <param name="dealerCode"></param>
|
|
/// <returns></returns>
|
|
[Authorize]
|
|
[HttpGet]
|
|
[ProducesResponseType(StatusCodes.Status200OK, Type = typeof(string))]
|
|
[SwaggerOperation(Tags = new[] { "Mulesoft" })]
|
|
[Route("GetDealersDetail")]
|
|
public async Task<ActionResult<string>> GetDealersDetail([Required] int buId,[Required] string dealerCode)
|
|
{
|
|
Model.MulesoftResponse responseApi = await Api.GetAndInsertDealerDetails(buId, dealerCode);
|
|
return responseApi.Result;
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// Call Booking API
|
|
/// </summary>
|
|
/// <param name="buId"></param>
|
|
/// <param name="bookingId"></param>
|
|
/// <returns></returns>
|
|
[Authorize]
|
|
[HttpGet]
|
|
[ProducesResponseType(StatusCodes.Status200OK, Type = typeof(MulesoftResponse))]
|
|
[SwaggerOperation(Tags = new[] { "Mulesoft" })]
|
|
[Route("MulesoftBookingApi")]
|
|
public async Task<ActionResult<Response>> CallBookingApi([Required] int buId, [Required] string bookingId)
|
|
{
|
|
MulesoftCustomerInfoDto customerInfo = await Api.GetCustomerInfo(buId, bookingId);
|
|
var responseApi = await Api.CallLSQBookingApi(customerInfo);
|
|
Response response = MapperConfig.MapResponse(responseApi);
|
|
return response;
|
|
}
|
|
|
|
|
|
}
|