Ejemplo n.º 1
0
        public async Task <ActionResult <ICollection <RoomModel> > > GetRooms(
            [FromHeader(Name = "notifications-connection-id")][Required] string connectionId)
        {
            var userId = _identityService.GetUserIdentity();

            var roomsResult = await _roomsService.GetAllAsync(userId);

            if (!roomsResult.Succeeded)
            {
                return(BadRequest(roomsResult.Errors));
            }

            // subscribe
            var rooms = new List <Grpc.Clients.Notifications.Models.Room>();

            foreach (var roomModel in roomsResult.Data)
            {
                var room = new Grpc.Clients.Notifications.Models.Room
                {
                    Id         = roomModel.Id,
                    MembersIds = roomModel.Members.Select(m => m.Id).ToArray()
                };

                rooms.Add(room);
            }

            await _notificationsGrpcService.SubscribeToRoomsUpdatesAsync(userId, connectionId, rooms.ToArray());

            // return
            return(Ok(roomsResult.Data));
        }