public async Task <IActionResult> PutConversationDetail(string id, ConversationDetail conversationDetail) { if (id != conversationDetail.ConversationId) { return(BadRequest()); } _context.Entry(conversationDetail).State = EntityState.Modified; try { await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!ConversationDetailExists(id)) { return(NotFound()); } else { throw; } } return(NoContent()); }
public async Task <ActionResult <ConversationDetail> > DeleteConversation(ConversationDetail conversation) { ConversationDetail conversationDetail = await _context.ConversationDetails.FindAsync(conversation.ConversationId); if (conversationDetail == null) { return(NotFound()); } //Delete all pertinent messages Debug.WriteLine(conversationDetail.FromPhoneNumber); Debug.WriteLine(conversationDetail.ToPhoneNumber); var messageDetails = await _messageContext.MessageDetails.Where(a => (((a.FromPhoneNumber == conversationDetail.FromPhoneNumber) && (a.ToPhoneNumber == conversationDetail.ToPhoneNumber) && (a.Direction == "outbound-api")) || ((a.FromPhoneNumber == conversationDetail.ToPhoneNumber) && (a.ToPhoneNumber == conversationDetail.FromPhoneNumber) && (a.Direction == "inbound"))) ).ToListAsync(); foreach (MessageDetail message in messageDetails) { _messageContext.MessageDetails.Remove(message); } await _messageContext.SaveChangesAsync(); //End Delete all pertinent messages _context.ConversationDetails.Remove(conversationDetail); await _context.SaveChangesAsync(); return(conversationDetail); }
public async Task <ActionResult <ConversationDetail> > GetConversationMessages(string fromPhoneNumber, string toPhoneNumber) { //Update messages for all user phone numbers fromPhoneNumber = "+" + fromPhoneNumber; toPhoneNumber = "+" + toPhoneNumber; ConversationDetail newResult = _conversationContext.ConversationDetails.Where(a => ((a.ToPhoneNumber == toPhoneNumber) && (a.FromPhoneNumber == fromPhoneNumber))).FirstOrDefault(); return(newResult); }
public async Task <ActionResult> Delete(string conversationId) { string myUserId = User.Identity.GetUserId(); string myUserName = User.Identity.Name; ConversationDetail conversation = await _conDb.Conversations.FindAsync(new Guid(conversationId)); if (conversation != null) { _conDb.Conversations.Remove(conversation); } await _conDb.SaveChangesAsync(); return(RedirectToAction("Index")); }
public async Task <ActionResult> Create(string id) { if (id == User.Identity.GetUserId()) { return(Content("You can't chat with yourself!")); } string myUserId = User.Identity.GetUserId(); string myUserName = User.Identity.Name; if (!_conDb.Conversations.Where(x => x.FromUserId == id).Any(x => x.ToUserId == myUserId)) { // create new conversation var newConversationDetail = new ConversationDetail() { ConversationId = Guid.NewGuid(), FromUserId = id, ToUserId = myUserId, ToUserName = myUserName, UnreadMessageNo = 0, Updatetime = DateTime.Now }; _conDb.Conversations.Add(newConversationDetail); await _conDb.SaveChangesAsync(); } if (!_conDb.Conversations.Where(x => x.FromUserId == myUserId).Any(x => x.ToUserId == id)) { // create new conversation var newConversationDetail = new ConversationDetail() { ConversationId = Guid.NewGuid(), FromUserId = myUserId, ToUserId = id, ToUserName = UserManager.FindById(id).UserName, UnreadMessageNo = 0, Updatetime = DateTime.Now }; _conDb.Conversations.Add(newConversationDetail); await _conDb.SaveChangesAsync(); } //if target user is online, creating real time connection if (OnlineUsersHelper.CheckIfUserOnline(UserManager.FindById(id).UserName) && OnlineUsersHelper.CheckIfUserOnline(UserManager.FindById(myUserId).UserName)) { } return(RedirectToAction("Index")); }
public async Task <ActionResult <ConversationDetail> > RenameConversation(ConversationDetail conversation) { ConversationDetail conversationDetail = await _context.ConversationDetails.FindAsync(conversation.ConversationId); conversationDetail.ConversationName = conversation.ConversationName; if (conversationDetail == null) { return(NotFound()); } _context.ConversationDetails.Update(conversationDetail); await _context.SaveChangesAsync(); return(conversationDetail); }
public async Task <ActionResult <MessageDetail> > SendMessage(MessageDetail messageDetail) { //Get Signalwire number TwilioClient.Init("28361e6c-85b8-40f5-bde1-bfc8cf68a96c", "PT65bfa7479efd98c38f525e7c352277e70aff63ef22f4e8be", new Dictionary <string, object> { ["signalwireSpaceUrl"] = "manish.signalwire.com" }); //Create and send outgoing message var message = MessageResource.Create( from: new Twilio.Types.PhoneNumber(messageDetail.FromPhoneNumber), body: messageDetail.Body, to: new Twilio.Types.PhoneNumber(messageDetail.ToPhoneNumber) ); messageDetail.MessageSid = message.Sid; messageDetail.Time = DateTime.UtcNow.ToString(); messageDetail.Direction = (message.Direction).ToString(); _context.MessageDetails.Add(messageDetail); await _context.SaveChangesAsync(); //Update conversation table var conversationsToUpdate = await _conversationContext.ConversationDetails.Where(a => ((a.FromPhoneNumber == messageDetail.FromPhoneNumber) && (a.ToPhoneNumber == messageDetail.ToPhoneNumber)) || ((a.FromPhoneNumber == messageDetail.ToPhoneNumber) && (a.ToPhoneNumber == messageDetail.FromPhoneNumber))).ToListAsync(); if (conversationsToUpdate.Count != 0) { foreach (ConversationDetail convo in conversationsToUpdate) { convo.LastMessage = messageDetail.Body; convo.LastMessageTime = messageDetail.Time; _conversationContext.ConversationDetails.Update(convo); } } else { ConversationDetail convo = new ConversationDetail { ConversationId = messageDetail.ToPhoneNumber + messageDetail.FromPhoneNumber, ConversationName = "", FromPhoneNumber = messageDetail.FromPhoneNumber, ToPhoneNumber = messageDetail.ToPhoneNumber, LastMessage = messageDetail.Body, LastMessageTime = messageDetail.Time }; _conversationContext.ConversationDetails.Add(convo); convo = new ConversationDetail { ConversationId = messageDetail.FromPhoneNumber + messageDetail.ToPhoneNumber, ConversationName = "", FromPhoneNumber = messageDetail.ToPhoneNumber, ToPhoneNumber = messageDetail.FromPhoneNumber, LastMessage = messageDetail.Body, LastMessageTime = messageDetail.Time }; _conversationContext.ConversationDetails.Add(convo); } await _conversationContext.SaveChangesAsync(); return(CreatedAtAction("GetMessageDetail", new { id = messageDetail.MessageSid }, messageDetail)); }
public async Task <ActionResult <ConversationDetail> > PostConversationDetail(ConversationDetail conversationDetail) { _context.ConversationDetails.Add(conversationDetail); await _context.SaveChangesAsync(); return(CreatedAtAction("GetConversationDetail", new { id = conversationDetail.ConversationId }, conversationDetail)); }