41 lines
1.2 KiB
C#
41 lines
1.2 KiB
C#
using Microsoft.EntityFrameworkCore;
|
|
using Microsoft.Extensions.Logging;
|
|
using PARR.Core.Repositories.Interfaces.Unit;
|
|
using PARR.DAL.Context;
|
|
using PARR.Domain.Entities.Unit;
|
|
|
|
namespace PARR.DAL.Repositories.Unit
|
|
{
|
|
internal class UnitInUnitRepository : IUnitInUnitRepository
|
|
{
|
|
private readonly DataContext dataContext;
|
|
private readonly ILogger<UnitInUnitRepository> logger;
|
|
|
|
public UnitInUnitRepository(
|
|
DataContext dataContext,
|
|
ILogger<UnitInUnitRepository> logger
|
|
)
|
|
{
|
|
this.dataContext = dataContext;
|
|
this.logger = logger;
|
|
}
|
|
|
|
|
|
public IQueryable<UnitInUnit> Get()
|
|
{
|
|
return dataContext.UnitInUnits;
|
|
}
|
|
|
|
|
|
public async Task<List<Guid>> GetRelatedUnitIdsAsync(Guid unitId, CancellationToken ct = default)
|
|
{
|
|
return await Get()
|
|
.AsNoTracking()
|
|
.Where(link => link.ChildUnitId == unitId || link.ParentUnitId == unitId)
|
|
.Select(link => link.ChildUnitId == unitId ? link.ParentUnitId : link.ChildUnitId)
|
|
.Distinct()
|
|
.ToListAsync(ct);
|
|
}
|
|
}
|
|
}
|