private void Handle(CasePlanInstanceCreatedEvent evt) { Roles = evt.Roles.ToList(); AggregateId = evt.AggregateId; Children.Add(evt.Stage); if (evt.Files != null && evt.Files.Any()) { foreach (var file in evt.Files) { Children.Add(file); } } CreateDateTime = evt.CreateDateTime; UpdateDateTime = evt.CreateDateTime; Version = evt.Version; CaseFileId = evt.CaseFileId; CasePlanId = evt.CasePlanId; Name = evt.CasePlanName; NameIdentifier = evt.NameIdentifier; if (evt.Parameters != null) { foreach (var kvp in evt.Parameters) { ExecutionContext.SetStrVariable(kvp.Key, kvp.Value); } } }
public static CasePlanInstanceAggregate New(string id, CasePlanAggregate caseplan, string nameIdentifier, Dictionary <string, string> parameters) { var result = new CasePlanInstanceAggregate(); var roles = caseplan.Roles.Select(_ => new CasePlanInstanceRole { EltId = _.EltId, Name = _.Name }).ToList(); var files = caseplan.Files.Select(_ => { var result = new CaseEltInstance { EltId = _.EltId, Id = CaseEltInstance.BuildId(id, _.EltId), Name = _.Name }; result.UpdateDefinitionType(_.DefinitionType); return(result); }).ToList(); var stage = CMMNParser.ExtractStage(caseplan.XmlContent, id); var evt = new CasePlanInstanceCreatedEvent(Guid.NewGuid().ToString(), id, 0, nameIdentifier, roles, stage, DateTime.UtcNow, caseplan.CaseFileId, caseplan.AggregateId, caseplan.Name, parameters, files); result.Handle(evt); result.DomainEvents.Add(evt); return(result); }
private void Handle(CasePlanInstanceCreatedEvent evt) { Roles = evt.Roles.ToList(); var unknownRoles = evt.Permissions.Where(_ => !Roles.Any(__ => __.Id == _.Id)); if (unknownRoles.Any()) { throw new AggregateValidationException(new List <KeyValuePair <string, string> > { new KeyValuePair <string, string>("validation", $"unknown roles '{string.Join(",", unknownRoles.Select(_ => _.Id))}'") }); } if (!string.IsNullOrWhiteSpace(evt.CaseOwner)) { if (Roles.FirstOrDefault(_ => _.Id == evt.CaseOwner) == null) { throw new AggregateValidationException(new List <KeyValuePair <string, string> > { new KeyValuePair <string, string>("validation", $"unknown case owner role '{evt.CaseOwner}'") }); } } foreach (var permission in evt.Permissions) { var role = Roles.First(_ => _.Id == permission.Id); role.Claims = permission.Claims; } AggregateId = evt.AggregateId; if (!string.IsNullOrWhiteSpace(evt.JsonContent)) { Children.Add(StageElementInstance.FromJson(evt.JsonContent)); } if (evt.Files != null && evt.Files.Any()) { foreach (var file in evt.Files) { Children.Add(file.Clone() as CaseFileItemInstance); } } CreateDateTime = evt.CreateDateTime; UpdateDateTime = evt.CreateDateTime; Version = evt.Version; CasePlanId = evt.CasePlanId; CaseOwner = evt.CaseOwner; if (evt.Parameters != null) { foreach (var kvp in evt.Parameters) { ExecutionContext.SetStrVariable(kvp.Key, kvp.Value); } } }
public static CasePlanInstanceAggregate New(string id, StageElementInstance stage, ICollection <CaseFileItemInstance> caseFiles) { var result = new CasePlanInstanceAggregate(); var evt = new CasePlanInstanceCreatedEvent(Guid.NewGuid().ToString(), id, 0, null, new List <CasePlanInstanceRole>(), new List <CasePlanInstanceRole>(), stage.ToJson(), DateTime.UtcNow, null, string.Empty, new Dictionary <string, string>(), caseFiles); result.Handle(evt); result.DomainEvents.Add(evt); return(result); }
public static CasePlanInstanceAggregate New(string id, CasePlanAggregate caseplan, ICollection <CasePlanInstanceRole> permissions, Dictionary <string, string> parameters) { var result = new CasePlanInstanceAggregate(); var roles = caseplan.Roles.Select(_ => new CasePlanInstanceRole { Id = _.Id, Name = _.Name }).ToList(); var files = caseplan.Files.Select(_ => new CaseFileItemInstance { DefinitionType = _.DefinitionType, EltId = _.Id, Id = CaseFileItemInstance.BuildId(id, _.Id), Name = _.Name }).ToList(); var stage = CMMNParser.ExtractStage(caseplan.XmlContent, id); var json = stage.ToJson(); var evt = new CasePlanInstanceCreatedEvent(Guid.NewGuid().ToString(), id, 0, caseplan.CaseOwner, roles, permissions, json, DateTime.UtcNow, caseplan.AggregateId, caseplan.Name, parameters, files); result.Handle(evt); result.DomainEvents.Add(evt); return(result); }