Newer
Older
BlazorKafkaSignalR / src / BlazingPizza.Server / Customer / CustomerOrderHub.cs
@Derek Comartin Derek Comartin on 1 Jun 2021 972 bytes Init
using System.Security.Claims;
using System.Threading.Tasks;
using Microsoft.AspNetCore.SignalR;
using Microsoft.EntityFrameworkCore;

namespace BlazingPizza.Server.Customer
{
    public class CustomerOrderHub : Hub
    {
        private readonly PizzaStoreContext _db;

        public CustomerOrderHub(PizzaStoreContext db)
        {
            _db = db;
        }

        public override async Task OnConnectedAsync()
        {
            await base.OnConnectedAsync();
        }

        private string GetUserId()
        {
            return Context.User.FindFirstValue(ClaimTypes.NameIdentifier);
        }

        public async Task WatchOrder(int orderId)
        {
            var userId = GetUserId();
            var exists = await _db.Orders.AnyAsync(x => x.UserId == userId && x.OrderId == orderId);
            if (exists)
            {
                await Groups.AddToGroupAsync(Context.ConnectionId, orderId.ToString());
            }
        }
    }
}