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.
 
 
 

77 lines
2.7 KiB

using DealerSelection.Api.Infrastructure.CustomerDetail;
using DealerSelection.Api.Interface;
using DealerSelection.Api.Models;
using DealerSelection.Common.Exceptions;
using Microsoft.Extensions.Logging;
using System.Text.RegularExpressions;
namespace DealerSelection.Api;
public class YellowAIApi : IYellowAIApi
{
private readonly ILogger _logger;
private IRepository CustomerDetailRepository { get; }
public YellowAIApi(IRepository customerRepo, ILogger<YellowAIApi> logger)
{
CustomerDetailRepository = customerRepo;
_logger = logger;
}
public async Task UpdateSelectedDealer(CustomerDealerInfoRequest request)
{
if (IsValidData(request.MobileNumber, request.DealerCode, request.DealerName))
{
var isDuplicate = await IsDuplicateMobileNumber(request.MobileNumber);
if (!isDuplicate)
{
//Push to LSQ then make it complete
//
CustomerDealerInfoRequestDto dto = new CustomerDealerInfoRequestDto
{
BuId = request.BuId,
RecordId = request.RecordId,
MobileNumber = request.MobileNumber,
ModelCode = request.ModelCode,
ModelName = request.ModelName,
ModelVariant = request.ModelVariant,
DealerName = request.DealerName,
DealerCode = request.DealerCode,
PinCode = request.PinCode,
Latitude = request.Latitude,
Longitude = request.Longitude,
DealerSelectionJobStatus = DealerSelectionJobStatus.Complete //Marking JobStatus Complete once we receive response from Yellow API
};
await CustomerDetailRepository.UpdateDealerDetail(dto);
}
else
_logger.LogWarning($"Duplicate MobileNumber exist. Data Details: {request.RequestDetail()}.");
}
else
{
_logger.LogWarning($"Invalid data. Data Details: {request.RequestDetail()}.");
throw new ValidationException("Invalid data.");
}
}
private static bool IsValidData(int mobileNumber, string dealerCode, string dealerName)
{
bool valid = Regex.IsMatch(mobileNumber.ToString(), @"^[0-9]{10}$");
if (valid && string.IsNullOrWhiteSpace(dealerCode) && string.IsNullOrWhiteSpace(dealerName))
valid = false;
return valid;
}
private async Task<bool> IsDuplicateMobileNumber(int mobileNumber)
{
return await CustomerDetailRepository.IsDuplicateMobileNumber(mobileNumber);
}
}