public IHttpActionResult Put(SubplanDTO subplanDto) { using (var uow = ObjectFactory.GetInstance <IUnitOfWork>()) { if (string.IsNullOrEmpty(subplanDto.Name)) { ModelState.AddModelError("Name", "Name cannot be null"); } if (!ModelState.IsValid) { return(BadRequest("Validation failed for posted Subplan")); } //TODO invalid mappings prevent this line from running //fix invalid automapper configurations //var curSubPlanDO = Mapper.Map<SubrouteDTO, SubrouteDO>(SubplanDTO); var curSubPlanDO = new SubplanDO(false) { Id = (Guid)subplanDto?.SubPlanId.Value, ParentPlanNodeId = subplanDto.PlanId, RootPlanNodeId = subplanDto.PlanId, Name = subplanDto.Name }; _subplan.Update(uow, curSubPlanDO); uow.SaveChanges(); return(Ok(Mapper.Map <SubplanDO, SubplanDTO>(curSubPlanDO))); } }
/// <summary> /// Create Subroute entity. /// </summary> public void Create(IUnitOfWork uow, SubplanDO subplan) { if (subplan == null) { throw new ArgumentNullException(nameof(subplan)); } subplan.Fr8Account = _security.GetCurrentAccount(uow); subplan.CreateDate = DateTime.UtcNow; subplan.LastUpdated = subplan.CreateDate; var curPlan = uow.PlanRepository.GetById <PlanDO>(subplan.RootPlanNodeId); if (curPlan == null) { throw new MissingObjectException($"Plan with Id {subplan.RootPlanNodeId} doesn't exist"); } var curPlanNode = uow.PlanRepository.GetById <PlanNodeDO>(subplan.ParentPlanNodeId); if (curPlanNode == null) { throw new MissingObjectException($"Parent plan-node with Id {subplan.ParentPlanNodeId} doesn't exist"); } subplan.RootPlanNode = curPlan; subplan.ParentPlanNode = curPlanNode; curPlanNode.AddChildWithDefaultOrdering(subplan); }
public static PlanDO TestPlanWithStartingSubPlanAndActivityList() { var curPlanDO = new PlanDO { Id = GetTestGuidById(1), Description = "DO-1124 Proper deletion of Plan", Name = "TestPlanWithStartingSubPlan", PlanState = PlanState.Executing, }; var curSubPlanDO = new SubplanDO() { Id = GetTestGuidById(2), Name = string.Format("curSubPlanDO-{0}", 1), ParentPlanNode = curPlanDO, StartingSubPlan = true }; curPlanDO.ChildNodes.Add(curSubPlanDO); var curImmediateActionList = FixtureData.TestActivityList_ImmediateActivities(); foreach (var node in curImmediateActionList) { curSubPlanDO.ChildNodes.Add(node); } return(curPlanDO); }
public static SubplanDO TestSubPlanDO1() { var SubPlanDO = new SubplanDO { Id = GetTestGuidById(50), }; return(SubPlanDO); }
public static SubplanDO TestSubPlanDO4() { SubplanDO subplanDO = new SubplanDO() { Id = GetTestGuidById(1), }; return(subplanDO); }
public static SubplanDO TestSubPlanHealthDemo(Guid parentNodeId) { var SubPlanDO = new SubplanDO { Id = Guid.NewGuid(), ParentPlanNodeId = parentNodeId, RootPlanNodeId = parentNodeId, }; return(SubPlanDO); }
public static SubplanDO TestSubPlanHealthDemo() { var SubPlanDO = new SubplanDO { Id = GetTestGuidById(50), ParentPlanNodeId = GetTestGuidById(23), RootPlanNodeId = GetTestGuidById(23), }; return(SubPlanDO); }
public static SubplanDO TestSubPlanDO2() { SubplanDO subplanDO = new SubplanDO() { Id = GetTestGuidById(51), Name = "TestName", ParentPlanNodeId = GetTestGuidById(50), RootPlanNodeId = GetTestGuidById(50), StartingSubPlan = true }; return(subplanDO); }
/// <summary> /// Update Subroute entity. /// </summary> public void Update(IUnitOfWork uow, SubplanDO subplan) { if (subplan == null) { throw new Exception("Updating logic was passed a null SubPlanDO"); } var curSubPlan = uow.PlanRepository.GetById <SubplanDO>(subplan.Id); if (curSubPlan == null) { throw new MissingObjectException($"Subplan with Id {subplan.Id} doesn't exist"); } curSubPlan.Name = subplan.Name; uow.SaveChanges(); }
public static PlanDO TestPlanWithStartingSubPlans_ID0() { var curPlanDO = new PlanDO { Description = "DO-1124 Proper deletion of Plan", Name = "TestPlanWithStartingSubPlans_ID0", PlanState = PlanState.Executing, }; var curSubPlanDO = new SubplanDO() { Name = string.Format("curSubPlanDO-{0}", 1), ParentPlanNode = curPlanDO, StartingSubPlan = true }; curPlanDO.ChildNodes.Add(curSubPlanDO); return(curPlanDO); }
public static PlanDO TestPlanWithSubPlans() { var curPlanDO = new PlanDO { Id = GetTestGuidById(1), Description = "DO-982 Process Node Template Test", Name = "PlanWithSubPlans", PlanState = PlanState.Executing, }; for (int i = 1; i <= 4; ++i) { var curSubPlanDO = new SubplanDO() { Id = GetTestGuidById(i), Name = string.Format("curSubPlanDO-{0}", i), ParentPlanNode = curPlanDO, }; curPlanDO.ChildNodes.Add(curSubPlanDO); } return(curPlanDO); }
public static PlanDO TestPlanWithStartingSubPlan() { var curPlanDO = new PlanDO { Id = GetTestGuidById(1), Description = "DO-1124 Proper deletion of Plan", Name = "TestPlanWithStartingSubPlans", PlanState = PlanState.Executing, }; var curSubPlanDO = new SubplanDO() { Id = GetTestGuidById(1), Name = string.Format("curSubPlanDO-{0}", 1), ParentPlanNode = curPlanDO, StartingSubPlan = true }; curPlanDO.ChildNodes.Add(curSubPlanDO); //FixtureData.TestActionList1 .TestActionList_ImmediateActions(); return(curPlanDO); }
public static PlanDO TestPlanNoMatchingParentActivity() { var curPlanDO = new PlanDO { Id = GetTestGuidById(1), Description = "DO-1040 Process Template Test", Name = "Poress template", PlanState = PlanState.Executing, }; for (int i = 2; i <= 3; ++i) { var curSubPlanDO = new SubplanDO() { Id = GetTestGuidById(i), Name = string.Format("curSubPlanDO-{0}", i), ParentPlanNode = curPlanDO, ChildNodes = FixtureData.TestActivityListParentActivityID12() }; curPlanDO.ChildNodes.Add(curSubPlanDO); } return(curPlanDO); }
public async Task <PlanNoChildrenDTO> CreateFromTemplate(PlanDTO plan, string userId) { var planDo = new PlanDO() { Category = plan.Category, CreateDate = DateTimeOffset.Now, Fr8AccountId = userId, Id = Guid.NewGuid(), PlanState = PlanState.Inactive, Description = plan.Description, Name = plan.Name, Visibility = PlanVisibility.Standard, }; var idsMap = new Dictionary <Guid, Guid>(); idsMap[plan.Id] = planDo.Id; if (plan.SubPlans != null) { foreach (var fullSubplanDto in plan.SubPlans) { var subplan = new SubplanDO(plan.StartingSubPlanId == fullSubplanDto.SubPlanId); subplan.Id = Guid.NewGuid(); subplan.Name = fullSubplanDto.Name; subplan.Fr8AccountId = userId; if (fullSubplanDto.SubPlanId != null) { idsMap[fullSubplanDto.SubPlanId.Value] = subplan.Id; } planDo.AddChildWithDefaultOrdering(subplan); if (fullSubplanDto.Activities != null) { foreach (var activityDto in fullSubplanDto.Activities) { var activity = AutoMapper.Mapper.Map <ActivityDO>(activityDto); foreach (var descendant in activity.GetDescendants()) { var oldId = descendant.Id; descendant.Id = Guid.NewGuid(); idsMap[oldId] = descendant.Id; } subplan.AddChild(activity, activityDto.Ordering); } } } foreach (var activity in planDo.GetDescendants().OfType <ActivityDO>()) { ActivityTemplateDO activityTemplate; if (!_activityTemplate.TryGetByKey(activity.ActivityTemplateId, out activityTemplate)) { throw new KeyNotFoundException($"Activity '{activity.Id}' use activity template '{activity.ActivityTemplate?.Name}' with id = '{activity.ActivityTemplateId}' that is unknown to this Hub"); } activity.CrateStorage = _crateManager.EmptyStorageAsStr(); // UpdateCrateStorage(activity.CrateStorage, idsMap); } } using (var uow = _unitOfWorkFactory.Create()) { uow.PlanRepository.Add(planDo); uow.SaveChanges(); } var levels = new List <List <ActivityDO> >(); CollectActivitiesByLevels(planDo, levels, 0); foreach (var level in levels) { await Task.WhenAll(level.Select(async x => { using (var uow = _unitOfWorkFactory.Create()) { if (uow.PlanRepository.GetById <PlanNodeDO>(x.Id) == null) { return; } await _activityService.Configure(uow, userId, x); } })); } using (var uow = _unitOfWorkFactory.Create()) { return(AutoMapper.Mapper.Map <PlanNoChildrenDTO>(uow.PlanRepository.GetById <PlanDO>(planDo.Id))); } }
public async Task <PlanNodeDO> CreateAndConfigure(IUnitOfWork uow, string userId, Guid activityTemplateId, string label = null, string name = null, int?order = null, Guid?parentNodeId = null, bool createPlan = false, Guid?authorizationTokenId = null, PlanVisibility newPlanVisibility = PlanVisibility.Standard) { if (parentNodeId != null && createPlan) { throw new ArgumentException("Parent node id can't be set together with create plan flag"); } if (parentNodeId == null && !createPlan) { throw new ArgumentException("Either Parent node id or create plan flag must be set"); } // to avoid null pointer exception while creating parent node if label is null if (name == null) { name = userId + "_" + activityTemplateId; } PlanNodeDO parentNode; PlanDO plan = null; if (createPlan) { plan = ObjectFactory.GetInstance <IPlan>().Create(uow, name, ownerId: userId, visibility: newPlanVisibility); plan.ChildNodes.Add(parentNode = new SubplanDO { StartingSubPlan = true, Name = name + " #1" }); } else { parentNode = uow.PlanRepository.GetById <PlanNodeDO>(parentNodeId); if (parentNode is PlanDO) { if (((PlanDO)parentNode).StartingSubplan == null) { parentNode.ChildNodes.Add(parentNode = new SubplanDO { StartingSubPlan = true, Name = name + " #1" }); } else { parentNode = ((PlanDO)parentNode).StartingSubplan; } } } var activity = new ActivityDO { Id = Guid.NewGuid(), ActivityTemplateId = activityTemplateId, CrateStorage = _crateManager.EmptyStorageAsStr(), AuthorizationTokenId = authorizationTokenId }; parentNode.AddChild(activity, order); uow.SaveChanges(); var configuredActivity = await CallActivityConfigure(uow, userId, activity); UpdateActivityProperties(uow, configuredActivity); if (createPlan) { return(plan); } return(activity); }
public static PlanDO TestPlanWithSubscribeEvent() { PlanDO planDO; using (var uow = ObjectFactory.GetInstance <IUnitOfWork>()) { Fr8AccountDO testUser = TestDockyardAccount1(); uow.UserRepository.Add(testUser); planDO = new PlanDO() { Id = GetTestGuidById(23), Description = "HealthDemo Integration Test", Name = "StandardEventTesting", PlanState = PlanState.Executing, Fr8Account = testUser }; uow.PlanRepository.Add(planDO); var actionTemplate = ActivityTemplate(); var containerDO = new ContainerDO() { Id = TestContainer_Id_1(), PlanId = planDO.Id, State = 1 }; using (var crateStorage = ObjectFactory.GetInstance <ICrateManager>().UpdateStorage(() => containerDO.CrateStorage)) { crateStorage.Add(GetEnvelopeIdCrate()); } uow.ContainerRepository.Add(containerDO); uow.ActivityTemplateRepository.Add(actionTemplate); SubplanDO subPlaneDO = new SubplanDO() { ParentPlanNode = planDO, StartingSubPlan = true }; planDO.ChildNodes = new List <PlanNodeDO> { subPlaneDO }; planDO.StartingSubplan = subPlaneDO; uow.ActivityTemplateRepository.Add(actionTemplate); var actionDo = new ActivityDO() { ParentPlanNode = planDO, ParentPlanNodeId = planDO.Id, Id = GetTestGuidById(1), ActivityTemplateId = actionTemplate.Id, ActivityTemplate = actionTemplate, Ordering = 1 }; ICrateManager crate = ObjectFactory.GetInstance <ICrateManager>(); var serializer = new JsonSerializer(); EventSubscriptionCM eventSubscriptionMS = new EventSubscriptionCM(); eventSubscriptionMS.Subscriptions = new List <string>(); eventSubscriptionMS.Subscriptions.Add("DocuSign Envelope Sent"); eventSubscriptionMS.Subscriptions.Add("Write to SQL AZure"); using (var crateStorage = ObjectFactory.GetInstance <ICrateManager>().GetUpdatableStorage(actionDo)) { crateStorage.Add(Crate.FromContent("Standard Event Subscriptions", eventSubscriptionMS)); } subPlaneDO.ChildNodes.Add(actionDo); uow.SaveChanges(); } return(planDO); }