Example #1
0
        /// <summary>
        /// Execute handler
        /// </summary>
        /// <typeparam name="TResult"></typeparam>
        /// <param name="process"></param>
        /// <param name="processType"></param>
        /// <param name="args"></param>
        /// <returns></returns>
        public TResult Execute <TResult>(IBaseProcess <TResult> process, Type processType, params object[] args) where TResult : VoidResult, new()
        {
            // get authorize attrigute
            var attributes = processType.GetCustomAttributes(typeof(SignalsAuthorizeAttribute), false).Cast <SignalsAuthorizeAttribute>().ToList();

            // if no attribute is present the request is valid
            if (!attributes.Any())
            {
                return(Next.Execute(process, processType, args));
            }

            var correctMethod = false;

            foreach (var attribute in attributes)
            {
                // try authorize the user
                correctMethod |= attribute.Authorize(processType.Name);
            }

            if (!correctMethod)
            {
                return(VoidResult.FaultedResult <TResult>(new AuthorizationErrorInfo()));
            }

            return(Next.Execute(process, processType, args));
        }
Example #2
0
        /// <summary>
        /// Execute handler
        /// </summary>
        /// <typeparam name="TResult"></typeparam>
        /// <param name="process"></param>
        /// <param name="processType"></param>
        /// <param name="args"></param>
        /// <returns></returns>
        public TResult Execute <TResult>(IBaseProcess <TResult> process, Type processType, params object[] args) where TResult : VoidResult, new()
        {
            var strategyHandler = SystemBootstrapper.GetInstance <IStrategyHandler>();

            if (strategyHandler.IsNull() || !strategyHandler.AutoHandleErrorProcesses)
            {
                try
                {
                    return(Next.Execute(process, processType, args));
                }
                catch (Exception ex)
                {
                    return(VoidResult.FaultedResult <TResult>(ex));
                }
            }

            var strategyResult = strategyHandler.Execute(() => Next.Execute(process, processType, args));

            if (strategyResult.Exception != null)
            {
                return(VoidResult.FaultedResult <TResult>(strategyResult.Exception));
            }

            return(strategyResult.Result);
        }
Example #3
0
        /// <summary>
        /// Execute handler
        /// </summary>
        /// <typeparam name="TResult"></typeparam>
        /// <param name="process"></param>
        /// <param name="processType"></param>
        /// <param name="args"></param>
        /// <returns></returns>
        public TResult Execute <TResult>(IBaseProcess <TResult> process, Type processType, params object[] args) where TResult : VoidResult, new()
        {
            // Get guard attribute
            var guardAttributes = processType.GetCustomAttributes(typeof(SignalsGuardAttribute), false).Cast <SignalsGuardAttribute>().ToList();

            foreach (var guardAttribute in guardAttributes)
            {
                var guardResult = guardAttribute.Check(process.BaseContext);
                if (guardResult != null)
                {
                    return(VoidResult.FaultedResult <TResult>(guardResult));
                }
            }

            return(Next.Execute(process, processType, args));
        }
Example #4
0
        /// <summary>
        /// Handle the request
        /// </summary>
        /// <returns></returns>
        public TResponse Dispatch <T1, T2, T3, TResponse>(Type processType, T1 obj1, T2 obj2, T3 obj3)
            where TResponse : VoidResult, new()
        {
            // create instance
            var process = ProcessFactory.Create <TResponse>(processType);

            if (process.IsNull())
            {
                return(VoidResult.FaultedResult <TResponse>());
            }

            // execute process
            var response = ProcessExecutor.Execute(process, obj1, obj2, obj3);

            return(response);
        }
Example #5
0
        /// <summary>
        /// Handle the request
        /// </summary>
        /// <returns></returns>
        public TResponse Dispatch <TProcess, T1, T2, TResponse>(T1 obj1, T2 obj2)
            where TProcess : IBaseProcess <TResponse>, new()
            where TResponse : VoidResult, new()
        {
            // create instance
            var process = ProcessFactory.Create <TResponse>(typeof(TProcess));

            if (process.IsNull())
            {
                return(VoidResult.FaultedResult <TResponse>());
            }

            // execute process
            var response = ProcessExecutor.Execute(process, obj1, obj2);

            return(response);
        }
Example #6
0
 /// <summary>
 /// Return faulted result
 /// </summary>
 /// <param name="voidResult"></param>
 /// <returns></returns>
 protected TResponse Fail(VoidResult voidResult)
 {
     return(VoidResult.FaultedResult <TResponse>(voidResult?.ErrorMessages?.ToArray()));
 }
Example #7
0
 /// <summary>
 /// Return faulted result
 /// </summary>
 /// <returns></returns>
 protected TResponse Fail()
 {
     return(VoidResult.FaultedResult <TResponse>());
 }
Example #8
0
 /// <summary>
 /// Return faulted result
 /// </summary>
 /// <param name="failCauses"></param>
 /// <returns></returns>
 protected TResponse Fail(params IErrorInfo[] failCauses)
 {
     return(VoidResult.FaultedResult <TResponse>(failCauses));
 }
Example #9
0
 /// <summary>
 /// Return faulted result
 /// </summary>
 /// <param name="failCause"></param>
 /// <returns></returns>
 protected TResponse Fail(Exception failCause)
 {
     return(VoidResult.FaultedResult <TResponse>(failCause));
 }