private void ApplyFilterParameterByDateQueryFunction(DateTime currentDate, EntitySchemaQueryFilterCollection filters) { EntitySchemaQueryFilter firstFilter = (EntitySchemaQueryFilter)filters[0]; EntitySchemaQueryFilter secondFilter = (EntitySchemaQueryFilter)filters[1]; EntitySchemaQueryExpression firstExpression = firstFilter.RightExpressions[0]; EntitySchemaQueryExpression secondExpression = secondFilter.RightExpressions[0]; var firstFunction = firstExpression.Function as EntitySchemaBaseCurrentDateQueryFunction; var secondFunction = secondExpression.Function as EntitySchemaBaseCurrentDateQueryFunction; if (firstExpression.Function.GetType() == typeof(EntitySchemaCurrentDateQueryFunction)) { SetRigthExpression(firstFilter, DateTimeUtilities.DateTimeToDate(currentDate, firstFunction.Offset)); SetRigthExpression(secondFilter, DateTimeUtilities.DateTimeToDate(currentDate, secondFunction.Offset)); } else if (firstExpression.Function.GetType() == typeof(EntitySchemaStartOfCurrentWeekQueryFunction)) { SetRigthExpression(firstFilter, DateTimeUtilities.StartOfWeek(currentDate, firstFunction.Offset)); SetRigthExpression(secondFilter, DateTimeUtilities.StartOfWeek(currentDate, secondFunction.Offset)); } else if (firstExpression.Function.GetType() == typeof(EntitySchemaStartOfCurrentMonthQueryFunction)) { SetRigthExpression(firstFilter, DateTimeUtilities.StartOfMonth(currentDate, firstFunction.Offset)); SetRigthExpression(secondFilter, DateTimeUtilities.StartOfMonth(currentDate, secondFunction.Offset)); } else if (firstExpression.Function.GetType() == typeof(EntitySchemaStartOfCurrentQuarterQueryFunction)) { SetRigthExpression(firstFilter, DateTimeUtilities.StartOfQuarter(currentDate, firstFunction.Offset)); SetRigthExpression(secondFilter, DateTimeUtilities.StartOfQuarter(currentDate, secondFunction.Offset)); } else if (firstExpression.Function.GetType() == typeof(EntitySchemaStartOfCurrentHalfYearQueryFunction)) { SetRigthExpression(firstFilter, DateTimeUtilities.StartOfHalfYear(currentDate, firstFunction.Offset)); SetRigthExpression(secondFilter, DateTimeUtilities.StartOfHalfYear(currentDate, secondFunction.Offset)); } else if (firstExpression.Function.GetType() == typeof(EntitySchemaStartOfCurrentYearQueryFunction)) { SetRigthExpression(firstFilter, DateTimeUtilities.StartOfYear(currentDate, firstFunction.Offset)); SetRigthExpression(secondFilter, DateTimeUtilities.StartOfYear(currentDate, secondFunction.Offset)); } }