Ejemplo n.º 1
0
        public async Task <FlowResult <PagedList <FlowType> > > GetPagedTypesByEntityAsync(Type entityType,
                                                                                           PageOptions pageOptions)
        {
            try
            {
                Logger.LogInfo("try to get paged list of types.");
                var typeSet  = StateManager.GetFlowSet <FlowType>();
                var stateSet = StateManager.GetFlowSet <FlowState>();
                var query    = from type in typeSet.GetAll()
                               let states = stateSet.GetAll().Where(x => x.TypeId == type.Id)
                                            where type.EntityType.Equals(entityType.FullName)
                                            select new FlowType()
                {
                    CreatedAt         = type.CreatedAt,
                    Deleted           = type.Deleted,
                    EntityPayloadType = type.EntityPayloadType,
                    EntityType        = type.EntityType,
                    Id         = type.Id,
                    ModifiedAt = type.ModifiedAt,
                    Name       = type.Name,
                    States     = states.ToList()
                };
                var pagedList = await typeSet.ToPagedListAsync(query, pageOptions);

                var result = new FlowResult <PagedList <FlowType> >();
                result.SetResult(pagedList);
                Logger.LogInfo($"paged list of types with count '{pagedList.Count}' fetched.");
                return(result);
            }
            catch (Exception ex)
            {
                Logger.LogError(ex.Message);
                return(FlowResult <PagedList <FlowType> > .Failed(new FlowError(ex.Message)));
            }
        }
Ejemplo n.º 2
0
        public async Task <FlowResult <IEnumerable <FlowType> > > GetTypesAsync()
        {
            try
            {
                Logger.LogInfo("try to get list of types.");
                var typeSet  = StateManager.GetFlowSet <FlowType>();
                var stateSet = StateManager.GetFlowSet <FlowState>();

                var query = from type in typeSet.GetAll()
                            let states = stateSet.GetAll().Where(x => x.TypeId == type.Id)
                                         select new FlowType()
                {
                    CreatedAt         = type.CreatedAt,
                    Deleted           = type.Deleted,
                    EntityPayloadType = type.EntityPayloadType,
                    EntityType        = type.EntityType,
                    Id         = type.Id,
                    ModifiedAt = type.ModifiedAt,
                    Name       = type.Name,
                    States     = states.ToList()
                };

                var types = await typeSet.ToListAsync(query);

                var result = new FlowResult <IEnumerable <FlowType> >();
                result.SetResult(types);
                Logger.LogInfo($"list of types with count '{types.Count()}' fetched.");
                return(result);
            }
            catch (Exception ex)
            {
                Logger.LogError(ex.Message);
                return(FlowResult <IEnumerable <FlowType> > .Failed(new FlowError(ex.Message)));
            }
        }
        public async Task <FlowResult <FlowState> > GetStateAsync(
            Expression <Func <FlowState, bool> > expression)
        {
            try
            {
                Logger.LogInfo("try to get a state of flow by expression.");
                var stateSet = StateManager.GetFlowSet <FlowState>();
                var state    = await stateSet.FirstOrDefaultAsync(expression);

                if (state == null)
                {
                    Logger.LogWarning("state not exist.");
                    return(FlowResult <FlowState> .Failed(
                               new FlowError(FlowErrors.ItemNotFound, args : nameof(FlowState))));
                }
                var result = new FlowResult <FlowState>();
                result.SetResult(state);
                Logger.LogInfo($"state with id '{state.Id}' fetched.");
                return(result);
            }
            catch (Exception ex)
            {
                Logger.LogError(ex.Message);
                return(FlowResult <FlowState> .Failed(new FlowError(ex.Message)));
            }
        }
        public async Task <FlowResult <FlowInstance> > GetInstanceAsync(
            Expression <Func <FlowInstance, bool> > expression)
        {
            try
            {
                Logger.LogInfo("try to get an instance of flow by expression.");
                var instanceSet = StateManager.GetFlowSet <FlowInstance>();
                var instance    = await instanceSet.FirstOrDefaultAsync(expression);

                if (instance == null)
                {
                    Logger.LogWarning("instance not exist.");
                    return(FlowResult <FlowInstance> .Failed(
                               new FlowError(FlowErrors.ItemNotFound, args : nameof(FlowInstance))));
                }
                var result = new FlowResult <FlowInstance>();
                if (instance.Active == false)
                {
                    Logger.LogWarning("instance is inactive");
                    result.Warns.Add(new FlowWarn(FlowWarns.InstanceInactive));
                }
                result.SetResult(instance);
                Logger.LogInfo($"instance with id '{instance.Id}' fetched.");
                return(result);
            }
            catch (Exception ex)
            {
                Logger.LogError(ex.Message);
                return(FlowResult <FlowInstance> .Failed(new FlowError(ex.Message)));
            }
        }
Ejemplo n.º 5
0
        public async Task <FlowResult <FlowType> > GetTypeAsync(
            Expression <Func <FlowType, bool> > expression)
        {
            try
            {
                Logger.LogInfo("try to get a type of flow by expression.");
                var typeSet  = StateManager.GetFlowSet <FlowType>();
                var stateSet = StateManager.GetFlowSet <FlowState>();

                var query = from type in typeSet.GetAll()
                            let states = stateSet.GetAll().Where(x => x.TypeId == type.Id)
                                         select new FlowType()
                {
                    CreatedAt         = type.CreatedAt,
                    Deleted           = type.Deleted,
                    EntityPayloadType = type.EntityPayloadType,
                    EntityType        = type.EntityType,
                    Id         = type.Id,
                    ModifiedAt = type.ModifiedAt,
                    Name       = type.Name,
                    States     = states.ToList()
                };

                query = query.Where(expression);

                var flowType = await typeSet.FirstOrDefaultAsync(query);

                if (flowType == null)
                {
                    Logger.LogWarning("type not exist.");
                    return(FlowResult <FlowType> .Failed(
                               new FlowError(FlowErrors.ItemNotFound, args : nameof(FlowType))));
                }
                var result = new FlowResult <FlowType>();
                result.SetResult(flowType);
                Logger.LogInfo($"type with id '{flowType.Id}' fetched.");
                return(result);
            }
            catch (Exception ex)
            {
                Logger.LogError(ex.Message);
                return(FlowResult <FlowType> .Failed(new FlowError(ex.Message)));
            }
        }
Ejemplo n.º 6
0
        public async Task <FlowResult <FlowType> > GetTypeByIdAsync(Guid id)
        {
            try
            {
                Logger.LogInfo("try to get a type of flow by id.");
                var typeSet  = StateManager.GetFlowSet <FlowType>();
                var stateSet = StateManager.GetFlowSet <FlowState>();
                var query    = from type in typeSet.GetAll()
                               join state in stateSet.GetAll() on type.Id equals state.TypeId into states
                               where type.Id.Equals(id)
                               select new FlowType()
                {
                    CreatedAt         = type.CreatedAt,
                    Deleted           = type.Deleted,
                    EntityPayloadType = type.EntityPayloadType,
                    EntityType        = type.EntityType,
                    Id         = type.Id,
                    ModifiedAt = type.ModifiedAt,
                    Name       = type.Name,
                    States     = states.ToList()
                };
                var flowType = await typeSet.FirstOrDefaultAsync(query);

                if (flowType == null)
                {
                    Logger.LogWarning("type not exist.");
                    return(FlowResult <FlowType> .Failed(
                               new FlowError(FlowErrors.ItemNotFound, args : nameof(FlowType))));
                }
                var result = new FlowResult <FlowType>();
                result.SetResult(flowType);
                Logger.LogInfo($"type with id '{flowType.Id}' fetched.");
                return(result);
            }
            catch (Exception ex)
            {
                Logger.LogError(ex.Message);
                return(FlowResult <FlowType> .Failed(new FlowError(ex.Message)));
            }
        }
        public async Task <FlowResult <IEnumerable <FlowState> > > GetStatesByTypeIdAsync(Guid flowTypeId)
        {
            try
            {
                Logger.LogInfo($"try to get states of a flow type by id '{flowTypeId}'.");
                var stateSet = StateManager.GetFlowSet <FlowState>();
                var query    = stateSet.GetAll()
                               .Where(x => x.TypeId == flowTypeId);

                var states = await stateSet.ToListAsync(query);

                var result = new FlowResult <IEnumerable <FlowState> >();
                result.SetResult(states);
                Logger.LogInfo($"list of flow states of flow type with id '{flowTypeId}' has been fetched.");
                return(result);
            }
            catch (Exception ex)
            {
                Logger.LogError(ex.Message);
                return(FlowResult <IEnumerable <FlowState> > .Failed(new FlowError(ex.Message)));
            }
        }