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
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);
|
|
}
|
|
|
|
}
|