public async Task HandleCommandAsync(CoffeeService coffee, User user, string commandId, string options, SlackResponse response, ILogger logger = null)
        {
            if (!handlers.TryGetHandler(commandId, out var handlerInfo))
            {
                throw new CommandNotFoundException();
            }

            var command    = handlerInfo.Key;
            var methodInfo = handlerInfo.Value;

            if (command.ForManager && !user.IsManager)
            {
                throw new OnlyForManagerException();
            }

            await(Task) methodInfo.Invoke(this, new object[] { coffee, user, options, response });
        }
Beispiel #2
0
        public async Task <IActionResult> Handle(TestUser user, string commandId)
        {
            if (!handlers.TryGetHandler(commandId, out var handlerInfo))
            {
                return(new BadRequestResult());
            }

            var command    = handlerInfo.Key;
            var methodInfo = handlerInfo.Value;

            if (command.ForManager && !user.Manager)
            {
                return(new BadRequestResult());
            }

            var task = (Task <IActionResult>)methodInfo.Invoke(this, new object[] { user, "" });

            return(await task);
        }