public async Task <MessageResponse> LeaveGroup(UserGroupActionModel action) { CoreEngine core = new CoreEngine(); var msg = await core.LeaveGroup(_repo, action.User, action.Group); var response = new MessageResponse { Message = msg }; return(response); }
public async Task JoinGroup(string groupName) { //calling Join group API UserGroupActionModel joinGroup = new UserGroupActionModel(); joinGroup.Group = groupName; joinGroup.User = Context.GetHttpContext().Request.Query["UserName"]; var joinGroupPayload = JsonConvert.SerializeObject(joinGroup); // Wrap our JSON inside a StringContent which then can be used by the HttpClient class var joinGrouphttpContent = new StringContent(joinGroupPayload, Encoding.UTF8, "application/json"); var joineGroupUri = new Uri(string.Format(joinGroupUrl, string.Empty)); HttpClient joinGroupClient = new HttpClient(); var joinGroupResponse = await joinGroupClient.PostAsync(joineGroupUri, joinGrouphttpContent); if (joinGroupResponse.IsSuccessStatusCode) { var contentResult = await joinGroupResponse.Content.ReadAsStringAsync(); var responseMessage = JsonConvert.DeserializeObject <MessageResponse>(contentResult); if (responseMessage.Message.Contains("reached maximum number of members"))//"reached maximum number of members" { await Clients.Caller.SendAsync("GroupFull", responseMessage.Message); } else { await Groups.AddToGroupAsync(Context.ConnectionId, groupName); //await Clients.Group(groupName).SendAsync("Send", $"{Context.ConnectionId} has joined the group {groupName}."); await Clients.Group(groupName).SendAsync("SendToGroup", $"{Context.GetHttpContext().Request.Query["UserName"]} is now online {groupName}.", groupName); //calling get group messages API getGroupMessagesUrl = getGroupMessagesUrl + groupName; var groupMessageUri = new Uri(string.Format(getGroupMessagesUrl, string.Empty)); HttpClient getGroupMessagesClient = new HttpClient(); var getGroupMessagesResponse = await getGroupMessagesClient.GetAsync(groupMessageUri); var messagesContent = await getGroupMessagesResponse.Content.ReadAsStringAsync(); IEnumerable <MessageViewModel> groupMessagesVM = await Task.Run(() => JsonConvert.DeserializeObject <IEnumerable <MessageViewModel> >(messagesContent.ToString())); foreach (MessageViewModel msgVM in groupMessagesVM) { await Clients.Caller.SendAsync("PopulateMyGroupMessage", msgVM.GroupName, msgVM.SenderName, msgVM.Content); } } } }
public async Task RemoveFromGroup(string groupName) { await Groups.RemoveFromGroupAsync(Context.ConnectionId, groupName); await Clients.Group(groupName).SendAsync("SendToGroup", $"{Context.ConnectionId} has left the group {groupName}.", groupName); //calling remove from group API UserGroupActionModel userGroup = new UserGroupActionModel(); userGroup.Group = groupName; userGroup.User = Context.GetHttpContext().Request.Query["UserName"]; var userGroupPayload = JsonConvert.SerializeObject(userGroup); // Wrap our JSON inside a StringContent which then can be used by the HttpClient class var userGrouphttpContent = new StringContent(userGroupPayload, Encoding.UTF8, "application/json"); var leaveGroupUri = new Uri(string.Format(leavGroupUrl, string.Empty)); HttpClient leaveGroupClient = new HttpClient(); var leaveGroupResponse = await leaveGroupClient.PostAsync(leaveGroupUri, userGrouphttpContent); }