private MessengerUserDetailsViewModel GenerateAnonymousUser(MessengerRequestViewModel request) { defaultName = Context.ConnectionId; var user = new MessengerUserDetailsViewModel() { Name = request.UserName ?? defaultName, Avatar = request.Avatar ?? defaultAvatar, ConnectionId = Context.ConnectionId, CreatedDate = DateTime.UtcNow, MyRooms = new List <MessengerRoomViewModel>(), MyTeams = new List <MessengerTeamViewModel>() }; return(user); }
public async Task HubConnect(MessengerRequestViewModel request) { string errorMsg = string.Empty; request.ConnectionId = Context.ConnectionId; RepositoryResponse <MessengerUserDetailsViewModel> result = new RepositoryResponse <MessengerUserDetailsViewModel>(); if (string.IsNullOrEmpty(request.UserName)) { var user = GenerateAnonymousUser(request); result.Data = user; result.IsSucceed = true; } else { result = await MessengerUserDetailsViewModel.JoinChatAsync(request); } string action = Enum.GetName(typeof(MessageReponseKey), MessageReponseKey.Connect); result.Status = result.IsSucceed ? 1 : 0; if (result.IsSucceed) { result.ResponseKey = action; var user = result.Data; //Users.Add(new Swastika.Domain.Core.Models.SignalRClient() //{ // UserId = user.Id, // NickName = user.Name, // ConnectionId = user.ConnectionId, // JoinedDate = DateTime.UtcNow //} // ); await Clients.Client(Context.ConnectionId).SendAsync(receiveMethod, result); await UpdateOnlineStatus(user.MyRooms, user.Id, true); } else { await Clients.Client(Context.ConnectionId).SendAsync(receiveMethod, result); } }