Beispiel #1
0
 // [HttpPost]
 public ActionResult SaveUpdate(GroupUpdateFormModel newupdate)
 {
     if (ModelState.IsValid)
     {
         GroupUpdate update = Mapper.Map <GroupUpdateFormModel, GroupUpdate>(newupdate);
         var         userId = User.Identity.GetUserId();
         groupUpdateService.CreateUpdate(update, userId);
         var Updates = Mapper.Map <IEnumerable <GroupUpdate>, IEnumerable <GroupUpdateViewModel> >(groupUpdateService.GetUpdatesByGoal(newupdate.GroupGoalId));
         foreach (var item in Updates)
         {
             item.IsSupported = groupUpdateSupportService.IsUpdateSupported(item.GroupUpdateId, User.Identity.GetUserId(), groupUserService);
             item.UserId      = groupUpdateUserService.GetGroupUpdateUser(item.GroupUpdateId).Id;
         }
         GroupUpdateListViewModel updates = new GroupUpdateListViewModel()
         {
             GroupUpdates = Updates,
             Metric       = groupGoalService.GetGroupGoal(newupdate.GroupGoalId).Metric,
             Target       = groupGoalService.GetGroupGoal(newupdate.GroupGoalId).Target
         };
         return(PartialView("_UpdateView", updates));
     }
     return(null);
 }
        internal IEnumerable<NotificationsViewModel> GetNotifications(string userId, IGoalService goalService, ICommentService commentService, IUpdateService updateService, ISupportService supportService, IUserService userService, IGroupService groupService, IGroupUserService groupUserSevice, IGroupGoalService groupGoalService, IGroupCommentService groupcommentService, IGroupUpdateService groupupdateService, IFollowUserService followUserService, IGroupCommentUserService groupCommentUserService, ICommentUserService commentUserService, IGroupUpdateUserService groupUpdateUserService)
        {
            var goals = goalService.GetTop20GoalsofFollowing(userId);
            var comments = commentService.GetTop20CommentsOfPublicGoalFollwing(userId);
            var updates = updateService.GetTop20UpdatesOfFollowing(userId);
            var groupusers = groupUserSevice.GetTop20GroupsUsers(userId);
            var supports = supportService.GetTop20SupportsOfFollowings(userId);
            var groupgoals = groupGoalService.GetTop20GroupsGoals(userId, groupUserSevice);
            var groupupdates = groupupdateService.GetTop20Updates(userId, groupUserSevice);
            var groupComments = groupcommentService.GetTop20CommentsOfPublicGoals(userId, groupUserSevice);
            var followers = followUserService.GetTop20Followers(userId);
            // var groups = groupService.GetTop20Groups(groupids);

            return (from g in goals
                    select new NotificationsViewModel()
                    {
                        GoalId = g.GoalId,
                        UserId = g.UserId,
                        CreatedDate = g.CreatedDate,
                        UserName = g.User.UserName,
                        GoalName = g.GoalName,
                        Desc = g.Desc,
                        ProfilePicUrl = g.User.ProfilePicUrl,
                        Goal = g,
                        NotificationDate = DateCalculation(g.CreatedDate),
                        NotificationType = (int)NotificationType.createdGoal
                    })
                    .Concat(from c in comments
                            select new NotificationsViewModel()
                            {
                                CommentId = c.CommentId,
                                CreatedDate = c.CommentDate,
                                CommentText = c.CommentText,
                                UpdateId = c.UpdateId,
                                GoalName = c.Update.Goal.GoalName,
                                GoalId = c.Update.GoalId,
                                NumberOfComments = commentService.GetCommentsByUpdate(c.UpdateId).Count(),
                                Updatemsg = updateService.GetUpdate(c.UpdateId).Updatemsg,
                                NotificationDate = DateCalculation(c.CommentDate),
                                UserName = commentUserService.GetUser(c.CommentId).UserName,
                                UserId = commentUserService.GetUser(c.CommentId).Id,
                                ProfilePicUrl = commentUserService.GetUser(c.CommentId).ProfilePicUrl,

                                NotificationType = (int)NotificationType.commentedOnUpdate
                            })
                    .Concat(from u in updates
                            select new NotificationsViewModel()
                            {
                                Update = u,
                                UpdateId = u.UpdateId,
                                GoalId = u.GoalId,
                                ProfilePicUrl = u.Goal.User.ProfilePicUrl,
                                GoalName = u.Goal.GoalName,
                                Updatemsg = u.Updatemsg,
                                UserId = u.Goal.UserId,
                                UserName = u.Goal.User.UserName,
                                NumberOfComments = commentService.GetCommentsByUpdate(u.UpdateId).Count(),
                                CreatedDate = u.UpdateDate,
                                NotificationDate = DateCalculation(u.UpdateDate),
                                NotificationType = (int)NotificationType.updatedGoal
                            })
                    .Concat(from gr in groupgoals
                            select new NotificationsViewModel()
                            {

                                GroupGoalId = gr.GroupGoalId,
                                CreatedDate = gr.CreatedDate,

                                UserId = gr.GroupUser.UserId,
                                UserName = userService.GetUser(gr.GroupUser.UserId).UserName,
                                ProfilePicUrl = userService.GetUser(gr.GroupUser.UserId).ProfilePicUrl,

                                GroupName = gr.Group.GroupName,
                                GroupGoalName = gr.GoalName,
                                GroupId = gr.GroupId,
                                NotificationDate = DateCalculation(gr.CreatedDate),
                                NotificationType = (int)NotificationType.createGroup

                            })
                    .Concat(from gu in groupusers
                            select new NotificationsViewModel()
                            {
                                GroupUser = gu,
                                GroupUserId = gu.GroupUserId,

                                UserId = gu.UserId,
                                UserName = userService.GetUser(gu.UserId).UserName,
                                ProfilePicUrl = userService.GetUser(gu.UserId).ProfilePicUrl,

                                GroupName = groupService.GetGroup(gu.GroupId).GroupName,
                                GroupId = gu.GroupId,
                                CreatedDate = gu.AddedDate,
                                NotificationDate = DateCalculation(gu.AddedDate),
                                NotificationType = (int)NotificationType.joinGroup
                            })
                    .Concat(from s in supports
                            select new NotificationsViewModel()
                            {
                                Support = s,
                                SupportId = s.SupportId,
                                GoalName = s.Goal.GoalName,

                                ProfilePicUrl = userService.GetUser(s.UserId).ProfilePicUrl,
                                UserName = userService.GetUser(s.UserId).UserName,
                                UserId = s.UserId,
                                CreatedDate = s.SupportedDate,
                                GoalId = s.GoalId,
                                NotificationDate = DateCalculation(s.SupportedDate),
                                NotificationType = (int)NotificationType.supportGoal
                            })
                    .Concat(from gu in groupupdates
                            select new NotificationsViewModel()
                            {
                                GroupUpdate = gu,
                                GroupUpdateId = gu.GroupUpdateId,
                                GroupUpdatemsg = gu.Updatemsg,

                                UserId = groupUpdateUserService.GetGroupUpdateUser(gu.GroupUpdateId).Id,
                                ProfilePicUrl = groupUpdateUserService.GetGroupUpdateUser(gu.GroupUpdateId).ProfilePicUrl,
                                UserName = groupUpdateUserService.GetGroupUpdateUser(gu.GroupUpdateId).UserName,
                                NotificationDate = DateCalculation(gu.UpdateDate),
                                CreatedDate = gu.UpdateDate,
                                GroupGoalId = gu.GroupGoalId,
                                GroupId = gu.GroupGoal.GroupId,
                                GroupGoalName = gu.GroupGoal.GoalName,
                                GroupName = gu.GroupGoal.Group.GroupName,
                                NotificationType = (int)NotificationType.updatedGroupgoal

                            })
                    .Concat(from gc in groupComments
                            select new NotificationsViewModel()
                            {

                                GroupCommentId = gc.GroupCommentId,
                                GroupCommentText = gc.CommentText,
                                GroupUpdateId = gc.GroupUpdateId,

                                GroupGoalId = gc.GroupUpdate.GroupGoalId,
                                GroupGoalName = gc.GroupUpdate.GroupGoal.GoalName,

                                UserId = groupCommentUserService.GetGroupCommentUser(gc.GroupCommentId).Id,
                                UserName = groupCommentUserService.GetGroupCommentUser(gc.GroupCommentId).UserName,
                                ProfilePicUrl = groupCommentUserService.GetGroupCommentUser(gc.GroupCommentId).ProfilePicUrl,

                                GroupUpdatemsg = gc.GroupUpdate.Updatemsg,
                                GroupId = gc.GroupUpdate.GroupGoal.GroupUser.GroupId,
                                GroupName = gc.GroupUpdate.GroupGoal.Group.GroupName,
                                NotificationDate = DateCalculation(gc.CommentDate),
                                CreatedDate = gc.CommentDate,
                                NotificationType = (int)NotificationType.commentedonGroupUdate
                            })
                    .Concat(from f in followers
                            select new NotificationsViewModel()
                            {
                                FollowUserId = f.FollowUserId,
                                FromUser = f.FromUser,
                                ToUser = f.ToUser,
                                ProfilePicUrl = f.FromUser.ProfilePicUrl,
                                FromUserId = f.FromUserId,
                                ToUserId = f.ToUserId,
                                CreatedDate = f.AddedDate,
                                NotificationDate = DateCalculation(f.AddedDate),
                                NotificationType = (int)NotificationType.followUser
                            }).OrderByDescending(n => n.CreatedDate);
        }
        internal IEnumerable <NotificationsViewModel> GetNotifications(string userId, IGoalService goalService, ICommentService commentService, IUpdateService updateService, ISupportService supportService, IUserService userService, IGroupService groupService, IGroupUserService groupUserSevice, IGroupGoalService groupGoalService, IGroupCommentService groupcommentService, IGroupUpdateService groupupdateService, IFollowUserService followUserService, IGroupCommentUserService groupCommentUserService, ICommentUserService commentUserService, IGroupUpdateUserService groupUpdateUserService)
        {
            var goals         = goalService.GetTop20GoalsofFollowing(userId);
            var comments      = commentService.GetTop20CommentsOfPublicGoalFollwing(userId);
            var updates       = updateService.GetTop20UpdatesOfFollowing(userId);
            var groupusers    = groupUserSevice.GetTop20GroupsUsers(userId);
            var supports      = supportService.GetTop20SupportsOfFollowings(userId);
            var groupgoals    = groupGoalService.GetTop20GroupsGoals(userId, groupUserSevice);
            var groupupdates  = groupupdateService.GetTop20Updates(userId, groupUserSevice);
            var groupComments = groupcommentService.GetTop20CommentsOfPublicGoals(userId, groupUserSevice);
            var followers     = followUserService.GetTop20Followers(userId);

            // var groups = groupService.GetTop20Groups(groupids);

            return((from g in goals
                    select new NotificationsViewModel()
            {
                GoalId = g.GoalId,
                UserId = g.UserId,
                CreatedDate = g.CreatedDate,
                UserName = g.User.UserName,
                GoalName = g.GoalName,
                Desc = g.Desc,
                ProfilePicUrl = g.User.ProfilePicUrl,
                Goal = g,
                NotificationDate = DateCalculation(g.CreatedDate),
                NotificationType = (int)NotificationType.createdGoal
            })
                   .Concat(from c in comments
                           select new NotificationsViewModel()
            {
                CommentId = c.CommentId,
                CreatedDate = c.CommentDate,
                CommentText = c.CommentText,
                UpdateId = c.UpdateId,
                GoalName = c.Update.Goal.GoalName,
                GoalId = c.Update.GoalId,
                NumberOfComments = commentService.GetCommentsByUpdate(c.UpdateId).Count(),
                Updatemsg = updateService.GetUpdate(c.UpdateId).Updatemsg,
                NotificationDate = DateCalculation(c.CommentDate),
                UserName = commentUserService.GetUser(c.CommentId).UserName,
                UserId = commentUserService.GetUser(c.CommentId).Id,
                ProfilePicUrl = commentUserService.GetUser(c.CommentId).ProfilePicUrl,

                NotificationType = (int)NotificationType.commentedOnUpdate
            })
                   .Concat(from u in updates
                           select new NotificationsViewModel()
            {
                Update = u,
                UpdateId = u.UpdateId,
                GoalId = u.GoalId,
                ProfilePicUrl = u.Goal.User.ProfilePicUrl,
                GoalName = u.Goal.GoalName,
                Updatemsg = u.Updatemsg,
                UserId = u.Goal.UserId,
                UserName = u.Goal.User.UserName,
                NumberOfComments = commentService.GetCommentsByUpdate(u.UpdateId).Count(),
                CreatedDate = u.UpdateDate,
                NotificationDate = DateCalculation(u.UpdateDate),
                NotificationType = (int)NotificationType.updatedGoal
            })
                   .Concat(from gr in groupgoals
                           select new NotificationsViewModel()
            {
                GroupGoalId = gr.GroupGoalId,
                CreatedDate = gr.CreatedDate,

                UserId = gr.GroupUser.UserId,
                UserName = userService.GetUser(gr.GroupUser.UserId).UserName,
                ProfilePicUrl = userService.GetUser(gr.GroupUser.UserId).ProfilePicUrl,

                GroupName = gr.Group.GroupName,
                GroupGoalName = gr.GoalName,
                GroupId = gr.GroupId,
                NotificationDate = DateCalculation(gr.CreatedDate),
                NotificationType = (int)NotificationType.createGroup
            })
                   .Concat(from gu in groupusers
                           select new NotificationsViewModel()
            {
                GroupUser = gu,
                GroupUserId = gu.GroupUserId,

                UserId = gu.UserId,
                UserName = userService.GetUser(gu.UserId).UserName,
                ProfilePicUrl = userService.GetUser(gu.UserId).ProfilePicUrl,

                GroupName = groupService.GetGroup(gu.GroupId).GroupName,
                GroupId = gu.GroupId,
                CreatedDate = gu.AddedDate,
                NotificationDate = DateCalculation(gu.AddedDate),
                NotificationType = (int)NotificationType.joinGroup
            })
                   .Concat(from s in supports
                           select new NotificationsViewModel()
            {
                Support = s,
                SupportId = s.SupportId,
                GoalName = s.Goal.GoalName,

                ProfilePicUrl = userService.GetUser(s.UserId).ProfilePicUrl,
                UserName = userService.GetUser(s.UserId).UserName,
                UserId = s.UserId,
                CreatedDate = s.SupportedDate,
                GoalId = s.GoalId,
                NotificationDate = DateCalculation(s.SupportedDate),
                NotificationType = (int)NotificationType.supportGoal
            })
                   .Concat(from gu in groupupdates
                           select new NotificationsViewModel()
            {
                GroupUpdate = gu,
                GroupUpdateId = gu.GroupUpdateId,
                GroupUpdatemsg = gu.Updatemsg,

                UserId = groupUpdateUserService.GetGroupUpdateUser(gu.GroupUpdateId).Id,
                ProfilePicUrl = groupUpdateUserService.GetGroupUpdateUser(gu.GroupUpdateId).ProfilePicUrl,
                UserName = groupUpdateUserService.GetGroupUpdateUser(gu.GroupUpdateId).UserName,
                NotificationDate = DateCalculation(gu.UpdateDate),
                CreatedDate = gu.UpdateDate,
                GroupGoalId = gu.GroupGoalId,
                GroupId = gu.GroupGoal.GroupId,
                GroupGoalName = gu.GroupGoal.GoalName,
                GroupName = gu.GroupGoal.Group.GroupName,
                NotificationType = (int)NotificationType.updatedGroupgoal
            })
                   .Concat(from gc in groupComments
                           select new NotificationsViewModel()
            {
                GroupCommentId = gc.GroupCommentId,
                GroupCommentText = gc.CommentText,
                GroupUpdateId = gc.GroupUpdateId,

                GroupGoalId = gc.GroupUpdate.GroupGoalId,
                GroupGoalName = gc.GroupUpdate.GroupGoal.GoalName,

                UserId = groupCommentUserService.GetGroupCommentUser(gc.GroupCommentId).Id,
                UserName = groupCommentUserService.GetGroupCommentUser(gc.GroupCommentId).UserName,
                ProfilePicUrl = groupCommentUserService.GetGroupCommentUser(gc.GroupCommentId).ProfilePicUrl,

                GroupUpdatemsg = gc.GroupUpdate.Updatemsg,
                GroupId = gc.GroupUpdate.GroupGoal.GroupUser.GroupId,
                GroupName = gc.GroupUpdate.GroupGoal.Group.GroupName,
                NotificationDate = DateCalculation(gc.CommentDate),
                CreatedDate = gc.CommentDate,
                NotificationType = (int)NotificationType.commentedonGroupUdate
            })
                   .Concat(from f in followers
                           select new NotificationsViewModel()
            {
                FollowUserId = f.FollowUserId,
                FromUser = f.FromUser,
                ToUser = f.ToUser,
                ProfilePicUrl = f.FromUser.ProfilePicUrl,
                FromUserId = f.FromUserId,
                ToUserId = f.ToUserId,
                CreatedDate = f.AddedDate,
                NotificationDate = DateCalculation(f.AddedDate),
                NotificationType = (int)NotificationType.followUser
            }).OrderByDescending(n => n.CreatedDate));
        }