Files
mapo-core/MP.Data/Repository/Dossier/DossierRepository.cs
T
2026-06-02 15:44:25 +02:00

110 lines
3.8 KiB
C#

using Microsoft.Data.SqlClient;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using MP.Data.DbModels;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace MP.Data.Repository.Dossier
{
public class DossierRepository : IDossierRepository
{
#region Private Fields
private readonly IConfiguration _configuration;
#endregion
#region Public Constructors
public DossierRepository(IConfiguration configuration)
{
_configuration = configuration;
}
#endregion
#region Public Methods
/// <inheritdoc />
public async Task<bool> DossiersDeleteRecordAsync(DossierModel currRec)
{
await using var dbCtx = new MoonPro_FluxContext(_configuration);
var currVal = await dbCtx
.DbSetDossiers
.Where(x => x.IdxDossier == currRec.IdxDossier)
.FirstOrDefaultAsync();
dbCtx
.DbSetDossiers
.Remove(currVal);
return await dbCtx.SaveChangesAsync() > 0;
}
/// <inheritdoc />
public async Task<List<DossierModel>> DossiersGetLastFiltAsync(string IdxMacchina, string CodArticolo, DateTime DtStart, DateTime DtEnd, int MaxRec)
{
await using var dbCtx = new MoonPro_FluxContext(_configuration);
return await dbCtx
.DbSetDossiers
.AsNoTracking()
.Where(x => (IdxMacchina == "*" || x.IdxMacchina == IdxMacchina) && (CodArticolo == "*" || x.CodArticolo == CodArticolo) && (x.DtRif >= DtStart && x.DtRif <= DtEnd))
.Include(m => m.MachineNav)
.Include(a => a.ArticoloNav)
.OrderByDescending(x => x.DtRif)
.Take(MaxRec)
.ToListAsync();
}
/// <inheritdoc />
public async Task<bool> DossiersInsertAsync(DossierModel newRec)
{
await using var dbCtx = new MoonPro_FluxContext(_configuration);
await dbCtx
.DbSetDossiers
.AddAsync(newRec);
return await dbCtx.SaveChangesAsync() > 0;
}
/// <inheritdoc />
public async Task<bool> DossiersTakeParamsSnapshotLastAsync(string idxMacchina, DateTime dtMin, DateTime dtMax)
{
await using var dbCtx = new MoonPro_FluxContext(_configuration);
var pIdxMacchina = new SqlParameter("@IdxMacchina", idxMacchina);
var pDtMin = new SqlParameter("@DtMin", dtMin);
var pDtMax = new SqlParameter("@DtMax", dtMax);
var dbResult = await dbCtx
.Database
.ExecuteSqlRawAsync("EXEC stp_FL_TakeSnapshotLast @IdxMacchina,@DtMin,@DtMax", pIdxMacchina, pDtMin, pDtMax);
return dbResult != 0;
}
/// <inheritdoc />
public async Task<bool> DossiersUpdateValoreAsync(DossierModel editRec)
{
await using var dbCtx = new MoonPro_FluxContext(_configuration);
var currRec = await dbCtx
.DbSetDossiers
.Where(x => x.IdxDossier == editRec.IdxDossier)
.FirstOrDefaultAsync();
if (currRec != null)
{
currRec.Valore = editRec.Valore;
dbCtx.Entry(currRec).State = EntityState.Modified;
}
else
{
await dbCtx
.DbSetDossiers
.AddAsync(editRec);
}
return await dbCtx.SaveChangesAsync() > 0;
}
#endregion
}
}