/// <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); }
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); }