/// <summary> /// Join user to chat that /// already exists. /// </summary> /// <param name="chatId"></param> /// <param name="userId"></param> /// <returns></returns> public async Task <ChatResponse> JoinUserToChat(string chatId, string userId) { var realChatId = Guid.Parse(chatId); var userChat = new ApplicationUserChat { ChatId = realChatId, UserId = userId }; var alreadyJoined = _repository.CheckUserChatExistance(userChat); if (alreadyJoined) { return(ChatResponse.Successfull()); } var success = await _repository.SaveUserChat(userChat); if (!success) { return(ChatResponse.Unsuccessful("Error saving userchat relation.")); } return(ChatResponse.Successfull()); }
/// <summary> /// Update user chat relation. /// </summary> /// <param name="userChat"></param> /// <returns></returns> public async Task <bool> UpdateUserChat(ApplicationUserChat userChat) { _db.Entry(userChat).State = EntityState.Modified; try { _db.SaveChanges(); } catch (Exception ex) { return(false); } return(true); }
/// <summary> /// Delete user-chat relation /// from db. /// </summary> /// <param name="userChat"></param> /// <returns></returns> public async Task <bool> DeleteUserChat(ApplicationUserChat userChat) { _db.UserChats.Remove(userChat); try { await _db.SaveChangesAsync(); } catch (Exception ex) { _logsManager.SaveLog(userChat, ex.Message); return(false); } return(true); }
/// <summary> /// Helper method for /// assigning all users to /// newly created chat. /// </summary> /// <param name="chat"></param> /// <param name="users"></param> /// <returns></returns> private ICollection <ApplicationUserChat> SetChatUsers(Chat chat, List <ApplicationUser> users) { var chatUsers = new List <ApplicationUserChat>(); foreach (var user in users) { var newChatUser = new ApplicationUserChat { ApplicationUser = user, Chat = chat }; chatUsers.Add(newChatUser); } return(chatUsers); }
/// <summary> /// Remove user from /// related chat. /// </summary> /// <param name="chatId"></param> /// <param name="userId"></param> /// <returns></returns> public async Task <ChatResponse> RemoveUserFromChat(string chatId, string userId) { var realChatId = Guid.Parse(chatId); var userChat = new ApplicationUserChat { ChatId = realChatId, UserId = userId }; var success = await _repository.DeleteUserChat(userChat); if (!success) { return(ChatResponse.Unsuccessful("Error removing userchat relation.")); } return(ChatResponse.Successfull()); }
/// <summary> /// Checks if user is /// already joined to chat. /// </summary> /// <param name="userChat"></param> /// <returns></returns> public bool CheckUserChatExistance(ApplicationUserChat userChat) { return(_db.UserChats .FirstOrDefault(x => x.ChatId == userChat.ChatId && x.UserId == userChat.UserId) != null); }