// run once for every configured column private bool IsEveryColumnValid(Configuration configuration, ApiHttpClient apiClient) { var result = true; // ReSharper disable once LoopCanBeConvertedToQuery foreach (var c in configuration.Columns) { var column = ColumnFactory.GetColumn(c); result = column.IsColumnConfigurationValid(apiClient) && result; } return(result); }
// run once for every type of column private bool IsEntireConfigurationValid(Configuration configuration) { var result = true; // ReSharper disable once LoopCanBeConvertedToQuery foreach (ColumnType c in Enum.GetValues(typeof(ColumnType))) { var column = ColumnFactory.GetColumn(new Configuration.Column { Header = "Some_Header", Type = c }); result = column.IsEntireConfigurationValid(configuration) && result; } return(result); }
private bool AreValuesValid(Csv csv) { var result = true; foreach (var row in csv.Values) { foreach (var c in _configuration.Columns) { var column = ColumnFactory.GetColumn(c); result = column.IsValueValid(row.ContainsKey(c.Header) ? row[c.Header] as string : null, _apiClient) && result; } } return(result); }
public void RunImport(out bool hasErrors) { hasErrors = false; var apiClient = ApiClientFactory.GetClient(_configuration); var count = 0; var total = _csv.Values.Count(); foreach (var row in _csv.Values) { ApplicantParameter applicantParameter; ApplicantResponse applicantResponse; var idColumn = _configuration.Columns.FirstOrDefault(x => x.Type == ColumnType.Id); int?existingApplicantId = null; if (idColumn != null && row.ContainsKey(idColumn.Header) && row[idColumn.Header].ToString().IsInt()) { existingApplicantId = row[idColumn.Header].ToString().GetInt(); Program.Write($"Updating applicant #{existingApplicantId} {++count}/{total} ..."); applicantResponse = new ApplicantGetRequest(existingApplicantId.Value).LoadResult(apiClient); applicantParameter = new ApplicantParameter(applicantResponse); } else { Program.Write($"Creating applicant {++count}/{total} ..."); applicantParameter = new ApplicantParameter { FirstName = "First-Name", LastName = "Last-Name", IsActive = true }; } try { foreach (var c in _configuration.Columns) { var column = ColumnFactory.GetColumn(c); column.SetValueBeforeCreate(row.ContainsKey(c.Header) ? row[c.Header] as string : null, applicantParameter, apiClient); } if (existingApplicantId.HasValue) { applicantResponse = new ApplicantPostRequest(existingApplicantId.Value, applicantParameter).LoadResult(apiClient); Program.Write( $"Applicant '#{applicantResponse.Id} {applicantResponse.FirstName} {applicantResponse.LastName}' updated. Setting additional attributes ..."); } else { applicantResponse = new ApplicantPutRequest(applicantParameter, false, new Uri("http://does_not_matter")) .LoadResult(apiClient); Program.Write( $"Applicant '#{applicantResponse.Id} {applicantResponse.FirstName} {applicantResponse.LastName}' created. Setting additional attributes ..."); } foreach (var c in _configuration.Columns) { var column = ColumnFactory.GetColumn(c); column.SetValueAfterCreate(row.ContainsKey(c.Header) ? row[c.Header] as string : null, applicantResponse, apiClient); } Program.Write(""); } catch (Exception ex) { Program.WriteError("Unable to import applicant: " + ex.Message); hasErrors = true; return; } } }
/// <summary> /// /// </summary> /// <param name="query"></param> /// <returns>Sorted list of ArticleItemProxies based on query</returns> public List <ArticleItemWrapper> RunSearch(VwbQuery query) { // var param = new ArticleSearchParam(); //param.IncludeSidebarArticles(); List <ArticleItemWrapper> articles; using (new Sitecore.SecurityModel.SecurityDisabler()) { string searchPageId = Constants.VWBSearchPageId; string hostName = Factory.GetSiteInfo("website")?.HostName ?? WebUtil.GetHostName(); string url = string.Format("{0}://{1}/api/informasearch?pId={2}&sortBy=plannedpublishdate&sortOrder=desc", HttpContext.Current.Request.Url.Scheme, hostName, searchPageId); if (query.InProgressValue) { url += "&inprogress=1"; } DateTime startDate = (query.StartDate != null) ? query.StartDate.Value : DateTime.Now.AddDays(-1).Date;//From the begining of the day before DateTime endDate = (query.EndDate != null) ? query.EndDate.Value : DateTime.Now.Date.AddDays(31).AddSeconds(-1);//till the end of 30 days ahead url += "&plannedpublishdate=" + startDate.ToString("MM/dd/yyyy"); url += ";" + endDate.ToString("MM/dd/yyyy"); if (string.IsNullOrEmpty(query.PublicationCodes) == false) { url += "&SearchPublicationTitle=" + query.PublicationCodes; } var client = new WebClient(); var content = client.DownloadString(url); var results = JsonConvert.DeserializeObject <SearchResults>(content); var resultItems = new List <ArticleItem>(); Database masterDb = Factory.GetDatabase("master"); foreach (var searchResult in results.results) { var theItem = (ArticleItem)masterDb.GetItem(searchResult.ItemId); if (theItem == null) { continue; } //Manually filtering for time IArticle article = theItem.InnerItem.GlassCast <IArticle>(inferType: true); if (article.Planned_Publish_Date.Ticks >= startDate.Ticks && article.Planned_Publish_Date.Ticks <= endDate.Ticks) { resultItems.Add(theItem); } } articles = ArticleItemWrapper.GetArticleItemProxies(resultItems).ToList(); } if (query.SortColumnKey != null && ColumnFactory.GetColumn(query.SortColumnKey) != null) { articles.Sort(ColumnFactory.GetColumn(query.SortColumnKey)); } if (query.SortColumnKey == ColumnFactory.GetArticleNumberColumn().Key()) { articles.Sort(ColumnFactory.GetArticleNumberColumn()); } if (query.SortColumnKey == ColumnFactory.GetTitleColumn().Key()) { articles.Sort(ColumnFactory.GetTitleColumn()); } if (query.Descending) { articles.Reverse(); } if (query.NumResultsValue != null) { return(articles.GetRange(0, Math.Min(articles.Count, (int)query.NumResultsValue))); } return(articles); }