Example #1
0
        public async Task <IEnumerable <GroupDocumentViewModel> > List(Guid groupId)
        {
            var groupDocumentsList = await _groupDocumentsService.GetByGroupAsync(groupId);

            var mediaIdsList = groupDocumentsList.Select(s => s.MediaId).ToList();
            var medias       = _mediaService.GetByIds(mediaIdsList);
            var group        = await _groupService.GetAsync(groupId);

            var groupMembers = await _groupMemberService.GetGroupMemberByGroupAsync(groupId);

            var currentMemberId = await _intranetMemberService.GetCurrentMemberIdAsync();

            var documentTasks = medias.Select(async s =>
            {
                IntranetMember creator;
                if (TryParseIntranetCreatorId(s, out var intranetCreatorId))
                {
                    creator = await _intranetMemberService.GetAsync(intranetCreatorId);
                }
                else
                {
                    creator = await _intranetMemberService.GetByUserIdAsync(s.CreatorId);
                }

                var document = groupDocumentsList.First(f => f.MediaId == s.Id);
                var model    = new GroupDocumentViewModel
                {
                    CanDelete  = CanDelete(currentMemberId, group, groupMembers, s),
                    Id         = document.Id,
                    CreateDate = s.CreateDate.ToString("dd.MM.yyyy"),
                    Name       = s.Name,
                    Type       = s is FileModel file ? file.UmbracoExtension : ((ImageModel)s).UmbracoExtension,
                    Creator    = creator.ToViewModel(),
                    FileUrl    = s.Url
                };
                return(model);
            }).ToArray();

            var documents = await Task.WhenAll(documentTasks);

            var docs = documents.OrderBy(x => x.Name);

            return(docs);
        }