public SlideTagExCollection GetSlideTags(PresentationPart presentationPart) { TagList tagList = null; SlideTagExCollection slideTagList = new SlideTagExCollection(); foreach (var sldPart in presentationPart.SlideParts) { var slide = presentationPart.Presentation.SlideIdList.Where(s => ((SlideId)s).RelationshipId == presentationPart.GetIdOfPart(sldPart)).FirstOrDefault(); int index = presentationPart.Presentation.SlideIdList.ToList().IndexOf(slide); foreach (UserDefinedTagsPart tagPart in sldPart.UserDefinedTagsParts) { tagList = tagPart.TagList; foreach (Tag tag in tagList.ChildElements) { if (tag.Name.Value.Equals(PL_TAG)) { SlideTagEx slideTagEx = null; slideTagEx = XmlUtils.Deserialize <SlideTagEx>(tag.Val.ToString()); slideTagEx.PptSlideIndex = ++index; slideTagEx.Title = sldPart.Slide.InnerText; if (slideTagEx != null) { slideTagList.Add(slideTagEx); } } } } } return(slideTagList); }
private List <SlideUpdatedResultDto> UpdateListOfSlides(SlideTagExCollection slideTags) { var result = new List <SlideUpdatedResultDto>(); if (slideTags != null) { for (int i = 0; i < slideTags.Count; i++) { SlideTagEx slideTagEx = slideTags[i]; string sourceFilename = ClientUtils.UndecorateFileName(slideTagEx.SourceFilename); string status = string.Empty; string lastModDate = slideTagEx.SourceLastModDate.ToString(Message.DateFormat); string source = string.Format("{0} - Slide {1}", sourceFilename, slideTagEx.SourceSlideNum); switch (slideTagEx.SlideStatus) { case TagUpdateStatus.Updated: status = "Updated"; break; case TagUpdateStatus.New: status = "New"; break; case TagUpdateStatus.MissingOrDeleted: status = "Deleted"; lastModDate = string.Empty; source = sourceFilename; break; case TagUpdateStatus.NoChange: status = "No change"; break; case TagUpdateStatus.Added: status = "Added"; lastModDate = string.Empty; source = string.Empty; break; case TagUpdateStatus.Moved: status = "Moved"; break; case TagUpdateStatus.Local: lastModDate = string.Empty; source = string.Empty; break; } bool isUpdated = Helper.IsSlideUpdated(slideTagEx.SlideStatus); result.Add(new SlideUpdatedResultDto { Tag = slideTagEx, PptSlideIndex = slideTagEx.PptSlideIndex == 0 ? slideTagEx.SourceSlideNum : slideTagEx.PptSlideIndex, Status = status, LastModDate = lastModDate, Source = source, Id = slideTagEx.Slide.Id.ToString(), IsUpdated = isUpdated }); } } return(result.OrderBy(x => x.PptSlideIndex).ToList()); }
private bool CheckSlidesForUpdates(SlideTagExCollection slideTags, bool isLibraryFile, CheckUpdateDto fileInfo) { bool updatesExist = false; for (int x = 0; x < slideTags.Count; x++) { SlideTagEx slideTagEx = slideTags[x]; if (slideTagEx.SlideStatus == TagUpdateStatus.Unknown) { LibraryFileSlides libraryFileSlides = null; try { if (fileInfo.FileId == "-1") { fileInfo.FileId = slideTagEx.File.Id.ToString(); } libraryFileSlides = _filesService.GetFileSlidesInfo(fileInfo); } catch (Exception ex) { isExcuted = false; return(updatesExist); } if (libraryFileSlides != null) { for (int i = 0; i < libraryFileSlides.Slides.Count; i++) { SlideInfo librarySlideInfo = libraryFileSlides.Slides[i]; SlideTagExCollection findSlideTags; findSlideTags = slideTags.FindBySlideId(fileInfo.ServerInfo.EnvironmentName, fileInfo.ServerInfo.ShortLibraryName, librarySlideInfo.SlideId); if (findSlideTags.Any()) { int movedCount = 0; for (int z = 0; z < findSlideTags.Count; z++) { SlideTagEx foundSlideTag = findSlideTags[z]; if (isLibraryFile && foundSlideTag.PptSlideIndex != librarySlideInfo.SlideNumber) { if (z == 0 && movedCount == 0) { foundSlideTag.SlideStatus = TagUpdateStatus.Moved; ++movedCount; } else { foundSlideTag.SlideStatus = TagUpdateStatus.Added; } } else if (librarySlideInfo.LastModDate <= foundSlideTag.Slide.LastModDate.ToUniversalTime()) { foundSlideTag.SlideStatus = TagUpdateStatus.NoChange; } else { foundSlideTag.SlideStatus = TagUpdateStatus.Updated; updatesExist = true; } foundSlideTag.SourceFilename = librarySlideInfo.FileName; foundSlideTag.SourceSlideNum = librarySlideInfo.SlideNumber; foundSlideTag.SourceLastModDate = (DateTime)librarySlideInfo.LastModDate; } } else if (isLibraryFile) { SlideTagEx newSlideTag = new SlideTagEx(fileInfo.ServerInfo.EnvironmentName, fileInfo.ServerInfo.ShortLibraryName, librarySlideInfo, -1) { SlideStatus = TagUpdateStatus.New, Title = librarySlideInfo.Title, SourceFilename = librarySlideInfo.FileName, SourceSlideNum = librarySlideInfo.SlideNumber, SourceLastModDate = (DateTime)librarySlideInfo.LastModDate }; slideTags.Insert(i, newSlideTag); updatesExist = true; } } } foreach (SlideTagEx nextSlideTagEx in slideTags) { if (nextSlideTagEx.SlideStatus == TagUpdateStatus.Unknown) { if (nextSlideTagEx.File.Id == slideTagEx.File.Id && nextSlideTagEx.Library.ShortName == slideTagEx.Library.ShortName && nextSlideTagEx.Library.Environment == slideTagEx.Library.Environment) { if (isLibraryFile) { nextSlideTagEx.SlideStatus = TagUpdateStatus.Added; } else { updatesExist = true; nextSlideTagEx.SlideStatus = TagUpdateStatus.MissingOrDeleted; if (libraryFileSlides != null && libraryFileSlides.Slides.Any()) { nextSlideTagEx.SourceFilename = libraryFileSlides.Slides[0].FileName; } } } } } } } return(updatesExist); }