public async Task <IEnumerable <FlowModel> > GetAll()
        {
            var result = await _unitOfWork.Flows.GetAll();

            var flowList = new List <FlowModel>();

            foreach (var entity in result)
            {
                var model = new FlowModel();
                model.Id     = entity.Id;
                model.Name   = entity.Name;
                model.States = new List <FlowStateModel>();
                var flowStates = await _unitOfWork.FlowStates.GetStatesByFlowId(model.Id);

                foreach (var flowState in flowStates)
                {
                    var state = await _unitOfWork.States.Get(flowState.StateId);

                    var stateModel = new FlowStateModel();
                    stateModel.StateId = state.Id;
                    stateModel.Order   = flowState.Order;
                    stateModel.Name    = state.Name;
                    model.States.Add(stateModel);
                }
                flowList.Add(model);
            }
            return(flowList);
        }
Beispiel #2
0
        public async void TaskNext()
        {
            var taskAggregate = new TaskAggregate();

            taskAggregate.Id   = Guid.NewGuid();
            taskAggregate.Name = "Test";

            var testFlow = new FlowModel {
                Id = Guid.NewGuid(), Name = "TestFlow"
            };

            testFlow.States = new List <FlowStateModel>();
            var state1 = new FlowStateModel();

            state1.Name    = "State1";
            state1.Order   = 1;
            state1.StateId = Guid.NewGuid();
            testFlow.States.Add(state1);
            var state2 = new FlowStateModel();

            state2.Name    = "State2";
            state2.Order   = 2;
            state2.StateId = Guid.NewGuid();
            testFlow.States.Add(state2);
            var state3 = new FlowStateModel();

            state3.Name    = "State3";
            state3.Order   = 3;
            state3.StateId = Guid.NewGuid();
            testFlow.States.Add(state3);
            taskAggregate.AssignFlow(testFlow);
            taskAggregate.Next();
            Assert.Same(taskAggregate.ActiveState, state2);
        }
        private async Task <TaskAggregate> PrepareTaskAggregate(Guid taskId)
        {
            var task = await _unitOfWork.Tasks.Get(taskId);

            if (task.FlowId == null)
            {
                return(null);
            }
            var aggregate = new TaskAggregate();

            aggregate.Id   = taskId;
            aggregate.Name = task.Name;

            var flow = await _unitOfWork.Flows.Get((Guid)task.FlowId);

            var flowModel = new FlowModel {
                Id = flow.Id, Name = flow.Name
            };

            flowModel.States = new List <FlowStateModel>();
            var stateEntities = await _unitOfWork.FlowStates.GetStatesByFlowId(flow.Id);

            foreach (var entity in stateEntities)
            {
                var state = await _unitOfWork.States.Get(entity.StateId);

                var flowstate = new FlowStateModel {
                    Name = state.Name, Order = entity.Order, StateId = state.Id
                };
                flowModel.States.Add(flowstate);
            }
            aggregate.Flow = flowModel;

            aggregate.TaskHistory = new List <FlowStateModel>();
            var historyEntity = await _unitOfWork.TaskHistories.GetByTaskId(taskId);

            foreach (var entity in historyEntity)
            {
                var state = await _unitOfWork.States.Get(entity.StateId);

                var flowstate = new FlowStateModel {
                    Name = state.Name, Order = entity.Order, StateId = state.Id
                };
                aggregate.TaskHistory.Add(flowstate);
            }

            if (aggregate.TaskHistory.Any())
            {
                aggregate.ActiveState = aggregate.TaskHistory.MaxBy(x => x.Order).First();
            }

            return(aggregate);
        }
        public async Task <FlowModel> Get(Guid id)
        {
            var result = await _unitOfWork.Flows.Get(id);

            var model = new FlowModel();

            model.Id     = result.Id;
            model.Name   = result.Name;
            model.States = new List <FlowStateModel>();
            var flowStates = await _unitOfWork.FlowStates.GetStatesByFlowId(model.Id);

            foreach (var flowState in flowStates)
            {
                var state = await _unitOfWork.States.Get(flowState.StateId);

                var stateModel = new FlowStateModel();
                stateModel.StateId = state.Id;
                stateModel.Order   = flowState.Order;
                stateModel.Name    = state.Name;
                model.States.Add(stateModel);
            }
            return(model);
        }
 private void AddHistory(FlowStateModel state)
 {
     TaskHistory.Add(state);
 }