コード例 #1
0
        public ActionResult AddAnswer(AddAnswerVM model)
        {
            if (model.IsLoad == EditMessageVM.LoadImage)
            {
                model.Message = UserMessageService.GetByPK(model.Message.UserMessageID);
                return(ProcessImage(model));
            }
            var message = new UserMessage {
                ParentMessageID = model.Message.UserMessageID,
                IsActive        = true,
                CreatorUserID   = User.UserID,
                Text            = model.Description
            };
            var parent = UserMessageService.GetAll(x =>
                                                   x.UserMessageID == model.Message.UserMessageID &&
                                                   x.IsAnswered).FirstOrDefault();

            if (parent != null)
            {
                parent.IsAnswered = false;
            }

            InsertAndSubmit(message);

            return(RedirectToAction(() => Details(model.Message.UserMessageID, 1)));
        }
コード例 #2
0
        private ActionResult ForumMessages(long?messageID, List <int> sectionIds)
        {
            var messages = (sectionIds.Any()
                                ? UserMessageService.GetAll().Where(um => sectionIds.Contains(um.MessageSectionID.Value))
                                : UserMessageService.GetAll().Where(um => um.ParentMessageID == messageID))
                           .OrderByDescending(m => m.CreateDate)
                           .Take(CommonConst.MessageCount).ToList();
            var title = string.Empty;

            if (sectionIds.Any())
            {
                if (sectionIds.Count == 1)
                {
                    var section = MessageSectionService.GetByPK(sectionIds.First());
                    title = section.Name;
                }
                else
                {
                    title = "Сообщения форума";
                }
            }
            else
            {
                var message = UserMessageService.GetByPK(messageID);
                if (message == null)
                {
                    title = "Сообщение не найдено";
                }
            }
            return(GetFeed(title, messages));
        }
コード例 #3
0
        public ActionResult GroupMessages(string tc)
        {
            var messages = UserMessageService.GetAll(um =>
                                                     um.Parent.Group.Teacher_TC == tc)
                           .OrderByDescending(m => m.CreateDate)
                           .Take(CommonConst.MessageCount).ToList();

            return(GetFeed("Лента преподавателя", messages));
        }
コード例 #4
0
        public ActionResult MessagesNotAnswered()
        {
            var messages = UserMessageService.GetAll(um => um.ParentMessageID == null &&
                                                     um.MessageSectionID.HasValue &&
                                                     !um.IsAnswered)
                           .OrderByDescending(m => m.CreateDate)
                           .Take(50).ToList();

            return(GetFeed("Не отвеченные сообщения", messages));
        }
コード例 #5
0
        private List <UserMessage> GetAllSectionsMessages(List <int> sections)
        {
            var messages = UserMessageService.GetAll(um => sections.Contains(um.MessageSectionID.Value))
                           .Union(UserMessageService.GetAll(um =>
                                                            sections.Contains(um.Parent.MessageSectionID.Value)))
                           .OrderByDescending(m => m.CreateDate)
                           .Take(CommonConst.MessageCount).ToList();

            return(messages);
        }
コード例 #6
0
        public ActionResult Section(int?sectionID, int?pageIndex)
        {
            var section = MessageSectionService.GetByPK(sectionID);

            if (section == null)
            {
                return(null);
            }
            if ((section.IsGraduateClubOrChildren) &&
                !User.GetOrDefault(x => x.InRole(Role.GraduateClubAccess)))
            {
                return(BaseView(new PagePart("Доступ только для выпускников")));
            }
            if (section.Children.Any())
            {
                var model2 = new SectionListVM {
                    MessageSections = section.Children
                                      .AsQueryable().IsActive().ToList(),
                    User = User
                };
                foreach (var messageSection in model2.MessageSections)
                {
                    messageSection.MessageCount = MessageSectionService
                                                  .SectionMessageCounts().GetValueOrDefault(messageSection
                                                                                            .MessageSectionID);
                    messageSection.LastMessageDate = MessageSectionService
                                                     .SectionLastMessageDates().GetValueOrDefault(messageSection
                                                                                                  .MessageSectionID);
                }
                return(View(ViewNames.SectionList, model2));
            }
            pageIndex = pageIndex ?? 1;
            var messages = UserMessageService.GetAll()
                           .Where(um => um.MessageSectionID == sectionID && um.IsActive)
                           .OrderByDescending(um =>
                                              um.Children.Max(um2 => (DateTime?)um2.CreateDate)
                                              ?? um.CreateDate)
                           .ToPagedList(pageIndex.Value - 1);
            var messageIds    = messages.Select(x => x.UserMessageID).ToList();
            var messageCounts = UserMessageService
                                .GetAll(x => messageIds.Contains(x.UserMessageID))
                                .Select(x => new { x.UserMessageID, x.Children.Count }).ToList()
                                .ToDictionary(x => x.UserMessageID, x => x.Count);
            var model =
                new SectionMessageListVM {
                Messages      = messages,
                MessageCounts = messageCounts,
                Section       = section,
            };

            return(View(ViewNames.MessageList, model));
        }
コード例 #7
0
        public ActionResult MessagesForUser(int userId)
        {
            var messages = UserMessageService.GetAll(um =>
                                                     um.CreatorUserID != userId &&
                                                     UserMessageService.GetAll(x => x.CreatorUserID == userId)
                                                     .Select(x => x.ParentMessageID ?? x.UserMessageID)
                                                     .Contains(um.ParentMessageID.Value)
                                                     )
                           .OrderByDescending(m => m.CreateDate)
                           .Take(CommonConst.MessageCount).ToList();

            return(GetFeed("Персональная лента", messages));
        }
コード例 #8
0
        private List <UserMessage> GetLastMessages(decimal groupID)
        {
            var lastMessages = new List <UserMessage>();
            var rootMessage  = GetGroupRootMessage(groupID);

            if (rootMessage != null)
            {
                lastMessages = UserMessageService.GetAll(x =>
                                                         x.ParentMessageID == rootMessage.UserMessageID).OrderByDescending(x =>
                                                                                                                           x.CreateDate).Take(5).ToList();
            }
            return(lastMessages);
        }
コード例 #9
0
        public ActionResult PrivateList(int receiverID, int?pageIndex)
        {
            pageIndex = pageIndex ?? 1;
            var sender   = AuthService.CurrentUser;
            var receiver = UserService.GetByPK(receiverID);
            var userID   = sender.UserID;
            var messages =
                UserMessageService.GetAll()
                .Where(um => (um.CreatorUserID == userID &&
                              um.ReceiverUserID == receiverID) ||
                       (um.CreatorUserID == receiverID &&
                        um.ReceiverUserID == userID))
                .OrderByDescending(um => um.CreateDate)
                .ToPagedList(pageIndex.Value - 1);
            var model =
                new PrivateMessageListVM {
                Sender   = sender,
                Receiver = receiver,
                Messages = messages,
            };

            return(View(model));
        }
コード例 #10
0
 private UserMessage GetGroupRootMessage(decimal groupID)
 {
     return(UserMessageService.GetAll()
            .FirstOrDefault(x => x.GroupID == groupID));
 }