public async Task <FindResponse <CaseWorkerTaskAggregate> > Find(FindCaseWorkerTasksParameter parameter, CancellationToken token)
        {
            using (var lck = await _caseManagementDbContext.Lock())
            {
                IQueryable <CaseWorkerTaskModel> result = _caseManagementDbContext.CaseWorkers.Include(_ => _.Roles);
                if (parameter.Claims != null && parameter.Claims.Any())
                {
                    var roles = await GetRoles(parameter.Claims, token);

                    var roleIds = roles.Where(_ => _.RoleId != null).Select(_ => _.RoleId.Value);
                    result = result.Where(_ => _.Roles.Any(r => roleIds.Contains(r.Id)));
                }

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

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

                return(new FindResponse <CaseWorkerTaskAggregate>
                {
                    StartIndex = parameter.StartIndex,
                    Count = parameter.Count,
                    TotalLength = totalLength,
                    Content = content.Select(_ => _.ToDomain()).ToList()
                });
            }
        }
Ejemplo n.º 2
0
        public async Task Update(CasePlanInstanceAggregate workflowInstance, CancellationToken token)
        {
            using (var lck = await _dbContext.Lock())
            {
                var record = await _dbContext.CasePlanInstances
                             .Include(_ => _.Roles).ThenInclude(_ => _.Claims)
                             .Include(_ => _.Files)
                             .Include(_ => _.WorkerTasks)
                             .Include(_ => _.Children).ThenInclude(_ => _.Children)
                             .FirstOrDefaultAsync(_ => _.Id == workflowInstance.AggregateId, token);

                if (record == null)
                {
                    return;
                }

                _dbContext.Roles.RemoveRange(record.Roles);
                _dbContext.CasePlanInstanceWorkerTaskLst.RemoveRange(record.WorkerTasks);
                _dbContext.CasePlanElementInstanceLst.RemoveRange(record.Children);
                _dbContext.CasePlanInstanceFileItemLst.RemoveRange(record.Files);
                record.CaseState        = (int?)workflowInstance.State;
                record.Version          = workflowInstance.Version;
                record.Name             = workflowInstance.Name;
                record.ExecutionContext = workflowInstance.ExecutionContext == null ? null : JsonConvert.SerializeObject(workflowInstance.ExecutionContext);
                record.Roles            = workflowInstance.Roles.Select(_ => _.ToModel(workflowInstance.AggregateId)).ToList();
                record.Files            = workflowInstance.Files.Select(_ => _.ToModel(workflowInstance.AggregateId)).ToList();
                record.WorkerTasks      = workflowInstance.WorkerTasks.Select(_ => _.ToModel(workflowInstance.AggregateId)).ToList();
                record.Children         = workflowInstance.Children == null ? new List <CasePlanElementInstanceModel>() : workflowInstance.Children.Select(_ => _.ToModel(workflowInstance.AggregateId)).ToList();
                record.UpdateDateTime   = workflowInstance.UpdateDateTime;
            }
        }
Ejemplo 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()
                });
            }
        }
Ejemplo n.º 4
0
        public async Task <int> Count(CancellationToken token)
        {
            using (var lck = await _caseManagementDbContext.Lock())
            {
                var result = await _caseManagementDbContext.CaseFiles.CountAsync(token);

                return(result);
            }
        }
Ejemplo n.º 5
0
        public async Task <Subscription> Get(string casePlanInstanceId, string casePlanElementInstanceId, string evtName, CancellationToken token)
        {
            using (await _dbContext.Lock())
            {
                var result = await _dbContext.SubscriptionLst.FirstOrDefaultAsync(_ => _.CasePlanInstanceId == casePlanInstanceId && _.CasePlanElementInstanceId == casePlanElementInstanceId && _.EventName == evtName, token);

                return(result == null ? null : result.ToDomain());
            }
        }
 public async Task Queue(QueueMessage message, CancellationToken token)
 {
     using (var lck = await _dbContext.Lock())
     {
         _dbContext.QueueMessageLst.Add(new Models.QueueMessageModel
         {
             CreateDateTime    = message.CreationDateTime,
             SerializedContent = message.SerializedContent,
             QueueName         = message.QueueName
         });
         await _dbContext.SaveChangesAsync(token);
     }
 }
Ejemplo n.º 7
0
        public async Task <FindResponse <CasePlanAggregate> > Find(FindCasePlansParameter parameter, CancellationToken token)
        {
            using (var lck = await _dbContext.Lock())
            {
                IQueryable <CasePlanModel> result = _dbContext.CasePlans
                                                    .Include(cp => cp.Roles).ThenInclude(cp => cp.Claims)
                                                    .Include(cp => cp.Files);
                if (MAPPING_WORKFLOWDEFINITION_TO_PROPERTYNAME.ContainsKey(parameter.OrderBy))
                {
                    result = result.InvokeOrderBy(MAPPING_WORKFLOWDEFINITION_TO_PROPERTYNAME[parameter.OrderBy], parameter.Order);
                }

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

                if (!string.IsNullOrWhiteSpace(parameter.Text))
                {
                    result = result.Where(r => r.Name.IndexOf(parameter.Text, StringComparison.InvariantCultureIgnoreCase) >= 0);
                }

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

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

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

                if (parameter.TakeLatest)
                {
                    content = content.OrderByDescending(r => r.Version).GroupBy(r => r.CasePlanId).Select(r => r.First()).ToList();
                }

                return(new FindResponse <CasePlanAggregate>
                {
                    StartIndex = parameter.StartIndex,
                    Count = parameter.Count,
                    TotalLength = totalLength,
                    Content = content.Select(_ => _.ToDomain()).ToList()
                });
            }
        }
Ejemplo n.º 8
0
        public async Task Delete(CaseFileAggregate caseFile, CancellationToken token)
        {
            using (var lck = await _caseManagementDbContext.Lock())
            {
                var record = await _caseManagementDbContext.CaseFiles.FirstOrDefaultAsync(_ => _.Id == caseFile.AggregateId, token);

                if (record == null)
                {
                    return;
                }

                _caseManagementDbContext.CaseFiles.Remove(record);
            }
        }
Ejemplo n.º 9
0
        public async Task Delete(CasePlanAggregate workflowDefinition, CancellationToken token)
        {
            using (var lck = await _dbContext.Lock())
            {
                var result = await _dbContext.CasePlans.FirstOrDefaultAsync(_ => _.Id == workflowDefinition.AggregateId, token);

                if (result == null)
                {
                    return;
                }

                _dbContext.CasePlans.Remove(result);
            }
        }
Ejemplo n.º 10
0
        public async Task Delete(CaseWorkerTaskAggregate caseWorkerTask, CancellationToken token)
        {
            using (var lck = await _caseManagementDbContext.Lock())
            {
                var record = await _caseManagementDbContext.CaseWorkers.Include(_ => _.Roles)
                             .FirstOrDefaultAsync(_ => _.Id == caseWorkerTask.AggregateId, token);

                if (record == null)
                {
                    return;
                }

                _caseManagementDbContext.Roles.RemoveRange(record.Roles);
                _caseManagementDbContext.CaseWorkers.Remove(record);
            }
        }
        public async Task <FindResponse <CaseWorkerTaskAggregate> > Find(FindCaseWorkerTasksParameter parameter, CancellationToken token)
        {
            using (var lck = await _caseManagementDbContext.Lock())
            {
                IQueryable <CaseWorkerTaskModel> result = _caseManagementDbContext.CaseWorkers;
                if (MAPPING_ACTIVATIONENAME_TO_PROPERTYNAME.ContainsKey(parameter.OrderBy))
                {
                    result = result.InvokeOrderBy(MAPPING_ACTIVATIONENAME_TO_PROPERTYNAME[parameter.OrderBy], parameter.Order);
                }

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

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