* Fixed DTOs issues

* Added service to save data
This commit is contained in:
2025-08-28 14:50:46 +02:00
parent 23c26b4c65
commit 47f37d016d
13 changed files with 280 additions and 231 deletions

View File

@@ -17,7 +17,7 @@ namespace SytelineSaAppEfDataModel.Services
return int.Parse(lastOrderNumber);
}
public async Task<IEnumerable<EdiCustomerOrderDto>> GetAll()
{
IList<EdiCustomerOrderTranslateDto> ediCustomerOrderTranslates = await context.EdiCustomerOrderTranslates
@@ -33,7 +33,7 @@ namespace SytelineSaAppEfDataModel.Services
{
if (!ediTranslatesByCoNumber.TryGetValue(ediCustomerOrder.CustomerOrderNumber,
out List<EdiCustomerOrderTranslateDto>? customerOrderTranslates)) continue;
customerOrderTranslates = customerOrderTranslates.OrderByDescending(x => x.CreatedDate).ToList();
ediCustomerOrder.EdiCustomerOrderTranslates = customerOrderTranslates;
}
@@ -65,7 +65,7 @@ namespace SytelineSaAppEfDataModel.Services
{
return null;
}
IList<EdiCustomerOrderLineDto> ediCustomerOrderLines = await context.EdiCustomerOrderLines
.Where(x => x.CustomerOrderNumber == ediCustomerOrder.CustomerOrderNumber)
.Select(x => mapper.Map<EdiCustomerOrderLineDto>(x)).ToListAsync();
@@ -87,7 +87,7 @@ namespace SytelineSaAppEfDataModel.Services
return ediCustomerOrder;
}
public async Task<IEnumerable<EdiCustomerOrderTranslateDto>> FindMissingOrders(DateTime startDate)
{
IList<EdiCustomerOrderTranslate> ediCustomerOrderTranslates = await context.EdiCustomerOrderTranslates
@@ -109,14 +109,19 @@ namespace SytelineSaAppEfDataModel.Services
public async Task<int> SendOrderToSyteline(Guid customerOrderNumber)
{
EdiCustomerOrder? ediCustomerOrder = await context.EdiCustomerOrders.FirstOrDefaultAsync(x => x.RowPointer == customerOrderNumber);
EdiCustomerOrder? ediCustomerOrder =
await context.EdiCustomerOrders.FirstOrDefaultAsync(x => x.RowPointer == customerOrderNumber);
if (ediCustomerOrder == null) return 0;
var ediCoNum = new SqlParameter("@PEdiCoNum", SqlDbType.NVarChar, 50) { Value = ediCustomerOrder.CustomerOrderNumber };
var ediCoCount = new SqlParameter("@PEdiCoCount", SqlDbType.Int) { Value = 0, Direction = ParameterDirection.Output };
var postedCount = new SqlParameter("@PPostedCount", SqlDbType.Int) { Value = 0, Direction = ParameterDirection.Output };
var infoBar = new SqlParameter("@Infobar", SqlDbType.NVarChar, 2800) { Value = "", Direction = ParameterDirection.Output };
var ediCoNum = new SqlParameter("@PEdiCoNum", SqlDbType.NVarChar, 50)
{ Value = ediCustomerOrder.CustomerOrderNumber };
var ediCoCount = new SqlParameter("@PEdiCoCount", SqlDbType.Int)
{ Value = 0, Direction = ParameterDirection.Output };
var postedCount = new SqlParameter("@PPostedCount", SqlDbType.Int)
{ Value = 0, Direction = ParameterDirection.Output };
var infoBar = new SqlParameter("@Infobar", SqlDbType.NVarChar, 2800)
{ Value = "", Direction = ParameterDirection.Output };
var autoPost = new SqlParameter("@AutoPost", SqlDbType.Int) { Value = 0 };
var processId = new SqlParameter("@ProcessId", SqlDbType.Int) { Value = 423456 };
@@ -134,5 +139,33 @@ namespace SytelineSaAppEfDataModel.Services
return postedCountResult;
}
public async Task<(bool, string)> SaveOrdersWithDetails(List<EdiCustomerOrderDto> ediCustomerOrders)
{
if (ediCustomerOrders.Count == 0)
{
return (false, string.Empty);
}
try
{
await context.EdiCustomerOrders.AddRangeAsync(ediCustomerOrders.Select(mapper.Map<EdiCustomerOrder>));
await context.EdiCustomerOrderLines.AddRangeAsync(ediCustomerOrders
.SelectMany(x => x.EdiCustomerOrderLines)
.Select(mapper.Map<EdiCustomerOrderLine>));
await context.EdiCustomerOrderLineItems.AddRangeAsync(ediCustomerOrders
.SelectMany(x => x.EdiCustomerOrderLines)
.SelectMany(y => y.EdiCustomerOrderLineItems).Select(mapper.Map<EdiCustomerOrderLineItem>));
await context.EdiCustomerOrderTranslates.AddRangeAsync(ediCustomerOrders
.SelectMany(x => x.EdiCustomerOrderTranslates)
.Select(mapper.Map<EdiCustomerOrderTranslate>));
await context.SaveChangesAsync();
return (true, string.Empty);
}
catch (Exception ex)
{
return (false, ex.Message);
}
}
}
}

View File

@@ -14,6 +14,7 @@ namespace SytelineSaAppEfDataModel.Services
Task<IEnumerable<EdiCustomerOrderDto?>> GetByDate(DateTime date);
Task<EdiCustomerOrderDto?> GetByOrderNumber(Guid orderNumber);
Task<IEnumerable<EdiCustomerOrderTranslateDto>> FindMissingOrders(DateTime startDate);
Task<(bool, string)> SaveOrdersWithDetails(List<EdiCustomerOrderDto> ediCustomerOrders);
Task<int> SendOrderToSyteline(Guid customerOrderNumber);
}
}