private void MessageService_OnReceivedMessage(object sender, System.EventArgs e) { var messageDTO = (MessageDTO)sender; var conversation = UserConversations.FirstOrDefault(uc => uc.Id == messageDTO.ConversationId && uc.ConversationType == messageDTO.ConversationType); conversation.ConversationLastMessage = messageDTO.MessageContent; }
public void FilterConversations(string value, bool isOwner = false) { if (!isOwner) { if (!string.IsNullOrEmpty(value)) { UserConversations = UserConversations.Where(c => (c.Owner.School != null && c.Owner.School.Name.ToLower().Contains(value.ToLower())) || (c.Owner.Rental != null && c.Owner.Rental.Name.ToLower().Contains(value.ToLower()))).ToList(); } UserConversations = UserConversations.Where(c => c.Messages.Count != 0).OrderByDescending(c => (c.Messages.LastOrDefault(m => m != null).DateSent)).ToList(); } else { if (OwnerConversations.Count == 0) { return; } if (!string.IsNullOrEmpty(value)) { OwnerConversations = OwnerConversations.Where(c => c.User.UserName.ToLower().Contains(value.ToLower())).ToList(); } OwnerConversations = OwnerConversations.Where(c => c.Messages.Count != 0).OrderByDescending(c => (c.Messages.LastOrDefault(m => m != null).DateSent)).ToList(); } }
public void RemoveEmtpyConversations() { var conversations = new List <ConversationDTO>(UserConversations); foreach (var conversation in conversations) { if (conversation.ConversationLastMessage is null) { UserConversations.Remove(conversation); } } }
public async Task GetUserConversations() { var conversations = await _conversationService.GetConversationsForUserAsync(DataContainer.GetUserId()); UserConversations.Clear(); foreach (var conversation in conversations) { UserConversations.Add(conversation); } foreach (var conversation in conversations) { await _messageService.JoinChat(conversation); } }
public async Task <ConversationDTO> GetConversationWithUser(string username) { var userPair = new UserPairIdUsernameDTO() { UserId = DataContainer.GetUserId(), Username = username }; var conversation = await _conversationService.GetConversationWithUser(userPair); if (conversation == null) { return(conversation); } DataContainer.ConversationDTO = conversation; if (conversation.ConversationLastMessage is null) { UserConversations.Add(conversation); await _messageService.JoinChat(conversation); } return(conversation); }
public async Task RegisterNewGroupConversation() { UserConversations.Add(DataContainer.ConversationDTO); await _messageService.JoinChat(DataContainer.ConversationDTO); }
public IHttpActionResult MakeFriend(int InvitationId, bool accept) { try { var inv = db.FriendInvitations.Where(x => x.Id == InvitationId).FirstOrDefault(); if (inv.Status == 1 || inv.Status == 2) { // Nie akceptujemy 2 razy etc... w przypadku kilku kliknięć. return(Ok()); } if (accept) { inv.Status = 1; var tmp = new Friends { UserId = inv.UserId, FriendId = inv.TargetPersonId, IsObserving = true, }; var tmp2 = new Friends { UserId = inv.TargetPersonId, FriendId = inv.UserId, IsObserving = true, }; var conv = new UserConversations { FriendId = tmp.FriendId, UserId = tmp.UserId, }; // PRZYJACIELE W BAZIE db.Friends.AddRange(new[] { tmp, tmp2 }); // ZALÓŻ KONWERSACJĘ JESLI NIGDY NIE ISTNIAŁA var check = db.UserConversations.Where(x => (x.FriendId == conv.FriendId && x.UserId == conv.UserId) || (x.FriendId == conv.UserId && x.UserId == conv.FriendId)); if (!check.Any()) { db.UserConversations.Add(conv); } } else // Nie przyjął zaproszenia - usuń zaproszenie + dodaj powiadomienie na użytkownika, który je wysłał { inv.Status = 2; var not = new Notifications { SourcePersonId = inv.TargetPersonId, TargetPersonId = inv.UserId, Description = "Odrzucono zaproszenie do grona znajomych.", Type = 1, }; db.Notifications.Add(not); db.FriendInvitations.Remove(inv); } db.SaveChanges(); return(Ok()); } catch (Exception ex) { return(InternalServerError(ex)); } }