* Added Client Stellantis and mapped it
* Code cleanup
This commit is contained in:
@@ -21,7 +21,36 @@ public class ClientBase(
|
|||||||
IEnricher<EdiCustomerOrderDto, CustomerOrderDto> customerOrderEnricher,
|
IEnricher<EdiCustomerOrderDto, CustomerOrderDto> customerOrderEnricher,
|
||||||
IValidator validator)
|
IValidator validator)
|
||||||
{
|
{
|
||||||
protected virtual EdiCustomerOrderDto CreateCustomerOrder(OrderModel orderModel)
|
protected async Task Process(OrderModel orderModel, EdiCustomerOrderDto ediCustomerOrder, Func<IGrouping<string?,ScheduleOrderDetailDto>, int, IList<EdiCustomerOrderLineDto>> onProcessDetails)
|
||||||
|
{
|
||||||
|
//EdiCustomerOrderDto ediCustomerOrder = CreateEdiCustomerOrder(orderModel);
|
||||||
|
|
||||||
|
EdiCustomerOrderTranslateDto? customerOrderTranslation =
|
||||||
|
await FindOrderAndCreateTranslation(orderModel, ediCustomerOrder.CustomerOrderNumber);
|
||||||
|
|
||||||
|
if (!validator.IsEdiCustomerOrderTranslationFound(orderModel.ScheduleOrderDto, customerOrderTranslation))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (TryGetValidCustomerOrder(orderModel.ScheduleOrderDto, customerOrderTranslation?.CoCoNum ?? string.Empty)
|
||||||
|
.Result is not { } customerOrder) return;
|
||||||
|
|
||||||
|
orderModel.CustomerOrder = customerOrder;
|
||||||
|
|
||||||
|
customerOrderEnricher.Enrich(ediCustomerOrder, customerOrder);
|
||||||
|
|
||||||
|
int lineNumber = 0;
|
||||||
|
|
||||||
|
ediCustomerOrder.EdiCustomerOrderLines =
|
||||||
|
onProcessDetails.Invoke(orderModel.ScheduleOrderDetailsByGate, lineNumber);
|
||||||
|
ediCustomerOrder.EdiCustomerOrderTranslates = new List<EdiCustomerOrderTranslateDto>
|
||||||
|
{
|
||||||
|
customerOrderTranslation ?? new EdiCustomerOrderTranslateDto()
|
||||||
|
};
|
||||||
|
|
||||||
|
//return ediCustomerOrder;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected virtual EdiCustomerOrderDto CreateEdiCustomerOrder(OrderModel orderModel)
|
||||||
{
|
{
|
||||||
string orderNumber = $"EDI{orderModel.GetOrderNumber():0000000}";
|
string orderNumber = $"EDI{orderModel.GetOrderNumber():0000000}";
|
||||||
|
|
||||||
@@ -73,15 +102,17 @@ public class ClientBase(
|
|||||||
ScheduleOrderDetailDetailDto scheduleOrderDetailDetail, EdiCustomerOrderLineDto ediCustomerOrderLine,
|
ScheduleOrderDetailDetailDto scheduleOrderDetailDetail, EdiCustomerOrderLineDto ediCustomerOrderLine,
|
||||||
OrderModel orderModel, string customerOrderNumber, int itemNumber)
|
OrderModel orderModel, string customerOrderNumber, int itemNumber)
|
||||||
{
|
{
|
||||||
|
bool isDeljit = orderModel.ScheduleOrderDto.DocType.StartsWith("DELJIT");
|
||||||
|
|
||||||
EdiCustomerOrderLineItemDto ediCustomerOrderLineItem = itemTranslator.Translate(scheduleOrderDetailDetail);
|
EdiCustomerOrderLineItemDto ediCustomerOrderLineItem = itemTranslator.Translate(scheduleOrderDetailDetail);
|
||||||
ediCustomerOrderLineItem.CustomerOrderNumber = customerOrderNumber;
|
ediCustomerOrderLineItem.CustomerOrderNumber = customerOrderNumber;
|
||||||
ediCustomerOrderLineItem.CustomerOrderRelease = itemNumber;
|
ediCustomerOrderLineItem.CustomerOrderRelease = itemNumber;
|
||||||
ediCustomerOrderLineItem.NewStatus = orderModel.ScheduleOrderDto.DocType == "DELJIT" ? "O" : "P";
|
ediCustomerOrderLineItem.NewStatus = isDeljit ? "O" : "P";
|
||||||
ediCustomerOrderLineItem.CustomerOrderCustomerNumber = orderModel.Customer.CustNum;
|
ediCustomerOrderLineItem.CustomerOrderCustomerNumber = orderModel.Customer.CustNum;
|
||||||
ediCustomerOrderLineItem.CustomerNumber = orderModel.Customer.CustNum;
|
ediCustomerOrderLineItem.CustomerNumber = orderModel.Customer.CustNum;
|
||||||
ediCustomerOrderLineItem.CustomerSequence = orderModel.Customer.CustSeq;
|
ediCustomerOrderLineItem.CustomerSequence = orderModel.Customer.CustSeq;
|
||||||
ediCustomerOrderLineItem.CustomerPoNumber = orderModel.CustomerOrder?.CustPo ?? string.Empty;
|
ediCustomerOrderLineItem.CustomerPoNumber = orderModel.CustomerOrder?.CustPo ?? string.Empty;
|
||||||
ediCustomerOrderLineItem.DocumentType = orderModel.ScheduleOrderDto.DocType ?? string.Empty;
|
ediCustomerOrderLineItem.DocumentType = isDeljit ? "DELJIT" : orderModel.ScheduleOrderDto.DocType ?? string.Empty;
|
||||||
ediCustomerOrderLineItem.Warehouse = orderModel.Warehouse;
|
ediCustomerOrderLineItem.Warehouse = orderModel.Warehouse;
|
||||||
ediCustomerOrderLineItem.DueDate = GetDueDate(scheduleOrderDetailDetail);
|
ediCustomerOrderLineItem.DueDate = GetDueDate(scheduleOrderDetailDetail);
|
||||||
|
|
||||||
|
|||||||
@@ -23,48 +23,28 @@ public class ClientScania(
|
|||||||
customerOrderLineEnricher, itemEnricher, itemPriceEnricher, ediCustomerOrderLineEnricher, customerOrderEnricher,
|
customerOrderLineEnricher, itemEnricher, itemPriceEnricher, ediCustomerOrderLineEnricher, customerOrderEnricher,
|
||||||
validator), IClientScania
|
validator), IClientScania
|
||||||
{
|
{
|
||||||
private readonly IValidator _validator = validator;
|
|
||||||
|
|
||||||
public async Task<EdiCustomerOrderDto?> ProcessClientOrder(OrderModel orderModel)
|
public async Task<EdiCustomerOrderDto?> ProcessClientOrder(OrderModel orderModel)
|
||||||
{
|
{
|
||||||
EdiCustomerOrderDto ediCustomerOrder = CreateCustomerOrder(orderModel);
|
EdiCustomerOrderDto ediCustomerOrder = CreateEdiCustomerOrder(orderModel);
|
||||||
|
|
||||||
EdiCustomerOrderTranslateDto? customerOrderTranslation =
|
|
||||||
await FindOrderAndCreateTranslation(orderModel, ediCustomerOrder.CustomerOrderNumber);
|
|
||||||
|
|
||||||
if (!_validator.IsEdiCustomerOrderTranslationFound(orderModel.ScheduleOrderDto, customerOrderTranslation))
|
|
||||||
return null;
|
|
||||||
|
|
||||||
if (TryGetValidCustomerOrder(orderModel.ScheduleOrderDto, customerOrderTranslation.CoCoNum).Result is not
|
|
||||||
{ } customerOrder)
|
|
||||||
return null;
|
|
||||||
|
|
||||||
orderModel.CustomerOrder = customerOrder;
|
|
||||||
|
|
||||||
customerOrderEnricher.Enrich(ediCustomerOrder, customerOrder);
|
|
||||||
|
|
||||||
int lineNumber = 0;
|
|
||||||
|
|
||||||
IList<EdiCustomerOrderLineDto> ediCustomerOrderLines = new List<EdiCustomerOrderLineDto>();
|
IList<EdiCustomerOrderLineDto> ediCustomerOrderLines = new List<EdiCustomerOrderLineDto>();
|
||||||
|
|
||||||
foreach (ScheduleOrderDetailDto scheduleOrderDetail in orderModel.ScheduleOrderDetailsByGate)
|
await Process(orderModel, ediCustomerOrder, (scheduleOrderDetails, lineNumber) =>
|
||||||
{
|
{
|
||||||
EdiCustomerOrderLineDto? ediCustomerOrderLine = CreateCustomerOrderLine(scheduleOrderDetail, orderModel,
|
foreach (ScheduleOrderDetailDto scheduleOrderDetail in scheduleOrderDetails)
|
||||||
ediCustomerOrder.CustomerOrderNumber, ++lineNumber);
|
{
|
||||||
|
EdiCustomerOrderLineDto? ediCustomerOrderLine = CreateCustomerOrderLine(scheduleOrderDetail, orderModel,
|
||||||
|
ediCustomerOrder.CustomerOrderNumber, ++lineNumber);
|
||||||
|
|
||||||
if (ediCustomerOrderLine is null) continue;
|
if (ediCustomerOrderLine is null) continue;
|
||||||
|
|
||||||
ediCustomerOrderLines.Add(ediCustomerOrderLine);
|
ediCustomerOrderLines.Add(ediCustomerOrderLine);
|
||||||
|
|
||||||
ediCustomerOrderLine.EdiCustomerOrderLineItems = CreateEdiCustomerOrderLineItems(scheduleOrderDetail,
|
ediCustomerOrderLine.EdiCustomerOrderLineItems = CreateEdiCustomerOrderLineItems(scheduleOrderDetail,
|
||||||
ediCustomerOrderLine, orderModel, ediCustomerOrder.CustomerOrderNumber);
|
ediCustomerOrderLine, orderModel, ediCustomerOrder.CustomerOrderNumber);
|
||||||
}
|
}
|
||||||
|
|
||||||
ediCustomerOrder.EdiCustomerOrderLines = ediCustomerOrderLines;
|
return ediCustomerOrderLines;
|
||||||
ediCustomerOrder.EdiCustomerOrderTranslates = new List<EdiCustomerOrderTranslateDto>
|
});
|
||||||
{
|
|
||||||
customerOrderTranslation
|
|
||||||
};
|
|
||||||
|
|
||||||
return ediCustomerOrder;
|
return ediCustomerOrder;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,8 +24,79 @@ namespace DelforSenders.Clients.Stellantis
|
|||||||
customerOrderLineEnricher, itemEnricher, itemPriceEnricher, ediCustomerOrderLineEnricher, customerOrderEnricher,
|
customerOrderLineEnricher, itemEnricher, itemPriceEnricher, ediCustomerOrderLineEnricher, customerOrderEnricher,
|
||||||
validator), IClientStellantis
|
validator), IClientStellantis
|
||||||
{
|
{
|
||||||
public Task<EdiCustomerOrderDto?> ProcessClientOrder(OrderModel orderModel)
|
public async Task<EdiCustomerOrderDto?> ProcessClientOrder(OrderModel orderModel,
|
||||||
|
IList<StellantisConfigModel> stellantisConfig)
|
||||||
{
|
{
|
||||||
|
EdiCustomerOrderDto ediCustomerOrder = CreateEdiCustomerOrder(orderModel);
|
||||||
|
IList<EdiCustomerOrderLineDto> ediCustomerOrderLines = new List<EdiCustomerOrderLineDto>();
|
||||||
|
|
||||||
|
await Process(orderModel, ediCustomerOrder, (scheduleOrderDetails, lineNumber) =>
|
||||||
|
{
|
||||||
|
foreach (ScheduleOrderDetailDto scheduleOrderDetail in scheduleOrderDetails)
|
||||||
|
{
|
||||||
|
MapItemNumberIfNeeded(orderModel, stellantisConfig, scheduleOrderDetail);
|
||||||
|
|
||||||
|
EdiCustomerOrderLineDto? ediCustomerOrderLine = CreateCustomerOrderLine(scheduleOrderDetail,
|
||||||
|
orderModel, ediCustomerOrder.CustomerOrderNumber, ++lineNumber);
|
||||||
|
|
||||||
|
if (ediCustomerOrderLine is null) continue;
|
||||||
|
|
||||||
|
ediCustomerOrderLines.Add(ediCustomerOrderLine);
|
||||||
|
|
||||||
|
ediCustomerOrderLine.EdiCustomerOrderLineItems = CreateEdiCustomerOrderLineItems(
|
||||||
|
scheduleOrderDetail, ediCustomerOrderLine, orderModel, ediCustomerOrder.CustomerOrderNumber);
|
||||||
|
}
|
||||||
|
|
||||||
|
return ediCustomerOrderLines;
|
||||||
|
});
|
||||||
|
|
||||||
|
return ediCustomerOrder;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void MapItemNumberIfNeeded(OrderModel orderModel, IList<StellantisConfigModel> stellantisConfig,
|
||||||
|
ScheduleOrderDetailDto scheduleOrderDetail)
|
||||||
|
{
|
||||||
|
if (stellantisConfig.FirstOrDefault(x =>
|
||||||
|
x.ItemNumber == scheduleOrderDetail.Sh_productCode &&
|
||||||
|
x.Recipient == orderModel.ScheduleOrderDto.Recipient.ID) is { } mapper)
|
||||||
|
{
|
||||||
|
scheduleOrderDetail.Sh_productCode = mapper.NewItemNumber;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private IList<EdiCustomerOrderLineItemDto> CreateEdiCustomerOrderLineItems(
|
||||||
|
ScheduleOrderDetailDto scheduleOrderDetail, EdiCustomerOrderLineDto ediCustomerOrderLine,
|
||||||
|
OrderModel orderModel,
|
||||||
|
string customerOrderNumber)
|
||||||
|
{
|
||||||
|
List<ScheduleOrderDetailDetailDto> scheduleOrderDetailsDetails =
|
||||||
|
scheduleOrderDetail.ScheduleOrderDetailDetails.ToList();
|
||||||
|
List<EdiCustomerOrderLineItemDto> ediCustomerOrderLineItems = new List<EdiCustomerOrderLineItemDto>();
|
||||||
|
|
||||||
|
int itemNumber = 0;
|
||||||
|
|
||||||
|
foreach (ScheduleOrderDetailDetailDto scheduleOrderDetailDetail in scheduleOrderDetailsDetails
|
||||||
|
.Where(x => x.Qty > 0 && x.QtyType != "54").OrderBy(x => x.DateTo))
|
||||||
|
{
|
||||||
|
EdiCustomerOrderLineItemDto? ediCustomerOrderLineItem =
|
||||||
|
CreateCustomerOrderLineItem(scheduleOrderDetailDetail, ediCustomerOrderLine, orderModel,
|
||||||
|
customerOrderNumber, ++itemNumber);
|
||||||
|
|
||||||
|
if (ediCustomerOrderLineItem is null) continue;
|
||||||
|
|
||||||
|
ediCustomerOrderLineItems.Add(ediCustomerOrderLineItem);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (orderModel.ScheduleOrderDto.DocType == "DELJIT" && orderModel.CustomerOrder is not null)
|
||||||
|
{
|
||||||
|
ediCustomerOrderLineItems.AddRange(GetPlannedDetailsForDeljit(
|
||||||
|
orderModel.CustomerOrder.CustomerOrderLines.First(x =>
|
||||||
|
x.Item == ediCustomerOrderLine.Item), ediCustomerOrderLine.EdiCustomerOrderLineItems.ToList()));
|
||||||
|
}
|
||||||
|
|
||||||
|
EnumerateEdiCustomerOrderLineItems(ediCustomerOrderLineItems, ediCustomerOrderLine.CustomerOrderNumber);
|
||||||
|
|
||||||
|
return ediCustomerOrderLineItems;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override EdiCustomerOrderLineDto? CreateCustomerOrderLine(ScheduleOrderDetailDto scheduleOrderDetail,
|
protected override EdiCustomerOrderLineDto? CreateCustomerOrderLine(ScheduleOrderDetailDto scheduleOrderDetail,
|
||||||
@@ -37,7 +108,7 @@ namespace DelforSenders.Clients.Stellantis
|
|||||||
if (ediCustomerOrderLine is null) return null;
|
if (ediCustomerOrderLine is null) return null;
|
||||||
|
|
||||||
ediCustomerOrderLine.BoxType = GetBoxType(scheduleOrderDetail);
|
ediCustomerOrderLine.BoxType = GetBoxType(scheduleOrderDetail);
|
||||||
|
|
||||||
return ediCustomerOrderLine;
|
return ediCustomerOrderLine;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -57,7 +128,7 @@ namespace DelforSenders.Clients.Stellantis
|
|||||||
|
|
||||||
ediCustomerOrderLineItem.PalletCode = GetPalletCode(scheduleOrderDetail);
|
ediCustomerOrderLineItem.PalletCode = GetPalletCode(scheduleOrderDetail);
|
||||||
ediCustomerOrderLineItem.PalletNumber = GetPalletNumber(scheduleOrderDetail);
|
ediCustomerOrderLineItem.PalletNumber = GetPalletNumber(scheduleOrderDetail);
|
||||||
|
|
||||||
return ediCustomerOrderLineItem;
|
return ediCustomerOrderLineItem;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -95,16 +166,18 @@ namespace DelforSenders.Clients.Stellantis
|
|||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public IList<EdiCustomerOrderLineItemDto> GetPlannedDetailsForDeljit(CustomerOrderLineDto customerOrderLine, IList<EdiCustomerOrderLineItemDto> ediCustomerOrderLineItems)
|
private IList<EdiCustomerOrderLineItemDto> GetPlannedDetailsForDeljit(CustomerOrderLineDto customerOrderLine,
|
||||||
|
List<EdiCustomerOrderLineItemDto> ediCustomerOrderLineItems)
|
||||||
{
|
{
|
||||||
DateTime? maxDueDate = ediCustomerOrderLineItems.Max(x => x.DueDate);
|
DateTime? maxDueDate = ediCustomerOrderLineItems.Max(x => x.DueDate);
|
||||||
IList<DateTime?> plannedDates = ediCustomerOrderLineItems.Select(x => x.DueDate).Distinct().ToList();
|
IList<DateTime?> plannedDates = ediCustomerOrderLineItems.Select(x => x.DueDate).Distinct().ToList();
|
||||||
|
|
||||||
IList<CustomerOrderLineItemDto> customerOrderLineItems =
|
IList<CustomerOrderLineItemDto> customerOrderLineItems =
|
||||||
customerOrderLine.CustomerOrderLineItems.Where(x => x.Stat == "P").ToList();
|
customerOrderLine.CustomerOrderLineItems.Where(x => x.Stat == "P").ToList();
|
||||||
|
|
||||||
List<EdiCustomerOrderLineItemDto> plannedDetailsForDeljit = customerOrderLineItems.Where(x => !plannedDates.Contains(x.DueDate) && x.DueDate > maxDueDate)
|
List<EdiCustomerOrderLineItemDto> plannedDetailsForDeljit = customerOrderLineItems
|
||||||
|
.Where(x => !plannedDates.Contains(x.DueDate) && x.DueDate > maxDueDate)
|
||||||
.Select(x => new EdiCustomerOrderLineItemDto
|
.Select(x => new EdiCustomerOrderLineItemDto
|
||||||
{
|
{
|
||||||
ReceivedDate = x.CreateDate,
|
ReceivedDate = x.CreateDate,
|
||||||
@@ -146,5 +219,20 @@ namespace DelforSenders.Clients.Stellantis
|
|||||||
|
|
||||||
return plannedDetailsForDeljit;
|
return plannedDetailsForDeljit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void EnumerateEdiCustomerOrderLineItems(List<EdiCustomerOrderLineItemDto> ediCustomerOrderLineItems,
|
||||||
|
string customerOrderNumber)
|
||||||
|
{
|
||||||
|
int lineItemNumber = 0;
|
||||||
|
|
||||||
|
foreach (EdiCustomerOrderLineItemDto ediCustomerOrderLineItem in ediCustomerOrderLineItems.OrderBy(x =>
|
||||||
|
x.DueDate))
|
||||||
|
{
|
||||||
|
ediCustomerOrderLineItem.CustomerOrderRelease = ++lineItemNumber;
|
||||||
|
ediCustomerOrderLineItem.SupplyQtyConvFactor = 1;
|
||||||
|
ediCustomerOrderLineItem.CustomerOrderNumber = customerOrderNumber;
|
||||||
|
ediCustomerOrderLineItem.RowPointer = Guid.NewGuid();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ namespace DelforSenders.Clients.Stellantis
|
|||||||
{
|
{
|
||||||
public interface IClientStellantis
|
public interface IClientStellantis
|
||||||
{
|
{
|
||||||
Task<EdiCustomerOrderDto?> ProcessClientOrder(OrderModel orderModel);
|
Task<EdiCustomerOrderDto?> ProcessClientOrder(OrderModel orderModel,
|
||||||
|
IList<StellantisConfigModel> stellantisConfig);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
using DelforSenders.Clients.Scania;
|
using DelforSenders.Clients.Scania;
|
||||||
|
using DelforSenders.Clients.Stellantis;
|
||||||
using DelforSenders.Enums;
|
using DelforSenders.Enums;
|
||||||
using DelforSenders.Models;
|
using DelforSenders.Models;
|
||||||
using DelforSenders.Services;
|
using DelforSenders.Services;
|
||||||
@@ -7,7 +8,7 @@ using SytelineSaAppEfDataModel.Dtos;
|
|||||||
|
|
||||||
namespace DelforSenders.Core;
|
namespace DelforSenders.Core;
|
||||||
|
|
||||||
public class App(IAppService appService, IClientScania scania, IValidator validator) : IApp
|
public class App(IAppService appService, IClientScania scania, IClientStellantis stellantis, IValidator validator) : IApp
|
||||||
{
|
{
|
||||||
public async Task RunAsync()
|
public async Task RunAsync()
|
||||||
{
|
{
|
||||||
@@ -19,14 +20,14 @@ public class App(IAppService appService, IClientScania scania, IValidator valida
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
lastUpdateDate = new DateTime(2025, 8, 24);
|
lastUpdateDate = new DateTime(2025, 8, 26);
|
||||||
|
|
||||||
IList<CustomerDto> customers = await appService.GetCustomers();
|
IList<CustomerDto> customers = await appService.GetCustomers();
|
||||||
IList<CustomerTpDto> customerTps = await appService.GetCustomerTps();
|
IList<CustomerTpDto> customerTps = await appService.GetCustomerTps();
|
||||||
List<CustomerConfigModel> customersFromConfig = appService.GetCustomersFromConfig();
|
IList<CustomerConfigModel> customersFromConfig = appService.GetCustomersFromConfig();
|
||||||
|
|
||||||
IEnumerable<ScheduleOrderDto> scheduleOrders = await appService.GetScheduleOrders(lastUpdateDate.Value);
|
IEnumerable<ScheduleOrderDto> scheduleOrders = await appService.GetScheduleOrders(lastUpdateDate.Value);
|
||||||
scheduleOrders = scheduleOrders.Where(x => x.ID == 22996).Take(1).ToList();
|
scheduleOrders = scheduleOrders.Where(x => x.ID == 23051).Take(1).ToList();
|
||||||
|
|
||||||
int lastOrderNumber = await appService.GetLastOrderNumber();
|
int lastOrderNumber = await appService.GetLastOrderNumber();
|
||||||
|
|
||||||
@@ -76,13 +77,14 @@ public class App(IAppService appService, IClientScania scania, IValidator valida
|
|||||||
case Client.Man:
|
case Client.Man:
|
||||||
case Client.Edscha:
|
case Client.Edscha:
|
||||||
case Client.Volvo:
|
case Client.Volvo:
|
||||||
|
return null;
|
||||||
case Client.Stellantis:
|
case Client.Stellantis:
|
||||||
|
return await stellantis.ProcessClientOrder(orderModel, appService.GetStellantisConfig());
|
||||||
case Client.Tofas:
|
case Client.Tofas:
|
||||||
case Client.Strattec:
|
case Client.Strattec:
|
||||||
case Client.StellantisArgentina:
|
case Client.StellantisArgentina:
|
||||||
return null;
|
|
||||||
default:
|
default:
|
||||||
throw new ArgumentOutOfRangeException();
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -107,14 +109,14 @@ public class App(IAppService appService, IClientScania scania, IValidator valida
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool TryGetValidCustomerTp(ScheduleOrderDto scheduleOrder, IList<CustomerTpDto> customerTps, List<CustomerConfigModel> customersFromConfig,
|
private bool TryGetValidCustomerTp(ScheduleOrderDto scheduleOrder, IList<CustomerTpDto> customerTps,
|
||||||
out CustomerTpDto? customerTp)
|
IList<CustomerConfigModel> customersFromConfig, out CustomerTpDto? customerTp)
|
||||||
{
|
{
|
||||||
(var isValidCustomerTp, customerTp) =
|
(var isValidCustomerTp, customerTp) =
|
||||||
validator.TryGetValidCustomerTp(scheduleOrder, customerTps, customersFromConfig);
|
validator.TryGetValidCustomerTp(scheduleOrder, customerTps, customersFromConfig);
|
||||||
|
|
||||||
if (isValidCustomerTp && customerTp is not null) return true;
|
if (isValidCustomerTp && customerTp is not null) return true;
|
||||||
|
|
||||||
string errors = validator.GetErrors();
|
string errors = validator.GetErrors();
|
||||||
Console.WriteLine(errors);
|
Console.WriteLine(errors);
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@@ -1,8 +1,3 @@
|
|||||||
namespace DelforSenders.Models;
|
namespace DelforSenders.Models;
|
||||||
|
|
||||||
public abstract class CustomerConfigModel
|
public record CustomerConfigModel(string TpCode, string CustomerNumber, int CustomerSequenceNumber);
|
||||||
{
|
|
||||||
public string TpCode { get; set; }
|
|
||||||
public string CustomerNumber { get; set; }
|
|
||||||
public int CustomerSequenceNumber { get; set; }
|
|
||||||
}
|
|
||||||
3
DelforSender/Models/StellantisConfigModel.cs
Normal file
3
DelforSender/Models/StellantisConfigModel.cs
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
namespace DelforSenders.Models;
|
||||||
|
|
||||||
|
public record StellantisConfigModel(string ItemNumber, int Recipient, string NewItemNumber);
|
||||||
@@ -66,11 +66,19 @@ public class AppService(IRestClient restClient, IConfiguration configuration) :
|
|||||||
return response.IsSuccessful ? response.Data : 0;
|
return response.IsSuccessful ? response.Data : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<CustomerConfigModel> GetCustomersFromConfig()
|
public IList<CustomerConfigModel> GetCustomersFromConfig()
|
||||||
{
|
{
|
||||||
var customers = configuration.GetSection("Customers").Get<List<CustomerConfigModel>>() ??
|
var customers = configuration.GetSection("Customers").Get<List<CustomerConfigModel>>() ??
|
||||||
new List<CustomerConfigModel>();
|
new List<CustomerConfigModel>();
|
||||||
|
|
||||||
return customers;
|
return customers;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public IList<StellantisConfigModel> GetStellantisConfig()
|
||||||
|
{
|
||||||
|
var stellantisConfig = configuration.GetSection("StellantisMappers").Get<List<StellantisConfigModel>>() ??
|
||||||
|
new List<StellantisConfigModel>();
|
||||||
|
|
||||||
|
return stellantisConfig;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -11,5 +11,6 @@ public interface IAppService
|
|||||||
Task<IList<CustomerDto>> GetCustomers();
|
Task<IList<CustomerDto>> GetCustomers();
|
||||||
Task<IList<CustomerTpDto>> GetCustomerTps();
|
Task<IList<CustomerTpDto>> GetCustomerTps();
|
||||||
Task<int> GetLastOrderNumber();
|
Task<int> GetLastOrderNumber();
|
||||||
List<CustomerConfigModel> GetCustomersFromConfig();
|
IList<CustomerConfigModel> GetCustomersFromConfig();
|
||||||
|
IList<StellantisConfigModel> GetStellantisConfig();
|
||||||
}
|
}
|
||||||
@@ -19,6 +19,13 @@
|
|||||||
"ToEmail": "piotr.kus@fakrosno.pl,marek.zolna@fakrosno.pl",
|
"ToEmail": "piotr.kus@fakrosno.pl,marek.zolna@fakrosno.pl",
|
||||||
"Ssl": false
|
"Ssl": false
|
||||||
},
|
},
|
||||||
|
"StellantisMappers": [
|
||||||
|
{
|
||||||
|
"ItemNumber": "FA71004.97C",
|
||||||
|
"Recipient": 35,
|
||||||
|
"NewItemNumber": "FA71004.97B"
|
||||||
|
}
|
||||||
|
],
|
||||||
"Customers": [
|
"Customers": [
|
||||||
{
|
{
|
||||||
"TpCode": "000254206547900919",
|
"TpCode": "000254206547900919",
|
||||||
|
|||||||
Reference in New Issue
Block a user