public TranslatedFieldQuery TranslateFieldQuery(string fieldName, object fieldValue, ComparisonType comparison, FieldNameTranslator fieldNameTranslator) { var queryValue = fieldValue != null?this.TranslateToFormatter(fieldValue.ToString()) : null; if (queryValue == null) { return(null); } var query = new TranslatedFieldQuery(); query.FieldComparisons.Add(new Tuple <string, object, ComparisonType>(this.FieldName, queryValue, comparison)); return(query); }
public TranslatedFieldQuery TranslateFieldQuery(string fieldName, object fieldValue, ComparisonType comparison, FieldNameTranslator fieldNameTranslator) { if (comparison == ComparisonType.OrderBy) { throw new InvalidOperationException(string.Format("Sorting by virtual field {0} is not supported.", fieldName)); } var translated = new TranslatedFieldQuery(); switch (fieldValue.ToString()) { case "lasthour": translated.FieldComparisons.Add( new Tuple <string, object, ComparisonType>( fieldNameTranslator.GetIndexFieldName("daterange_hour", typeof(string)), DateTime.Now.ToString("yyyyMMddHH"), ComparisonType.Equal)); return(translated); case "last24": translated.FieldComparisons.Add( new Tuple <string, object, ComparisonType>( fieldNameTranslator.GetIndexFieldName("__smallcreateddate", typeof(DateTime)), DateTime.Today.ToString(ContentSearchConfigurationSettings.IndexDateFormat), ComparisonType.Equal)); return(translated); case "yesterday": translated.FieldComparisons.Add( new Tuple <string, object, ComparisonType>( fieldNameTranslator.GetIndexFieldName("__smallcreateddate", typeof(DateTime)), DateTime.Today.AddDays(-1).ToString(ContentSearchConfigurationSettings.IndexDateFormat), ComparisonType.Equal)); return(translated); case "thisweek": translated.FieldComparisons.Add( new Tuple <string, object, ComparisonType>( fieldNameTranslator.GetIndexFieldName("daterange_week", typeof(string)), DateTime.Now.ToString("yyyyMM") + CultureInfo.InvariantCulture.Calendar.GetWeekOfYear(DateTime.Now, CalendarWeekRule.FirstDay, DayOfWeek.Monday), ComparisonType.Equal)); return(translated); case "lastweek": translated.FieldComparisons.Add( new Tuple <string, object, ComparisonType>( fieldNameTranslator.GetIndexFieldName("daterange_week", typeof(string)), DateTime.Now.AddDays(-7).ToString("yyyyMM") + CultureInfo.InvariantCulture.Calendar.GetWeekOfYear(DateTime.Now.AddDays(-7), CalendarWeekRule.FirstDay, DayOfWeek.Monday), ComparisonType.Equal)); return(translated); case "thismonth": translated.FieldComparisons.Add( new Tuple <string, object, ComparisonType>( fieldNameTranslator.GetIndexFieldName("daterange_month", typeof(string)), DateTime.Now.ToString("yyyyMM"), ComparisonType.Equal)); return(translated); case "lastmonth": translated.FieldComparisons.Add( new Tuple <string, object, ComparisonType>( fieldNameTranslator.GetIndexFieldName("daterange_month", typeof(string)), DateTime.Now.AddMonths(-1).ToString("yyyyMM"), ComparisonType.Equal)); return(translated); case "thisyear": translated.FieldComparisons.Add( new Tuple <string, object, ComparisonType>( fieldNameTranslator.GetIndexFieldName("daterange_year", typeof(string)), DateTime.Now.ToString("yyyy"), ComparisonType.Equal)); return(translated); case "older": translated.FieldComparisons.Add( new Tuple <string, object, ComparisonType>( fieldNameTranslator.GetIndexFieldName("__smallcreateddate", typeof(DateTime)), DateTime.Now.AddDays(DateTime.Now.Day).AddMonths(-1), ComparisonType.LessThan)); return(translated); } translated.FieldComparisons.Add(new Tuple <string, object, ComparisonType>(fieldName, fieldValue, ComparisonType.Equal)); return(translated); }