public JsonResult GetUserConversation(int id) { if (HttpContext.LoginId() > 0) { using (var c = new WebChat()) { var conv = c.GetConversationBetween( c.Users .Where(u => u.Id == id || u.Id == HttpContext.LoginId() ) ); if (conv == null) { conv = new Conversations(); var p1 = new ConversationParticipants { UserId = HttpContext.LoginId() }; conv.ConversationParticipants.Add(p1); var p2 = new ConversationParticipants { UserId = id }; conv.ConversationParticipants.Add(p2); c.Add(conv); c.SaveChanges(); conv = c.GetConversationBetween( c.Users .Where(u => u.Id == id || u.Id == HttpContext.LoginId() ) ); } return(new JsonResult(new { id = conv.Id })); } } return(new JsonResult("")); }
public async Task <Tuple <HttpStatusCode, int> > CreateConversation(int localUserId, List <int> participants) { int conversationId = -1; // Check connection if (!ServerConfig.Instance.IsConnectedToInternet()) { return(new Tuple <HttpStatusCode, int>(HttpStatusCode.ServiceUnavailable, conversationId)); } String url = ServerConfig.Instance.serverAddress; HttpClient client = ServerConfig.Instance.client; ConversationParticipants conversationParticipants = new ConversationParticipants { participants = participants }; var request = new HttpRequestMessage(new HttpMethod("POST"), url + "/clinicians/" + localUserId + "/conversations"); request.Content = new StringContent(JsonConvert.SerializeObject(conversationParticipants)); request.Headers.Add("token", ClinicianController.Instance.isLoggedIn() ? ClinicianController.Instance.AuthToken : UserController.Instance.AuthToken); HttpResponseMessage response; try { response = await client.SendAsync(request); } catch (HttpRequestException) { return(new Tuple <HttpStatusCode, int>(HttpStatusCode.ServiceUnavailable, conversationId)); } if (response.StatusCode == HttpStatusCode.Created) { conversationId = Int32.Parse(await response.Content.ReadAsStringAsync()); } return(new Tuple <HttpStatusCode, int>(response.StatusCode, conversationId)); }