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 logger; public UnitInUnitRepository( DataContext dataContext, ILogger logger ) { this.dataContext = dataContext; this.logger = logger; } public IQueryable Get() { return dataContext.UnitInUnits; } public async Task> 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); } } }