43 lines
1.6 KiB
C#
43 lines
1.6 KiB
C#
using Hcs.WebApp.Data.Hcs;
|
|
using Microsoft.EntityFrameworkCore;
|
|
|
|
namespace Hcs.WebApp.Services
|
|
{
|
|
public class RegistryService(IDbContextFactory<HcsDbContext> factory) : HcsServiceBase(factory)
|
|
{
|
|
public async Task<int> GetRegistryCountAsync(HcsDbContext context)
|
|
{
|
|
return await context.Registries.CountAsync();
|
|
}
|
|
|
|
public async Task<IEnumerable<Registry>> GetAllRegistriesAsync(bool isCommon)
|
|
{
|
|
using var context = GetNewContext();
|
|
return await (from registry in context.Registries
|
|
where registry.IsCommon == isCommon
|
|
select registry).ToListAsync();
|
|
}
|
|
|
|
public async Task<Registry> GetRegistryByOperationIdAsync(int operationId)
|
|
{
|
|
using var context = GetNewContext();
|
|
return await context.Registries.SingleAsync(x => x.LastSyncOperationId == operationId);
|
|
}
|
|
|
|
public async Task<IEnumerable<Registry>> GetRegistriesByOperationIdAsync(int operationId)
|
|
{
|
|
using var context = GetNewContext();
|
|
return await (from registry in context.Registries
|
|
where registry.LastSyncOperationId == operationId
|
|
select registry).ToListAsync();
|
|
}
|
|
|
|
public async Task SetOperationsToRegistriesAsync(HcsDbContext context, IEnumerable<Operation> operations)
|
|
{
|
|
var queue = new Queue<Operation>(operations);
|
|
await context.Registries.ForEachAsync(x => x.LastSyncOperationId = queue.Dequeue().Id);
|
|
await context.SaveChangesAsync();
|
|
}
|
|
}
|
|
}
|