示例#1
0
        /// <summary>
        ///     Defines if the request is valid.
        ///     This method implements ValidatorFactory.GetValidator of the request to validate the request using its concrete
        ///     implementation
        /// </summary>
        /// <typeparam name="T">IRequest</typeparam>
        /// <typeparam name="TY">IResponse</typeparam>
        /// <param name="request">Input request</param>
        /// <param name="response">The response that is generated from this request</param>
        /// <param name="userContext"></param>
        /// <returns></returns>
        public static bool IsRequestInvalid <T, TY>(this T request, TY response, IUserContextInfo userContext = null)
            where T : IRequest
            where TY : IResponse
        {
            try
            {
                var validator = ContainerFactory.GetValidator <T>();

                if (validator == null)
                {
                    return(false);
                }

                if (validator is ValidatorBase <T> contextValidator && userContext != null)
                {
                    contextValidator.UserContext = userContext;
                }

                var validationResult = validator.Validate(request);

                if (validationResult.IsValid)
                {
                    return(false);
                }

                response.Merge(validationResult);
                return(true);
            }
            catch (Exception ex)
            {
                response.Status = HttpStatusCode.InternalServerError;
                response.Messages.Add(ex.GetExceptionResponse());
                return(true);
            }
        }
示例#2
0
 public ContextRequest(IUserContextInfo contextInfo)
 {
     UserId   = contextInfo?.UserId;
     Username = contextInfo?.Username;
 }
示例#3
0
 public void SetContextInfo(IUserContextInfo contextInfo)
 {
     ContextInfo = contextInfo;
 }