public async Task <ActionResult <List <Person> > > PrepareReport(string location) { var persons = await _personRepository.GetAllAsync(); if (!persons.Where(i => i.Addresses.Where(x => x.Location == location).Any()).Any()) { return(BadRequest()); } if (persons == null) { return(BadRequest()); } var publishModel = new PrepareReportEvent(); for (int i = 0; i < persons.Count(); i++) { publishModel.Persons = persons.Select(i => new PersonModel { Id = i.Id, Company = i.Company, FirstName = i.FirstName, LastName = i.LastName, Addresses = i.Addresses.Select(x => new AddressModel { Id = x.Id, AddressType = x.AddressType, Email = x.Email, Location = x.Location, Phone = x.Phone }).ToList() }).ToList(); } publishModel.RequestId = Guid.NewGuid(); publishModel.Location = location; try { _eventBusRabbitMQProducer.PublishPrepareReport(EventBusConstants.PrepareReportQueue, publishModel); } catch (Exception ex) { throw new Exception(ex.Message); } return(Ok()); }
public void PublishPrepareReport(string queueName, PrepareReportEvent publishModel) { //create channel to perform the queue operations using (var channel = _connection.CreateModel()) { channel.QueueDeclare(queue: queueName, durable: false, exclusive: false, autoDelete: false, null); var message = JsonConvert.SerializeObject(publishModel); var body = Encoding.UTF8.GetBytes(message); IBasicProperties properties = channel.CreateBasicProperties(); properties.Persistent = true; properties.DeliveryMode = 2; channel.ConfirmSelect(); channel.BasicPublish(exchange: "", routingKey: queueName, mandatory: true, basicProperties: properties, body: body); channel.WaitForConfirmsOrDie(); channel.ConfirmSelect(); } }