/// File Name : Filter Kendo Grid
/// Objective: This file contains functions which create a db query on given filter string.
/// Requirement : Filed name must be as db fields name.
/// Create By: Preeti Burad
namespace GODATA.Models.FilterKendoGrid
{
using System;
public class FilterKendoGrid
{
///
/// This function returns expression.
///
/// Filter operator
/// Value on which base we have to filter
/// expression of operator and value
public static string GetExpression(String filterOperator, string filterValue, string filterColumnName)
{
string op = string.Empty;
if (filterOperator == "contains")
{
if (filterColumnName.Trim().ToUpper() == ("TotalTicketLifeCycleTimeSlab").ToUpper() || filterColumnName.Trim().ToUpper() == ("DefaultSlaTime").ToUpper() || filterColumnName.Trim().ToUpper() == ("Age").ToUpper() || filterColumnName.Trim().ToUpper() == ("vehicle_instalation_date").ToUpper() || filterColumnName.Trim().ToUpper() == ("time_stamps_status_1").ToUpper() || filterColumnName.Trim().ToUpper() == ("time_stamps_status_3").ToUpper() || filterColumnName.Trim().ToUpper() == ("time_stamps_status_4").ToUpper() || filterColumnName.Trim().ToUpper() == ("time_stamps_status_5").ToUpper() || filterColumnName.Trim().ToUpper() == ("time_stamps_status_2").ToUpper())
{
op = "like " + "'" + "%" + filterValue.Replace("'", "") + "%" + "'";
}
else
{
if (filterValue.Trim().Contains(")") == true)
{
filterValue = filterValue.Trim().Replace(")", "");
op = "like trim(upper('%" + filterValue.Replace("'", "") + "%'))";
op = op + ")";
}
else
{
op = "like trim(upper('%" + filterValue.Replace("'", "") + "%'))";
}
}
}
else if (filterOperator == "doesnotcontain")
{
if (filterColumnName.Trim().ToUpper() == ("TotalTicketLifeCycleTimeSlab").ToUpper() || filterColumnName.Trim().ToUpper() == ("DefaultSlaTime").ToUpper() || filterColumnName.Trim().ToUpper() == ("Age").ToUpper() || filterColumnName.Trim().ToUpper() == ("vehicle_instalation_date").ToUpper() || filterColumnName.Trim().ToUpper() == ("time_stamps_status_1").ToUpper() || filterColumnName.Trim().ToUpper() == ("time_stamps_status_3").ToUpper() || filterColumnName.Trim().ToUpper() == ("time_stamps_status_4").ToUpper() || filterColumnName.Trim().ToUpper() == ("time_stamps_status_5").ToUpper() || filterColumnName.Trim().ToUpper() == ("time_stamps_status_2").ToUpper())
{
op = "not like " + "'" + "%" + filterValue.Replace("'", "") + "%" + "'";
}
else
{
op = "not like trim(upper('%" + filterValue.Replace("'", "") + "%'))";
}
}
else if (filterOperator == "endswith")
{
if (filterColumnName.Trim().ToUpper() == ("TotalTicketLifeCycleTimeSlab").ToUpper() || filterColumnName.Trim().ToUpper() == ("DefaultSlaTime").ToUpper() || filterColumnName.Trim().ToUpper() == ("Age").ToUpper() || filterColumnName.Trim().ToUpper() == ("vehicle_instalation_date").ToUpper() || filterColumnName.Trim().ToUpper() == ("time_stamps_status_1").ToUpper() || filterColumnName.Trim().ToUpper() == ("time_stamps_status_3").ToUpper() || filterColumnName.Trim().ToUpper() == ("time_stamps_status_4").ToUpper() || filterColumnName.Trim().ToUpper() == ("time_stamps_status_5").ToUpper() || filterColumnName.Trim().ToUpper() == ("time_stamps_status_2").ToUpper())
{
op = "like " + "'" + "%" + filterValue.Replace("'", "") + "'";
}
else
{
op = "like trim(upper('%" + filterValue.Replace("'", "") + "'))";
}
}
else if (filterOperator == "startswith")
{
if (filterColumnName.Trim().ToUpper() == ("TotalTicketLifeCycleTimeSlab").ToUpper() || filterColumnName.Trim().ToUpper() == ("DefaultSlaTime").ToUpper() || filterColumnName.Trim().ToUpper() == ("Age").ToUpper() || filterColumnName.Trim().ToUpper() == ("vehicle_instalation_date").ToUpper() || filterColumnName.Trim().ToUpper() == ("time_stamps_status_1").ToUpper() || filterColumnName.Trim().ToUpper() == ("time_stamps_status_3").ToUpper() || filterColumnName.Trim().ToUpper() == ("time_stamps_status_4").ToUpper() || filterColumnName.Trim().ToUpper() == ("time_stamps_status_5").ToUpper() || filterColumnName.Trim().ToUpper() == ("time_stamps_status_2").ToUpper())
{
op = "like" + "'" + filterValue.Replace("'", "") + "%" + "'";
}
else
{
op = "like trim(upper('" + filterValue.Replace("'", "") + "%'))";
}
}
if (filterOperator == "eq")
{
op = "=" + filterValue;
}
else if (filterOperator == "neq")
{
op = "<>" + filterValue;
}
else if (filterOperator == "lt")
{
op = "<" + filterValue;
}
else if (filterOperator == "lte")
{
op = "<=" + filterValue;
}
else if (filterOperator == "gt")
{
op = ">" + filterValue;
}
else if (filterOperator == "gte")
{
op = ">=" + filterValue;
}
else { }
return op;
}
///
/// This function Create a query on given filter data.
///
/// Filter data on which we want to create db query.
/// Query in string form.
///
/// This function Create a query on given filter data.
///
/// Filter data on which we want to create db query.
/// Query in string form.
public static string CreateFilterQuery(string objFilter)
{
string query = null;
// split Filter data into array.
var filterArr = objFilter.Split('~');
// Length of filter string array
int len = filterArr.Length;
int i = 0;
// creating query (Field name, operator, value)
while (i < len)
{
//if (filterArr[i].Trim().ToUpper() == ("creation_time").ToUpper())
//{
// query += filterArr[i] + ' ' + FilterKendoGrid.GetExpression(filterArr[i + 1], Convert.ToDateTime(filterArr[i + 2].Replace("datetime", String.Empty)).ToString("yyyy-MM-dd hh:mm:ss"));
//}
//else
if (filterArr[i].Trim().ToUpper() == ("TotalTicketLifeCycleTimeSlab").ToUpper() || filterArr[i].Trim().ToUpper() == ("DefaultSlaTime").ToUpper() || filterArr[i].Trim().ToUpper() == ("Age").ToUpper() || filterArr[i].Trim().ToUpper() == ("vehicle_instalation_date").ToUpper() || filterArr[i].Trim().ToUpper() == ("time_stamps_status_1").ToUpper() || filterArr[i].Trim().ToUpper() == ("time_stamps_status_3").ToUpper() || filterArr[i].Trim().ToUpper() == ("time_stamps_status_4").ToUpper() || filterArr[i].Trim().ToUpper() == ("time_stamps_status_5").ToUpper() || filterArr[i].Trim().ToUpper() == ("time_stamps_status_2").ToUpper())
{
query += filterArr[i] + ' ' + FilterKendoGrid.GetExpression(filterArr[i + 1], filterArr[i + 2], filterArr[i]);
}
else
{
if (filterArr[i + 1] == "contains" || filterArr[i + 1] == "doesnotcontain" || filterArr[i + 1] == "endswith" || filterArr[i + 1] == "startswith")
{
if (filterArr[i] == "(ticketid_alias)")
{
query += "(";
}
query += "trim(upper(" + filterArr[i] + "))" + ' ' + FilterKendoGrid.GetExpression(filterArr[i + 1], filterArr[i + 2], filterArr[i]);
}
else
{
if (filterArr[i] == "(vehicle_emission_norms)")
{
query += "(";
}
if (filterArr[i] == "(VehicleTagging)")
{
query += "(";
}
if (filterArr[i] == "(DealerDealerName)")
{
query += "(";
}
query += "trim(upper(" + filterArr[i] + "))" + ' ' + FilterKendoGrid.GetExpression(filterArr[i + 1], "trim(upper(" + filterArr[i + 2] + "))", filterArr[i]);
}
}
i += 3;
if (i < len - 1)
{
query += ' ' + filterArr[i] + ' ';
i++;
}
}
return query;
}
///
/// This function Create a query on given filter data.
///
/// Filter data on which we want to create db query.
/// Query in string form.
public static string CreateFilterQueryEscalation(string objFilter)
{
string query = null;
// split Filter data into array.
var filterArr = objFilter.Split('~');
// Length of filter string array
int len = filterArr.Length;
int i = 0;
// creating query (Field name, operator, value)
while (i < len)
{
//if (filterArr[i].Trim().ToUpper() == ("creation_time").ToUpper())
//{
// query += filterArr[i] + ' ' + FilterKendoGrid.GetExpression(filterArr[i + 1], Convert.ToDateTime(filterArr[i + 2].Replace("datetime", String.Empty)).ToString("yyyy-MM-dd hh:mm:ss"));
//}
//else
if (filterArr[i].Trim().ToUpper() == ("alarm_age").ToUpper() || filterArr[i].Trim().ToUpper() == ("alarm_age_sla_not_met").ToUpper() || filterArr[i].Trim().ToUpper() == ("alarm_age_ticket_not_closed").ToUpper() || filterArr[i].Trim().ToUpper() == ("alarm_age_van_not_live").ToUpper() || filterArr[i].Trim().ToUpper() == ("alarm_age_eicher_promise_48hrs").ToUpper())
{
query += "alarm_escalation_escalationlevel." + filterArr[i] + ' ' + FilterKendoGrid.GetExpression(filterArr[i + 1], filterArr[i + 2], filterArr[i]);
}
else if (filterArr[i].Trim().ToUpper() == ("dealer_name_id").ToUpper())
{
filterArr[i] = "dealer_name";
if (filterArr[i + 1] == "contains" || filterArr[i + 1] == "doesnotcontain" || filterArr[i + 1] == "endswith" || filterArr[i + 1] == "startswith")
{
query += "trim(upper(alarm_escalation_escalationlevel." + filterArr[i] + "))" + ' ' + FilterKendoGrid.GetExpression(filterArr[i + 1], filterArr[i + 2], filterArr[i]);
}
else
{
query += "trim(upper(alarm_escalation_escalationlevel." + filterArr[i] + "))" + ' ' + FilterKendoGrid.GetExpression(filterArr[i + 1], "trim(upper(" + filterArr[i + 2] + "))", filterArr[i]);
}
}
else if (filterArr[i].Trim().ToUpper() == ("dealer_name").ToUpper())
{
if (filterArr[i + 1] == "contains" || filterArr[i + 1] == "doesnotcontain" || filterArr[i + 1] == "endswith" || filterArr[i + 1] == "startswith")
{
query += "trim(upper(_dealer." + filterArr[i] + "))" + ' ' + FilterKendoGrid.GetExpression(filterArr[i + 1], filterArr[i + 2], filterArr[i]);
}
else
{
query += "trim(upper(_dealer." + filterArr[i] + "))" + ' ' + FilterKendoGrid.GetExpression(filterArr[i + 1], "trim(upper(" + filterArr[i + 2] + "))", filterArr[i]);
}
}
else if (filterArr[i].Trim().ToUpper() == ("organization_name").ToUpper())
{
if (filterArr[i + 1] == "contains" || filterArr[i + 1] == "doesnotcontain" || filterArr[i + 1] == "endswith" || filterArr[i + 1] == "startswith")
{
query += "trim(upper(organization_organization." + filterArr[i] + "))" + ' ' + FilterKendoGrid.GetExpression(filterArr[i + 1], filterArr[i + 2], filterArr[i]);
}
else
{
query += "trim(upper(organization_organization." + filterArr[i] + "))" + ' ' + FilterKendoGrid.GetExpression(filterArr[i + 1], "trim(upper(" + filterArr[i + 2] + "))", filterArr[i]);
}
}
else
{
if (filterArr[i + 1] == "contains" || filterArr[i + 1] == "doesnotcontain" || filterArr[i + 1] == "endswith" || filterArr[i + 1] == "startswith")
{
query += "trim(upper(alarm_escalation_escalationlevel." + filterArr[i] + "))" + ' ' + FilterKendoGrid.GetExpression(filterArr[i + 1], filterArr[i + 2], filterArr[i]);
}
else
{
query += "trim(upper(alarm_escalation_escalationlevel." + filterArr[i] + "))" + ' ' + FilterKendoGrid.GetExpression(filterArr[i + 1], "trim(upper(" + filterArr[i + 2] + "))", filterArr[i]);
}
}
i += 3;
if (i < len - 1)
{
query += ' ' + filterArr[i] + ' ';
i++;
}
}
return query;
}
}
}