public async Task <List <DirectiveView> > GetDirectives(int aircraftId, DirectiveType directiveType, ADType?adType = null) { var basecomponentIds = await _componentRepository.GetAircraftBaseComponentIds(aircraftId); var query = _db.Directives .Where(FilterByType(basecomponentIds, directiveType)) .Include(i => i.ATAChapter) .AsNoTracking() .OnlyActive(); if (adType != null) { query = query.Where(i => i.ADType == (short)adType); } var directives = await query.ToListAsync(); var ids = directives.Select(i => i.Id); var fileLinks = await _db.ItemFileLinks .AsNoTracking() .Where(i => i.ParentTypeId == SmartCoreType.Directive.ItemId && ids.Contains(i.ParentId)) .ToListAsync(); var view = directives.ToBlView(); foreach (var directiveView in view) { directiveView.ItemFileLink.AddRange(fileLinks.Where(i => i.ParentId == directiveView.Id)); } return(view); }
public async Task <List <MaintenanceDirectiveView> > GetMaintenanceDirective(int aircraftId) { var basecomponentIds = await _componentRepository.GetAircraftBaseComponentIds(aircraftId); var mpds = await _db.MaintenanceDirectives .Where(i => basecomponentIds.Contains(i.ComponentId.Value)) .Include(i => i.ATAChapter) .AsNoTracking() .OnlyActive() .ToListAsync(); var mpdIds = mpds.Select(i => i.Id); var fileLinks = await _db.ItemFileLinks .AsNoTracking() .Where(i => i.ParentTypeId == SmartCoreType.MaintenanceDirective.ItemId && mpdIds.Contains(i.ParentId)) .ToListAsync(); var view = mpds.ToBlView(); foreach (var directiveView in view) { directiveView.ItemFileLink.AddRange(fileLinks.Where(i => i.ParentId == directiveView.Id)); } return(view); }