Пример #1
0
        public async Task EmitBookingRequestPlacedEvent(BookingRequestPlacedEvent @event)
        {
            using (IConnection conn = _connectionFactory.CreateConnection())
            {
                using (IModel channel = conn.CreateModel())
                {
                    channel.QueueDeclare(
                        queue: BookingRequestPlacedEventsQueueName,
                        durable: false,
                        exclusive: false,
                        autoDelete: false,
                        arguments: null
                        );

                    string jsonPayload = JsonConvert.SerializeObject(@event);
                    var    body        = Encoding.UTF8.GetBytes(jsonPayload);
                    channel.BasicPublish(
                        exchange: "",
                        routingKey: BookingRequestPlacedEventsQueueName,
                        basicProperties: null,
                        body: body
                        );
                }
            };
        }
        public async Task <Guid> BookProperty(BookingRequest request)
        {
            var bookingRequestPlacedEvent = new BookingRequestPlacedEvent()
            {
                Timestamp  = DateTime.UtcNow,
                RequestId  = Guid.NewGuid(),
                PropertyId = request.PropertyId,
                CustomerId = request.CustomerId,
                From       = request.From,
                To         = request.To
            };

            await _eventEmmiter.EmitBookingRequestPlacedEvent(bookingRequestPlacedEvent);

            return(bookingRequestPlacedEvent.RequestId);
        }