Пример #1
0
        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)));
            }
        }
Пример #2
0
        /// <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);
        }
Пример #9
0
        /// <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);
        }
Пример #14
0
        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)));
            }
        }
Пример #15
0
        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);
        }