public async Task <IActionResult> HideRevertConversation(string userName, int?conversationID, bool hide = true) { User user = null; Conversation conversation = null; if (userName != null && conversationID != null) { user = await context.Users.Where(u => u.UserName == userName).SingleOrDefaultAsync(); conversation = await context.Conversations.Where(c => c.ConversationID == conversationID).SingleOrDefaultAsync(); } if (user == null || conversation == null) { return(Json(null)); } if (hide == true) { HiddenConversationToUser hiddenConversationToUser = new HiddenConversationToUser() { Conversation = conversation, User = user, }; await context.HiddenConversationToUsers.AddAsync(hiddenConversationToUser); } else { HiddenConversationToUser hiddenConversationToUser = await context.HiddenConversationToUsers .Include(hc => hc.User) .Include(hc => hc.Conversation) .Where(hc => hc.User == user) .Where(hc => hc.Conversation == conversation) .SingleOrDefaultAsync(); if (hiddenConversationToUser == null) { return(Json(null)); } context.HiddenConversationToUsers.Remove(hiddenConversationToUser); } var result = await context.SaveChangesAsync(); return(Json(result)); }
public async Task <IActionResult> GetConversations() { User currentUser = await userManager.GetUserAsync(HttpContext.User); if (currentUser == null) { return(Json(null)); } List <Conversation> currentUserConversations = context.UserToConversations .Include(utc => utc.Conversation) .Where(utc => utc.User == currentUser) .OrderByDescending(utc => utc.Conversation.DateStarted) .Select(utc => utc.Conversation).ToList(); if (currentUserConversations.Count() == 0) { return(Json(0)); } List <ConversationViewModel> conversations = new List <ConversationViewModel>(); foreach (Conversation conversation in currentUserConversations) { // Get schedule items from database. List <ScheduleItem> conversationScheduleItems = await context.ScheduleItemToConversations .Include(s => s.Conversation) .Include(s => s.ScheduleItem) .Where(s => s.Conversation == conversation) .Select(s => s.ScheduleItem) .ToListAsync(); // Parse schedule items to view model. List <ScheduleItemModel> scheduleItemModels = new List <ScheduleItemModel>(); foreach (ScheduleItem scheduleItem in conversationScheduleItems) { scheduleItemModels.Add(new ScheduleItemModel() { From = scheduleItem.From, To = scheduleItem.To, MaxReservations = scheduleItem.MaxReservations, }); } // Check if conversation is marked as hidden for current user. HiddenConversationToUser hiddenConversationToUser = await context.HiddenConversationToUsers .Include(hc => hc.User) .Include(hc => hc.Conversation) .Where(hc => hc.User == currentUser) .Where(hc => hc.Conversation == conversation) .SingleOrDefaultAsync(); // Add conversation to view model. conversations.Add(new ConversationViewModel() { AnnouncementID = conversation.AnnouncementID, ConversationID = conversation.ConversationID, DateStarted = conversation.DateStarted, ReadOnly = conversation.ReadOnly, Title = conversation.Title, ScheduleItems = scheduleItemModels, IsHidden = (hiddenConversationToUser != null) ? true : false, }); } return(Json(conversations)); }