Files
laatzen/LaaProductionWeb/LaaProductionWeb.Services/OrdersService.cs
T
2023-04-17 10:57:24 +02:00

71 lines
3.3 KiB
C#

namespace LaaProductionWeb.Services
{
using LaaProductionWeb.Data.Interfaces;
using LaaProductionWeb.Services.Interfaces;
using LaaProductionWeb.Services.Models;
public class OrdersService : IOrdersService
{
private readonly ISqlClient dbContext;
public OrdersService(ISqlClient dbContext)
=> this.dbContext = dbContext;
public OrdersFoundModel FindOrders(string search)
{
var ordersFound = this.dbContext.ExecuteReader(
query: $@"
SELECT DISTINCT
[AlleAuftragPositionen].[AuftragNr] -- 0
, [AlleAuftragPositionen].[FertigungsauftragNr] -- 1
, [Kunde].[Name] -- 2
FROM [AlleAuftragPositionen]
LEFT JOIN [Kunde] ON [Kunde].[KundenNr] = [AlleAuftragPositionen].[KundenNr]
WHERE [AlleAuftragPositionen].[Versand_Ist_datum] IS NOT NULL
AND [AlleAuftragPositionen].[AuftragNr] LIKE @{nameof(search)}
ORDER BY [AlleAuftragPositionen].[AuftragNr]
, [AlleAuftragPositionen].[FertigungsauftragNr]
, [Kunde].[Name]",
parameters: parameters => parameters.Add(nameof(search), $"%{search}%"),
reader: reader => new OrderInfoModel
{
OrderNr = reader.GetValue<int>(0),
ProductionOrderNr = reader.GetValue<int>(1),
ClientName = reader.GetValue<string>(2),
});
return new OrdersFoundModel(ordersFound);
}
public OrderPositions FindPositions(string orderNr)
{
var positionsFound = this.dbContext.ExecuteReader(
query: $@"
SELECT DISTINCT
[AlleAuftragPositionen].[PositionNr] -- 0
FROM [AlleAuftragPositionen]
WHERE [AlleAuftragPositionen].[AuftragNr] = @{nameof(orderNr)}
OR [AlleAuftragPositionen].[FertigungsauftragNr] = @{nameof(orderNr)}
ORDER BY [AlleAuftragPositionen].[PositionNr]",
parameters: parameters => parameters.Add(nameof(orderNr), orderNr),
reader: reader => (int)reader.GetValue<short>(0));
return new OrderPositions(positionsFound);
}
public ProductionOrders FindProductionOrders(string productionNr)
{
var ordersFound = this.dbContext.ExecuteReader($@"
SELECT DISTINCT
[AlleAuftragPositionen].[FertigungsauftragNr] -- 1
FROM [AlleAuftragPositionen]
WHERE [AlleAuftragPositionen].[Versand_Ist_datum] IS NOT NULL
AND [AlleAuftragPositionen].[AuftragNr] LIKE @{nameof(productionNr)}
ORDER BY [AlleAuftragPositionen].[FertigungsauftragNr]",
parameters => parameters.Add(nameof(productionNr), $"{productionNr}%"),
reader => reader.GetValue<int>());
return new ProductionOrders(ordersFound);
}
}
}