69 lines
2.4 KiB
C#
69 lines
2.4 KiB
C#
using AutoMapper;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using SytelineSaAppEfDataModel.Dtos;
|
|
using SytelineSaAppEfDataModel.Entities;
|
|
|
|
namespace SytelineSaAppEfDataModel.Services;
|
|
|
|
public class MaterialTransactionService(SytelineSaAppDbContext context, IMapper mapper) : IMaterialTransactionService
|
|
{
|
|
public async Task<IEnumerable<MaterialTransactionDto>> GetAll()
|
|
{
|
|
return await context.MaterialTransactions.Select(x => mapper.Map<MaterialTransactionDto>(x)).ToListAsync();
|
|
}
|
|
|
|
public async Task<MaterialTransactionDto?> GetByWzNumber(string wzNumber)
|
|
{
|
|
return await context.MaterialTransactions
|
|
.Where(x => x.MTGroupNum == wzNumber)
|
|
.Select(x => mapper.Map<MaterialTransactionDto>(x)).FirstOrDefaultAsync();
|
|
}
|
|
|
|
public async Task<IEnumerable<MaterialTransactionDto>> GetByWzNumbers(ISet<string> wzNumbers)
|
|
{
|
|
if (!wzNumbers.Any())
|
|
return Enumerable.Empty<MaterialTransactionDto>();
|
|
|
|
var wzNumbersList = string.Join(",", wzNumbers.Select(w => $"'{w}'"));
|
|
|
|
var sql = $@"
|
|
SELECT z.*
|
|
FROM ZPL_InternalNum_Matltran z
|
|
WHERE z.MTGroupNum <> ''
|
|
AND z.MTGroupNum IN ({wzNumbersList})";
|
|
|
|
IList<MaterialTransaction> result = await context.MaterialTransactions
|
|
.FromSqlRaw(sql)
|
|
.AsNoTracking()
|
|
.ToListAsync();
|
|
|
|
return result.Select(mapper.Map<MaterialTransactionDto>);
|
|
}
|
|
|
|
public async Task<IEnumerable<MaterialTransactionDto>> GetByOrderNumber(string orderNumber)
|
|
{
|
|
return await context.MaterialTransactions.Where(x => x.RefNum == orderNumber).OrderByDescending(x => x.TransDate)
|
|
.Select(x => mapper.Map<MaterialTransactionDto>(x)).ToListAsync();
|
|
}
|
|
|
|
public async Task<IEnumerable<MaterialTransactionDto>> GetOrderNumbersByWz(ISet<string> wzNumbers)
|
|
{
|
|
if (!wzNumbers.Any())
|
|
return [];
|
|
|
|
var wzNumbersList = string.Join(",", wzNumbers.Select(w => $"'{w}'"));
|
|
|
|
var sql = $@"
|
|
SELECT z.*
|
|
FROM ZPL_InternalNum_Matltran z
|
|
WHERE z.MTGroupNum <> ''
|
|
AND z.MTGroupNum IN ({wzNumbersList})";
|
|
|
|
IList<MaterialTransaction> result = await context.MaterialTransactions
|
|
.FromSqlRaw(sql)
|
|
.AsNoTracking()
|
|
.ToListAsync();
|
|
|
|
return result.Select(x => mapper.Map<MaterialTransactionDto>(x));
|
|
}
|
|
} |