Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
        }