public IEnumerable <ContentItemStats> GetMappingStats(string mappingName = null) { var searchPattern = mappingName == null ? "*.docx" : $"*_*_{mappingName}_*.docx"; var allDocuments = Directory.GetFiles(DocumentsFolder, searchPattern) .Select(o => ContentItemFactory.BuildDocumentSummary(o)); var allMappings = Directory.GetFiles(MappingsFolder, "*.xlsm") .Select(o => ContentItemFactory.BuildMappingSummary(o)) .GroupBy(o => new { o.TemplateName, o.TemplateVersion, o.MappingName }) .Select(o => o.OrderByDescending(o => o.TemplateVersion).First()); if (string.IsNullOrEmpty(mappingName)) { return(allMappings .GroupBy(o => o.MappingName) .Select(g => new ContentItemStats() { MappingName = g.Key, TemplateName = null, Templates = g.Select(o => o.TemplateName).Distinct().Count(), Documents = allDocuments.Count(d => d.MappingName == g.Key) })); } else { return(allMappings .Where(o => string.Equals(mappingName, o.MappingName, StringComparison.CurrentCultureIgnoreCase)) .GroupBy(o => o.TemplateName) .Select(g => new ContentItemStats() { MappingName = mappingName, TemplateName = g.Key, Templates = 1, Documents = allDocuments.Count(d => d.MappingName == mappingName && d.TemplateName == g.Key) })); } }
public IEnumerable <DocumentContentSummary> GetDocuments(string templateName = null, string templateVersion = null, string mappingName = null, string mappingVersion = null) { var pathPattern = $"{templateName ?? "*"}_{templateVersion ?? "*"}_{mappingName ?? "*"}_{mappingVersion ?? "*"}_*.docx"; return(Directory.GetFiles(DocumentsFolder, pathPattern).Select(path => ContentItemFactory.BuildDocumentSummary(path))); }