Example #1
0
        /// <summary>
        /// Convert the Membrship user to a notely <see cref="User"/> object
        /// </summary>
        /// <param name="user"></param>
        /// <param name="iuser"></param>
        /// <returns></returns>
        public static UserViewModel Convert(this UserViewModel user, IUser iuser)
        {
            // Check if a user is assigned
            if (user == null)
            {
                return(null);
            }

            // Create a new UserViewModel
            return(new UserViewModel()
            {
                Id = iuser.Id,
                Name = iuser.Name,
                AvatarUrl = UserAvatarProvider.GetAvatarUrl(iuser)
            });
        }
        public DashboardViewModel GetViewModel()
        {
            var umbracoRepository  = new UmbracoRepository();
            var dashboardViewModel = new DashboardViewModel();

            var unpublishedContent = umbracoRepository.GetUnpublishedContent().ToArray();
            var logItems           = umbracoRepository.GetLatestLogItems().ToArray();
            var nodesInRecyleBin   = umbracoRepository.GetRecycleBinNodes().Select(x => x.Id).ToArray();

            foreach (var logItem in logItems.Take(10))
            {
                var user        = GetUser(logItem.UserId);
                var contentNode = GetContent(logItem.NodeId);

                if (contentNode == null || !CurrentUserHasPermissions(contentNode))
                {
                    continue;
                }

                var activityViewModel = new ActivityViewModel
                {
                    UserDisplayName = user.Name,
                    UserAvatarUrl   = UserAvatarProvider.GetAvatarUrl(user),
                    NodeId          = logItem.NodeId,
                    NodeName        = contentNode.Name,
                    Message         = logItem.Comment,
                    LogItemType     = logItem.LogType.ToString(),
                    Timestamp       = logItem.Timestamp
                };

                var unpublishedVersionOfLogItem = unpublishedContent.FirstOrDefault(x => x.NodeId == logItem.NodeId && x.ReleaseDate != null);
                if (logItem.LogType == LogTypes.Save && unpublishedVersionOfLogItem != null && unpublishedVersionOfLogItem.UpdateDate != null)
                {
                    if (logItem.Timestamp.IsSameMinuteAs(unpublishedVersionOfLogItem.UpdateDate.Value))
                    {
                        activityViewModel.LogItemType = "SavedAndScheduled";
                    }
                    activityViewModel.ScheduledPublishDate = unpublishedVersionOfLogItem.ReleaseDate;
                }

                if (logItem.LogType == LogTypes.UnPublish && nodesInRecyleBin.Contains(logItem.NodeId))
                {
                    activityViewModel.LogItemType = "UnPublishToRecycleBin";
                }

                dashboardViewModel.Activities.Add(activityViewModel);
            }

            foreach (var item in unpublishedContent.Where(x => x.ReleaseDate == null))
            {
                var user        = GetUser(item.DocumentUser);
                var contentNode = GetContent(item.NodeId);

                // Checking for null, making sure that user has permissions and checking for this content node in the recycle bin. If its in the recycle bin
                // we should not return this as an unpublished node.
                if (contentNode == null || !CurrentUserHasPermissions(contentNode) || nodesInRecyleBin.Contains(contentNode.Id))
                {
                    continue;
                }

                var activityViewModel = new ActivityViewModel
                {
                    UserDisplayName = user.Name,
                    UserAvatarUrl   = UserAvatarProvider.GetAvatarUrl(user),
                    NodeId          = item.NodeId,
                    NodeName        = contentNode.Name,
                    Timestamp       = item.UpdateDate != null ? item.UpdateDate.Value : (DateTime?)null
                };

                dashboardViewModel.UnpublishedContent.Add(activityViewModel);
            }

            foreach (var item in logItems.Where(x => x.UserId == Security.CurrentUser.Id).Take(10))
            {
                var contentNode = GetContent(item.NodeId);

                if (contentNode == null || !CurrentUserHasPermissions(contentNode))
                {
                    continue;
                }

                var activityViewModel = new ActivityViewModel
                {
                    NodeId      = item.NodeId,
                    NodeName    = contentNode.Name,
                    LogItemType = item.LogType.ToString(),
                    Timestamp   = item.Timestamp
                };

                dashboardViewModel.UserRecentActivity.Add(activityViewModel);
            }

            dashboardViewModel.CountPublishedNodes      = umbracoRepository.CountPublishedNodes();
            dashboardViewModel.CountTotalWebsiteMembers = umbracoRepository.CountMembers();
            dashboardViewModel.CountNewMembersLastWeek  = umbracoRepository.CountNewMember();
            dashboardViewModel.CountContentInRecycleBin = nodesInRecyleBin.Count();

            return(dashboardViewModel);
        }
Example #3
0
        public IEnumerable <ActivityViewModel> GetLog(int take = 10, int skip = 0)
        {
            string currentUserLanguage = string.Empty;
            var    currentUser         = Services.UserService.GetByUsername(User.Identity.Name);

            if (currentUser == null)
            {
                LogHelper.Warn(GetType(), string.Format("No user found by User.Identity.Name '{0}'", User.Identity.Name));
            }
            else
            {
                currentUserLanguage = currentUser.Language;
            }

            var repo             = new UmbracoRepository();
            var logItems         = repo.GetLatestLogItems(take, skip);
            var nodesInRecyleBin = repo.GetRecycleBinNodes().Select(x => x.Id).ToArray();

            var activities = new List <ActivityViewModel>();

            foreach (var logItem in logItems)
            {
                var user        = GetUser(logItem.UserId);
                var contentNode = GetContent(logItem.NodeId);

                var vm = new ActivityViewModel
                {
                    UserDisplayName = user.Name,
                    UserAvatarUrl   = UserAvatarProvider.GetAvatarUrl(user),
                    NodeId          = logItem.NodeId,
                    Message         = logItem.Comment,
                    LogItemType     = logItem.LogType.ToString(),
                    Timestamp       = logItem.Timestamp,
                    SectionHeader   = GetHeader(logItem.Timestamp, UserHelper.GetCultureInfo(currentUserLanguage))// This is the date-header ("today", "2015-06-16" etc.)
                };

                if (contentNode != null)
                {
                    vm.DisplayName     = contentNode.Name;
                    vm.ContentTypeIcon = contentNode.ContentType.Icon;
                }

                var customAction = GetCustomAction(logItem);

                if (customAction == CustomActions.RecycleBinEmptied)
                {
                    vm.LogItemType = "RecycleBinEmptied";
                }


                if (customAction == CustomActions.SaveMedia || customAction == CustomActions.MoveMediaToRecycleBin)
                {
                    var media = Umbraco.TypedMedia(logItem.NodeId);
                    if (media != null)
                    {
                        if (media.DocumentTypeAlias != "Folder" && !String.IsNullOrEmpty(media.Url))
                        {
                            if (File.Exists(HttpContext.Current.Server.MapPath(media.Url)))
                            {
                                vm.ContentTypeIcon = media.Url;
                            }
                        }
                        vm.LogItemType = media.DocumentTypeAlias;
                        vm.DisplayName = media.Name;
                    }
                    else
                    {
                        // If the item is deleted from recycle bin, fallback to show just a file-icon
                        vm.LogItemType = "File";
                    }

                    vm.CustomAction = customAction.ToString();
                }

                if (logItem.Comment.StartsWith("Move Content to Recycle") && nodesInRecyleBin.Contains(logItem.NodeId))
                {
                    vm.LogItemType = "MovePageToRecycleBin";
                }

                // Set the final name for display (node id) if its still empty
                if (string.IsNullOrEmpty(vm.DisplayName))
                {
                    vm.DisplayName = string.Format("[{0}]", logItem.NodeId);
                }

                activities.Add(vm);
            }

            return(activities);
        }