private static void RegisterCommandHandlers(IConcertService concertService, CommandHandlerCollection commandHandlers)
        {
            var factory = new SimpleEventHandlerFactory();

            commandHandlers.AddHandler(typeof (PurchaseTicketCommand), factory.CreateEventHandler(concertService,
                (IConcertService service, IPurchaseTicketCommand cmd, long seq, bool endOfBatch) =>
                {
                    concertService.PurchaseTicket(/*IPurchaseTicketCommand data*/);
                }));

            commandHandlers.AddHandler(typeof(CancelTicketCommand), factory.CreateEventHandler(concertService,
                (IConcertService service, ICancelTicketCommand cmd, long seq, bool endOfBatch) =>
                {
                    concertService.CancelTicket(/*ICancelTicketCommand data*/);
                }));

            commandHandlers.AddHandler(typeof(CreateConcertCommand), factory.CreateEventHandler(concertService,
                (IConcertService service, ICreateConcertCommand cmd, long seq, bool endOfBatch) =>
                {
                    concertService.CreateConcert(/*ICreateConcertCommand data*/);
                }));
        }
예제 #2
0
        public CreateUpdateConcertResponse CreateConcert([FromUri] bool tweetConcert, [FromBody] Concert concert)
        {
            var requestId = Guid.NewGuid().ToString("N");

            RequestValidator.ValidateWebRequestHeaders(Request);

            if (concert == null)
            {
                throw new ClientRequestException(HttpStatusCode.BadRequest, "Failed to parse Concert.");
            }

            if (!concert.ValidateConcert())
            {
                throw new ClientRequestException(HttpStatusCode.BadRequest, "One or more Concert property is null or incorrect.");
            }

            var responseModel = _concertService.CreateConcert(requestId, concert);

            responseModel.TweetUrl = tweetConcert
                ? _tweetService.TweetConcert(concert)
                : string.Empty;

            return(responseModel);
        }