Newer
Older
BlazorKafkaSignalR / src / BlazingPizza.Server / Customer / CustomerOrderEventNotificationHandler.cs
@Derek Comartin Derek Comartin on 1 Jun 2021 1 KB Init
using System.Threading.Tasks;
using BlazingPizza.Events;
using DotNetCore.CAP;
using Microsoft.AspNetCore.SignalR;

namespace BlazingPizza.Server.Customer
{
    public class CustomerOrderEventNotificationHandler : ICapSubscribe
    {
        private readonly IHubContext<CustomerOrderHub> _hubContext;

        public CustomerOrderEventNotificationHandler(IHubContext<CustomerOrderHub> hubContext)
        {
            _hubContext = hubContext;
        }

        [CapSubscribe(nameof(OrderBeingPreparedEvent), Group = nameof(CustomerOrderEventNotificationHandler) + ":" + nameof(OrderBeingPreparedEvent))]
        public async Task Handle(OrderBeingPreparedEvent orderBeingPreparedEvent)
        {
            await _hubContext.Clients.Group(orderBeingPreparedEvent.OrderId.ToString()).SendAsync("OrderBeingPrepared");
        }

        [CapSubscribe(nameof(OrderPickedUpForDeliveryEvent), Group = nameof(CustomerOrderEventNotificationHandler) + ":" + nameof(OrderPickedUpForDeliveryEvent))]
        public async Task Handle(OrderPickedUpForDeliveryEvent orderPickedUpForDeliveryEvent)
        {
            await _hubContext.Clients.Group(orderPickedUpForDeliveryEvent.OrderId.ToString()).SendAsync("OrderPickedUpForDelivery");
        }

        [CapSubscribe(nameof(OrderDeliveredEvent), Group = nameof(CustomerOrderEventNotificationHandler) + ":" + nameof(OrderDeliveredEvent))]
        public async Task Handle(OrderDeliveredEvent orderDeliveredEvent)
        {
            await _hubContext.Clients.Group(orderDeliveredEvent.OrderId.ToString()).SendAsync("OrderDelivered");
        }
    }
}