private ICodeSystemCode QueryCodeSystemCode(Guid codeGuid)
        {
            var factory = new CodeSystemCodeFactory(this.codeSystems.Value);
            var dto     = this.GetBaseQuery(true).SingleOrDefault(d => d.CodeGUID == codeGuid);

            return(dto != null?factory.Build(dto) : null);
        }
        private async Task <IReadOnlyCollection <ICodeSystemCode> > GetCodesByBatch(
            IReadOnlyCollection <string> codes,
            IReadOnlyCollection <Guid> codeSystemGuids)
        {
            var dtos = this.GetBaseQuery(true).Where(dto => codes.Contains(dto.CodeCD));

            if (codeSystemGuids.Any())
            {
                dtos = dtos.Where(dto => codeSystemGuids.Contains(dto.CodeSystemGUID));
            }

            var factory = new CodeSystemCodeFactory(this.codeSystems.Value);
            var results = await dtos.ToListAsync().ConfigureAwait(false);

            return(results.Select(factory.Build).ToList());
        }
        private IReadOnlyCollection <ICodeSystemCode> QueryCodeSystemCodeList(bool includeRetired, Guid[] codeGuids)
        {
            if (!codeGuids.Any())
            {
                return(new List <ICodeSystemCode>());
            }

            var factory = new CodeSystemCodeFactory(this.codeSystems.Value);
            var dtos    = this.GetBaseQuery(includeRetired).Where(dto => codeGuids.Contains(dto.CodeGUID));

            if (!includeRetired)
            {
                dtos = dtos.Where(dto => dto.RetiredFLG == "N");
            }

            return(dtos.ToList().Select(factory.Build).ToList());
        }
        private async Task <PagedCollection <ICodeSystemCode> > CreatePagedCollectionAsync(
            IQueryable <CodeSystemCodeDto> source,
            IPagerSettings pagerSettings)
        {
            var defaultItemsPerPage = this.sharedContext.Settings.DefaultItemsPerPage;
            var pagingStrategy      = this.pagingStrategyFactory.GetPagingStrategy <ICodeSystemCode>(defaultItemsPerPage);

            pagingStrategy.EnsurePagerSettings(pagerSettings);

            var count = await source.CountAsync().ConfigureAwait(false);

            var items = await source.OrderBy(dto => dto.CodeDSC)
                        .Skip((pagerSettings.CurrentPage - 1) * pagerSettings.ItemsPerPage)
                        .Take(pagerSettings.ItemsPerPage)
                        .ToListAsync().ConfigureAwait(false);

            var factory = new CodeSystemCodeFactory(this.codeSystems.Value);

            return(pagingStrategy.CreatePagedCollection(
                       items.Select(i => this.codeSystemCodeCachingManager.GetOrSet(i.CodeGUID, () => factory.Build(i))
                                    ).Values(),
                       count,
                       pagerSettings));
        }