public void PublishCreditApprovedEvent(CreditApprovedEvent @event) { var message = JsonConvert.SerializeObject(@event); var headers = new Dictionary <string, object>(); headers.Add("type", "CreditApprovedEvent"); _publisher.Publish(message: message, routingKey: "customer.events", headers); }
public async Task Handle(CreditApprovedEvent @event) { Console.WriteLine("CreditApprovedEvent"); // get order by id var order = await _orderService.GetOrderById(@event.OrderId); // update status to approved order.Status = "APPROVED"; // save order await _orderService.UpdateOrderById(@event.OrderId, order); }
public async Task Handle(OrderCreatedEvent @event) { // get customer by id (service) var customer = await _customerService.GetCustomerById(@event.CustomerId); if (customer != null) { // check if total credit <= available credit (method) if (customer.AvailableCredit >= @event.TotalCredit) { // TODO remove totalCredit from AvailableCredit. var creditApprovedEvent = new CreditApprovedEvent ( id: Guid.NewGuid(), timeStamp: DateTime.Now, orderId: @event.OrderId ); // send approved event _publisher.PublishCreditApprovedEvent(creditApprovedEvent); } else { var creditRejectedEvent = new CreditRejectedEvent ( id: Guid.NewGuid(), timeStamp: DateTime.Now, orderId: @event.OrderId ); // send rejected event _publisher.PublishCreditRejectedEvent(creditRejectedEvent); } } else { Console.WriteLine($"Customer with {@event.CustomerId} does not exist!"); } }