public virtual ActionResult DocumentsTable(Guid groupId, GroupDocumentDocumentField column, Direction direction) { var groupDocumentsList = _groupDocumentsService.GetByGroup(groupId).ToList(); var mediaIdsList = groupDocumentsList.Select(s => s.MediaId).ToList(); var medias = _mediaService.GetByIds(mediaIdsList); var group = _groupService.Get(groupId); var groupMembers = _groupMemberService.GetGroupMemberByGroup(groupId); var currentMember = _intranetMemberService.GetCurrentMember(); var docs = medias.Select(s => { var intranetCreator = s.GetValue <Guid?>(IntranetConstants.IntranetCreatorId); var creator = intranetCreator.HasValue ? _intranetMemberService.Get(intranetCreator.Value) : _intranetMemberService.GetByUserId(s.CreatorId); var document = groupDocumentsList.First(f => f.MediaId == s.Id); var url = _umbracoHelper.TypedMedia(s.Id).Url; var model = new GroupDocumentTableRowViewModel { CanDelete = CanDelete(currentMember, group, groupMembers, s), Id = document.Id, CreateDate = s.CreateDate, Name = s.Name, Type = s.GetValue <string>(UmbracoAliases.Media.MediaExtension), Creator = creator.Map <MemberViewModel>(), FileUrl = url }; return(model); }); docs = Sort(docs, column, direction); var viewModel = new GroupDocumentsTableViewModel { Documents = docs, GroupId = groupId, Column = column, Direction = direction }; return(PartialView(GroupDocumentsTableViewPath, viewModel)); }
public virtual ActionResult DeleteDocument(Guid groupId, Guid documentId, GroupDocumentDocumentField column, Direction direction) { var document = _groupDocumentsService.Get(documentId); if (document.GroupId != groupId) { throw new Exception("Can't delete document because it does not belong to this group!"); } var currentUser = _intranetMemberService.GetCurrentMember(); var group = _groupService.Get(groupId); var groupMembers = _groupMemberService.GetGroupMemberByGroup(groupId); var media = _mediaService.GetById(document.MediaId); var canDelete = CanDelete(currentUser, group, groupMembers, media); if (canDelete) { _mediaService.Delete(media); _groupDocumentsService.Delete(document); } return(DocumentsTable(groupId, column, direction)); }
protected Func <GroupDocumentTableRowViewModel, object> GetKeySelector(GroupDocumentDocumentField column) { Func <GroupDocumentTableRowViewModel, object> keySelector; switch (column) { case GroupDocumentDocumentField.Type: keySelector = s => s.Type; break; case GroupDocumentDocumentField.Date: keySelector = s => s.CreateDate; break; case GroupDocumentDocumentField.Creator: keySelector = s => s.Creator.DisplayedName; break; default: keySelector = s => s.Name; break; } return(keySelector); }
protected IEnumerable <GroupDocumentTableRowViewModel> Sort(IEnumerable <GroupDocumentTableRowViewModel> documents, GroupDocumentDocumentField column, Direction direction) { var keySelector = GetKeySelector(column); switch (direction) { case Direction.Asc: documents = documents.OrderBy(keySelector); break; case Direction.Desc: documents = documents.OrderByDescending(keySelector); break; } return(documents); }