コード例 #1
0
        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));
        }
コード例 #2
0
        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));
        }