52 lines
1.3 KiB
C#
52 lines
1.3 KiB
C#
|
using Mapster;
|
|||
|
using Microsoft.EntityFrameworkCore;
|
|||
|
using Persistence.Database.Entity;
|
|||
|
using Persistence.Models;
|
|||
|
using Persistence.Repositories;
|
|||
|
|
|||
|
namespace Persistence.Repository.Repositories
|
|||
|
{
|
|||
|
public class TechMessagesRepository : ITechMessagesRepository
|
|||
|
{
|
|||
|
private DbContext db;
|
|||
|
public TechMessagesRepository(DbContext db)
|
|||
|
{
|
|||
|
this.db = db;
|
|||
|
}
|
|||
|
|
|||
|
protected virtual IQueryable<TechMessage> GetQueryReadOnly() => db.Set<TechMessage>();
|
|||
|
|
|||
|
public async Task<int> GetStatistics(int importantId, string autoDrillingSystem, CancellationToken token)
|
|||
|
{
|
|||
|
var query = GetQueryReadOnly();
|
|||
|
var count = await query
|
|||
|
.Where(e => e.ImportantId == importantId && e.AutoDrillingSystem == autoDrillingSystem)
|
|||
|
.CountAsync();
|
|||
|
|
|||
|
return count;
|
|||
|
}
|
|||
|
|
|||
|
public async Task<IEnumerable<string>> GetSystems(CancellationToken token)
|
|||
|
{
|
|||
|
var query = GetQueryReadOnly();
|
|||
|
var entities = await query
|
|||
|
.Select(e => e.AutoDrillingSystem ?? string.Empty)
|
|||
|
.Distinct()
|
|||
|
.ToArrayAsync(token);
|
|||
|
var dtos = entities.Order();
|
|||
|
|
|||
|
return dtos;
|
|||
|
}
|
|||
|
|
|||
|
public async Task<int> InsertRange(IEnumerable<TechMessageDto> dtos, CancellationToken token)
|
|||
|
{
|
|||
|
var entities = dtos.Select(d => d.Adapt<TechMessage>());
|
|||
|
|
|||
|
await db.Set<TechMessage>().AddRangeAsync(entities, token);
|
|||
|
var result = await db.SaveChangesAsync(token);
|
|||
|
|
|||
|
return result;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|