public async Task <SearchResult <CasePlanInstanceResult> > Find(FindCasePlanInstancesParameter parameter, CancellationToken token)
        {
            IQueryable <CasePlanInstanceAggregate> result = _dbContext.CasePlanInstances;

            if (!string.IsNullOrWhiteSpace(parameter.CasePlanId))
            {
                result = result.Where(r => r.CasePlanId == parameter.CasePlanId);
            }

            if (!string.IsNullOrWhiteSpace(parameter.CaseFileId))
            {
                result = result.Where(r => r.CaseFileId == parameter.CaseFileId);
            }

            if (MAPPING_WORKFLOWINSTANCE_TO_PROPERTYNAME.ContainsKey(parameter.OrderBy))
            {
                result = result.InvokeOrderBy(MAPPING_WORKFLOWINSTANCE_TO_PROPERTYNAME[parameter.OrderBy], parameter.Order);
            }

            int totalLength = result.Count();

            result = result.Skip(parameter.StartIndex).Take(parameter.Count);
            var content = await result.ToListAsync();

            return(new SearchResult <CasePlanInstanceResult>
            {
                StartIndex = parameter.StartIndex,
                Count = parameter.Count,
                TotalLength = totalLength,
                Content = content.Select(_ => CasePlanInstanceResult.ToDto(_)).ToList()
            });
        }
Exemplo n.º 2
0
        public Task <FindResponse <CasePlanInstanceAggregate> > Find(FindCasePlanInstancesParameter parameter, CancellationToken token)
        {
            IQueryable <CasePlanInstanceAggregate> result = _instances.AsQueryable();

            if (!string.IsNullOrWhiteSpace(parameter.CasePlanId))
            {
                result = result.Where(_ => _.CasePlanId == parameter.CasePlanId);
            }

            if (!string.IsNullOrWhiteSpace(parameter.CaseFileId))
            {
                result = result.Where(_ => _.CaseFileId == parameter.CaseFileId);
            }

            if (MAPPING_WORKFLOWINSTANCE_TO_PROPERTYNAME.ContainsKey(parameter.OrderBy))
            {
                result = result.InvokeOrderBy(MAPPING_WORKFLOWINSTANCE_TO_PROPERTYNAME[parameter.OrderBy], parameter.Order);
            }

            int totalLength = result.Count();

            result = result.Skip(parameter.StartIndex).Take(parameter.Count);
            return(Task.FromResult(new FindResponse <CasePlanInstanceAggregate>
            {
                StartIndex = parameter.StartIndex,
                Count = parameter.Count,
                TotalLength = totalLength,
                Content = result.ToList()
            }));
        }
Exemplo n.º 3
0
        public async Task <FindResponse <CasePlanInstanceAggregate> > Find(FindCasePlanInstancesParameter parameter, CancellationToken token)
        {
            using (var lck = await _dbContext.Lock())
            {
                IQueryable <CasePlanInstanceModel> result = _dbContext.CasePlanInstances
                                                            .Include(_ => _.Roles).ThenInclude(_ => _.Claims)
                                                            .Include(_ => _.Files)
                                                            .Include(_ => _.WorkerTasks)
                                                            .Include(_ => _.Children).ThenInclude(_ => _.Children);
                if (!string.IsNullOrWhiteSpace(parameter.CasePlanId))
                {
                    result = result.Where(r => r.CasePlanId == parameter.CasePlanId);
                }

                if (MAPPING_WORKFLOWINSTANCE_TO_PROPERTYNAME.ContainsKey(parameter.OrderBy))
                {
                    result = result.InvokeOrderBy(MAPPING_WORKFLOWINSTANCE_TO_PROPERTYNAME[parameter.OrderBy], parameter.Order);
                }

                int totalLength = result.Count();
                result = result.Skip(parameter.StartIndex).Take(parameter.Count);
                var content = await result.ToListAsync();

                return(new FindResponse <CasePlanInstanceAggregate>
                {
                    StartIndex = parameter.StartIndex,
                    Count = parameter.Count,
                    TotalLength = totalLength,
                    Content = content.Select(_ => _.ToDomain()).ToList()
                });
            }
        }