Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
        }