Esempio n. 1
0
        public async Task SendMessage(string socketId, string message)
        {
            if (UserId == null)
            {
                return;
            }

            var chatMessage = await _teamRepository.AddMessageToTeam(UserId, message);

            var team = await _teamRepository.FindOneByUserIdAsync(UserId);

            var teamMembers = await _userRepository.FindManyByUserIdAsync(team.Members.Select(x => x.UserId).ToArray());

            foreach (var memberSocketId in teamMembers.Select(x => x.SocketId).Distinct())
            {
                //if (!member.IsOnline) return;
                await InvokeClientMethodToAllAsync("receiveMessage", memberSocketId, new
                {
                    UserId    = chatMessage.UserId,
                    UserName  = teamMembers.FirstOrDefault(usr => usr.Id == UserId)?.Name ?? "Desconhecido",
                    UserEmail = teamMembers.FirstOrDefault(usr => usr.Id == UserId)?.Email,
                    Message   = chatMessage.Message,
                    SentAt    = chatMessage.SentAt,
                });
            }
        }