private dynamic Execute(IEventPublisher eventPublisher, ISessionsRepository sessionsRepository, IMessagesRepository messagesRepository, DeleteMessage command) { var sessionId = new SessionId(command.SessionId); var deleter = sessionsRepository.GetUserIdOfSession(sessionId); if (!deleter.HasValue) { return(Negotiate.WithStatusCode(HttpStatusCode.Forbidden).WithModel("Invalid session")); } var messageId = new MessageId(command.MessageId); var messageToDeleted = messagesRepository.Get(messageId); messageToDeleted.Delete(eventPublisher, deleter.Value); return(Negotiate.WithStatusCode(HttpStatusCode.OK).WithModel("Message deleted")); }