protected override int GetNextArticleNumber() { var sitecoreId = base.GetNextArticleNumber(); int mappingId = 1; using (var context = new EscenicIdMappingContext()) { var mapping = context.EscenicIdMappings.OrderByDescending(x => x.ArticleNumber) .FirstOrDefault(x => x.ArticleNumber.StartsWith(PublicationPrefix)); if (mapping != null) { mappingId = int.Parse(mapping.ArticleNumber.Replace(PublicationPrefix, string.Empty)); } } return(sitecoreId > mappingId ? sitecoreId : mappingId); }
protected virtual string SetArticleNumber(EscenicIdMappingContext context, string escenicId) { var map = IdMap.ContainsKey(escenicId) ? IdMap[escenicId] : null; if (string.IsNullOrEmpty(map)) { var addMap = new EscenicIdMapping { EscenicId = escenicId, ArticleNumber = $"{PublicationPrefix}{ArticleNumber++:D6}" }; map = addMap.ArticleNumber; context.EscenicIdMappings.Add(addMap); } return(map); }
public override IEnumerable <object> GetImportData() { if (!Directory.Exists(this.Query)) { Logger.Log("N/A", string.Format("the folder '{0}' could not be found. Try moving the folder under the webroot.", this.Query), ProcessStatus.ImportDefinitionError); return(Enumerable.Empty <object>()); } List <Dictionary <string, string> > l = new List <Dictionary <string, string> >(); string[] files = Directory.GetFiles(this.Query); var filteredFiles = new List <Tuple <string, string, string, XmlDocument> >(); using (var context = new EscenicIdMappingContext()) { foreach (var f in files) { string curFileName = new FileInfo(f).Name; string articleId = curFileName.Replace(".xml", ""); //autonomy fields XmlDocument dAut = null; string autFile = $@"{this.Query}\..\Autonomy\{curFileName}"; if (File.Exists(autFile)) { dAut = GetXmlDocument(autFile); if (dAut != null) { // ABORT IF OF THIS TYPE string categoryName = GetXMLData(dAut, "CATEGORY") ?? string.Empty; if (categoryName.ToLower().Equals("pdfnewsletter")) { continue; } string sectionName = GetXMLData(dAut, "SECTION") ?? string.Empty; if (sectionName.ToLower().Equals("pdf library")) { continue; } } } string artNumber = SetArticleNumber(context, articleId); filteredFiles.Add(new Tuple <string, string, string, XmlDocument>(curFileName, artNumber, f, dAut)); } context.SaveChanges(); } foreach (Tuple <string, string, string, XmlDocument> pair in filteredFiles) { Dictionary <string, string> ao = new Dictionary <string, string>(); XmlDocument d = GetXmlDocument(pair.Item3); if (d == null) { continue; } //generated field string curFileName = pair.Item1; string articleId = curFileName.Replace(".xml", ""); ao["ARTICLE NUMBER"] = pair.Item2; //escenic field values string authorNode = "STORYAUTHORNAME"; ao.Add(authorNode, AuthorHelper.Authors(GetXMLData(d, authorNode))); string bodyNode = "BODY"; ao.Add(bodyNode, GetXMLData(d, bodyNode)); string titleNode = "TITLE"; string cleanTitleHtml = CleanTitleHtml(GetXMLData(d, titleNode)); ao.Add(titleNode, cleanTitleHtml); ao.Add("FILENAME", cleanTitleHtml); ao.Add("META TITLE OVERRIDE", cleanTitleHtml); ao.Add("ARTICLEID", articleId); //autonomy fields XmlDocument d2 = pair.Item4; List <string> autNodes = new List <string>() { "CATEGORY", "COMPANY", "STORYUPDATE", "SECTION", "COUNTRY", "KEYWORD", "THERAPY_SECTOR", "TREATABLE_CONDITION", "TECHNOLOGYSECTION", "COUNTRYSECTION" }; //if no autonomy file then fill fields with empty if (d2 == null) { Logger.Log("N/A", "File not found", ProcessStatus.NotFoundError, "File", $@"{this.Query}\..\Autonomy\{curFileName}"); foreach (string n in autNodes) { ao.Add(n, string.Empty); } //default back to the date from escenic string dateVal = GetXMLData(d, "DATEPUBLISHED"); DateTime date; if (!DateTimeUtil.ParseInformaDate(dateVal, out date)) { Logger.Log("N/A", "No Date to parse error", ProcessStatus.DateParseError, "Missing Autonomy File Name", $@"{this.Query}\..\Autonomy\{curFileName}"); } else { ao["STORYUPDATE"] = dateVal; } } else { foreach (string n in autNodes) { ao.Add(n, GetXMLData(d2, n)); } } l.Add(ao); } return(l); }