public AuthController(ILogger <AuthController> logger, IConfiguration config, ICommandDispatcher commandDispatcher, IFailureMessageService failureMessageService)
 {
     this.logger                = logger;
     this.config                = config;
     this.commandDispatcher     = commandDispatcher;
     this.failureMessageService = failureMessageService;
 }
        public static IActionResult HandleResult <TResult>(Result <TResult> result, IFailureMessageService failureMessageService)
        {
            switch (result)
            {
            case SuccessResult <TResult> successResult:
                return(new OkObjectResult(successResult.Value));

            case FailureResult <TResult> failureResult:
                switch (failureResult.Code)
                {
                case FailureResultCode.Unauthorized:
                    return(new UnauthorizedResult());

                case FailureResultCode.Forbidden:
                    return(new ForbidResult());

                default:
                    var message = failureMessageService.GetMessageFromResult(failureResult);
                    return(new BadRequestObjectResult(message));
                }

            default:
                throw new InvalidOperationException("internal server error");
            }
        }
 public OrderController(ILogger <OrderController> logger, IQueryDispatcher queryDispatcher, ICommandDispatcher commandDispatcher,
                        IFailureMessageService failureMessageService)
 {
     this.logger                = logger;
     this.queryDispatcher       = queryDispatcher;
     this.commandDispatcher     = commandDispatcher;
     this.failureMessageService = failureMessageService;
 }
 public RestaurantSysAdminController(ILogger <RestaurantSysAdminController> logger, IUserRepository userRepository,
                                     ICommandDispatcher commandDispatcher, IQueryDispatcher queryDispatcher, IFailureMessageService failureMessageService)
 {
     this.logger                = logger;
     this.userRepository        = userRepository;
     this.commandDispatcher     = commandDispatcher;
     this.queryDispatcher       = queryDispatcher;
     this.failureMessageService = failureMessageService;
 }