示例#1
0
        public async Task <FlowResult <FlowTransition> > CreateFlowTransitionAsync(InitFlowTransitionModel model)
        {
            var set      = StateManager.GetFlowSet <FlowTransition>();
            var stateSet = StateManager.GetFlowSet <FlowState>();

            var source = await stateSet.GetByIdAsync(model.SourceId);

            if (source == null)
            {
                return(FlowResult <FlowTransition>
                       .Failed(new FlowError(FlowErrors.ItemNotFound, nameof(source))));
            }

            var destination = await stateSet.GetByIdAsync(model.DestinationId);

            if (destination == null)
            {
                return(FlowResult <FlowTransition>
                       .Failed(new FlowError(FlowErrors.ItemNotFound, nameof(destination))));
            }

            var entity = FlowEntity.InitializeType(new FlowTransition()
            {
                Name           = model.Name,
                Title          = model.Title,
                SourceId       = source.Id,
                DestinationId  = destination.Id,
                TransitionType = model.TransitionType,
                TypeId         = source.TypeId,
            });

            var result = await set.CreateAsync(entity);

            return(FlowResult <FlowTransition> .Successful(result));
        }
示例#2
0
        public async Task IntiFlowTransition_WithCorrectModel_MustInitialize()
        {
            //Arrange
            var stateManager  = new MockState().MockStateManager();
            var flowManager   = new ManagerFactory().GetFlowManager(stateManager);
            var flowType      = MockData.GetFlowTypes()[0];
            var approve1State = MockData.GetFlowStates()
                                .ToList().FirstOrDefault(x => x.Name == "Approve1");
            var activeState = MockData.GetFlowStates()
                              .ToList().FirstOrDefault(x => x.Name == "Active");

            var initModel = new InitFlowTransitionModel()
            {
                Name           = "FinalApprove",
                Title          = "FinalApprove",
                SourceId       = approve1State.Id,
                DestinationId  = activeState.Id,
                TransitionType = FlowTransitionTypes.Reject,
                TypeId         = flowType.Id
            };
            //Act
            var act = await flowManager.InitFlowTransitionAsync(initModel);

            //Assert
            LogTestInfo(initModel, act);
            Assert.True(act.Succeeded);
            Assert.NotNull(act.Result);
        }
示例#3
0
        public async Task IntiFlowTransition_WithExistingTransition_MustInitializeAndWarn()
        {
            //Arrange
            var stateManager = new MockState().MockStateManager();
            var flowManager  = new ManagerFactory().GetFlowManager(stateManager);
            var flowType     = MockData.GetFlowTypes()[0];
            var reviewState  = MockData.GetFlowStates()
                               .ToList().FirstOrDefault(x => x.Name == "Review");
            var closeState = MockData.GetFlowStates()
                             .ToList().FirstOrDefault(x => x.Name == "Close");

            var initModel = new InitFlowTransitionModel()
            {
                Name           = "RejectTest",
                Title          = "RejectTest",
                SourceId       = reviewState.Id,
                DestinationId  = closeState.Id,
                TransitionType = FlowTransitionTypes.Reject,
                TypeId         = flowType.Id
            };
            //Act
            var act = await flowManager.InitFlowTransitionAsync(initModel);

            //Assert
            LogTestInfo(initModel, act);
            Assert.True(act.Succeeded);
            Assert.NotEmpty(act.Warns);
        }
        public async Task <IActionResult> Create(InitFlowTransitionModel model)
        {
            var result = await FlowManager.InitFlowTransitionAsync(model);

            HandleFlowResult(result);
            return(RedirectToAction(nameof(Create), new { flowStateId = model.SourceId }));
        }
        public async Task <FlowResult <FlowTransition> > InitFlowTransitionAsync(InitFlowTransitionModel initModel)
        {
            var result = await HandleRequestAsync(new InitFlowTransitionRequest(TransitionService), initModel);

            return(result);
        }