Add project files.
This commit is contained in:
114
SytelineSaAppEfDataModel/Services/EdiCustomerOrderService.cs
Normal file
114
SytelineSaAppEfDataModel/Services/EdiCustomerOrderService.cs
Normal file
@@ -0,0 +1,114 @@
|
||||
using AutoMapper;
|
||||
using Microsoft.Data.SqlClient;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using System.Data;
|
||||
using SytelineSaAppEfDataModel.Dtos;
|
||||
using SytelineSaAppEfDataModel.Entities;
|
||||
|
||||
namespace SytelineSaAppEfDataModel.Services
|
||||
{
|
||||
public class EdiCustomerOrderService(SytelineSaAppDbContext context, IMapper mapper) : IEdiCustomerOrderService
|
||||
{
|
||||
public async Task<IEnumerable<EdiCustomerOrderDto>> GetAll()
|
||||
{
|
||||
IList<EdiCustomerOrderTranslateDto> ediCustomerOrderTranslates = await context.EdiCustomerOrderTranslates
|
||||
.Select(x => mapper.Map<EdiCustomerOrderTranslateDto>(x)).ToListAsync();
|
||||
|
||||
IList<EdiCustomerOrderDto> ediCustomerOrders =
|
||||
await context.EdiCustomerOrders.Select(x => mapper.Map<EdiCustomerOrderDto>(x)).ToListAsync();
|
||||
|
||||
IDictionary<string, List<EdiCustomerOrderTranslateDto>> ediTranslatesByCoNumber = ediCustomerOrderTranslates
|
||||
.GroupBy(x => x.EdiCoCoNum).ToDictionary(x => x.Key, y => y.ToList());
|
||||
|
||||
foreach (EdiCustomerOrderDto ediCustomerOrder in ediCustomerOrders)
|
||||
{
|
||||
if (!ediTranslatesByCoNumber.TryGetValue(ediCustomerOrder.CustomerOrderNumber,
|
||||
out List<EdiCustomerOrderTranslateDto>? customerOrderTranslates)) continue;
|
||||
|
||||
customerOrderTranslates = customerOrderTranslates.OrderByDescending(x => x.CreatedDate).ToList();
|
||||
ediCustomerOrder.EdiCustomerOrderTranslates = customerOrderTranslates;
|
||||
}
|
||||
|
||||
return ediCustomerOrders;
|
||||
}
|
||||
|
||||
public async Task<IEnumerable<EdiCustomerOrderDto?>> GetByDate(DateTime date)
|
||||
{
|
||||
IList<EdiCustomerOrderDto?> customerOrders = new List<EdiCustomerOrderDto?>();
|
||||
|
||||
IList<string> orderNumbers = await context.EdiCustomerOrders.Where(x => x.CreateDate > date)
|
||||
.Select(x => x.CustomerOrderNumber).ToListAsync();
|
||||
|
||||
foreach (string orderNumber in orderNumbers)
|
||||
{
|
||||
customerOrders.Add(await GetByOrderNumber(orderNumber));
|
||||
}
|
||||
|
||||
return customerOrders;
|
||||
}
|
||||
|
||||
public async Task<EdiCustomerOrderDto?> GetByOrderNumber(string customerOrderNumber)
|
||||
{
|
||||
IList<EdiCustomerOrderLineDto> ediCustomerOrderLines = await context.EdiCustomerOrderLines
|
||||
.Where(x => x.CustomerOrderNumber == customerOrderNumber)
|
||||
.Select(x => mapper.Map<EdiCustomerOrderLineDto>(x)).ToListAsync();
|
||||
|
||||
foreach (EdiCustomerOrderLineDto ediCustomerOrderLine in ediCustomerOrderLines)
|
||||
{
|
||||
ediCustomerOrderLine.EdiCustomerOrderLineItems = await context.EdiCustomerOrderLineItems
|
||||
.Where(x => x.CustomerOrderNumber == customerOrderNumber &&
|
||||
x.CustomerOrderLine == ediCustomerOrderLine.CustomerOrderLine)
|
||||
.Select(x => mapper.Map<EdiCustomerOrderLineItemDto>(x)).ToListAsync();
|
||||
}
|
||||
|
||||
EdiCustomerOrderDto ediCustomerOrder = mapper.Map<EdiCustomerOrderDto>(
|
||||
await context.EdiCustomerOrders.FirstOrDefaultAsync(x => x.CustomerOrderNumber == customerOrderNumber));
|
||||
|
||||
if (ediCustomerOrder == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
IList<EdiCustomerOrderTranslateDto> ediCustomerOrderTranslates = await context.EdiCustomerOrderTranslates
|
||||
.Where(x => x.EdiCoCoNum == ediCustomerOrder.CustomerOrderNumber)
|
||||
.Select(x => mapper.Map<EdiCustomerOrderTranslateDto>(x)).ToListAsync();
|
||||
|
||||
ediCustomerOrder.EdiCustomerOrderLines = ediCustomerOrderLines;
|
||||
ediCustomerOrder.EdiCustomerOrderTranslates = ediCustomerOrderTranslates;
|
||||
|
||||
return ediCustomerOrder;
|
||||
}
|
||||
|
||||
public async Task<int> SendOrderToSyteline(string customerOrderNumber)
|
||||
{
|
||||
var ediCoNum = new SqlParameter("@PEdiCoNum", SqlDbType.NVarChar, 50) { Value = 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 };
|
||||
|
||||
await context.Database.ExecuteSqlRawAsync(
|
||||
"EXEC [dbo].[FKR_EDI_EXTGEN_EdiInOrderPSp] @PEdiCoNum, @PEdiCoCount OUT, @PPostedCount OUT, @Infobar OUT, @AutoPost, @ProcessId",
|
||||
ediCoNum, ediCoCount, postedCount, infoBar, autoPost, processId);
|
||||
|
||||
//var result = await context.Database.ExecuteSqlRawAsync(
|
||||
// "EXEC [dbo].[FKR_EDI_EXTGEN_EdiInOrderPSp] @PEdiCoNum, @PEdiCoCount, @PPostedCount, @Infobar, @AutoPost, @ProcessId",
|
||||
// parameter1, parameter2, parameter3, parameter4, parameter5, parameter6);
|
||||
|
||||
string? infoBarResult = infoBar.Value?.ToString();
|
||||
int ediCoCountResult = Convert.ToInt32(ediCoCount.Value);
|
||||
int postedCountResult = Convert.ToInt32(postedCount.Value);
|
||||
|
||||
Console.WriteLine($"EDI Co Num: {infoBarResult}");
|
||||
Console.WriteLine($"EDI Co Count: {ediCoCountResult}");
|
||||
Console.WriteLine($"Posted Count: {postedCountResult}");
|
||||
|
||||
return postedCountResult;
|
||||
//// Jeśli chcesz pobrać wyniki procedury składowanej:
|
||||
//var results = context.SomeEntity.FromSqlRaw(
|
||||
// "EXEC YourStoredProcedure @Param1, @Param2",
|
||||
// parameter1, parameter2).ToList();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user