/// <summary>
/// V tuto chvli podporujeme pouze filtr pro kd letit.
/// </summary>
private void TranslateAirportInformationComparison(
ConstantExpression constant,
MemberExpression memberAccess) {

MemberExpression parent = memberAccess.Expression as MemberExpression;
if (parent.Member.ReflectedType != typeof(Flight)) {
throw new NotSupportedException(
string.Format(
"len {0} nen typu Flight.",
memberAccess.ToString()));
}
// Podporujeme pouze len Airport ...
if (memberAccess.Member.Name == "Airport") {
switch (parent.Member.Name) {
case "Departure":
queryParameters.Filter.DepartureAirport =
	constant.Value.ToString();
break;
case "Arrival":
queryParameters.Filter.ArrivalAirport =
	constant.Value.ToString();
break;
}
}
}

/// <summary>
/// Podporujeme pouze porovnvn pro leny TotalMinutes a TotalHours.
/// </summary>
private void TranslateTimeSpanComparison(
ExpressionType nodeType,
ConstantExpression constant,
MemberExpression memberAccess) {

MemberExpression parent = memberAccess.Expression as MemberExpression;
if (parent.Member.ReflectedType != typeof(Flight)) {
throw new NotSupportedException(
string.Format(
"len {0} nen typu Flight.",
memberAccess.ToString()));
}
// V tomto prostm poskytovateli podporujeme pouze len TotalMinutes. 
if ((memberAccess.Member.Name == "TotalMinutes")
&& (parent.Member.Name == "TimeToArrival")) {
SetIntParameter(
(int) GetDoubleConstant(constant),
ref queryParameters.Filter.MinMinutesToArrival,
ref queryParameters.Filter.MaxMinutesToArrival,
nodeType);
}
else if ((memberAccess.Member.Name == "TotalHours")
&& (parent.Member.Name == "TimeToArrival")) {
SetIntParameter(
(int) GetDoubleConstant(constant) * 60,
ref queryParameters.Filter.MinMinutesToArrival,
ref queryParameters.Filter.MaxMinutesToArrival,
nodeType);
}
else {
throw new NotSupportedException(
string.Format(
"Dotaz do vrazu {0} nen podporovn.",
memberAccess.ToString()));
}
}
