public static string GetWhere(PgTVM.IPgTableViewFilterM iFilter, List <IParams> listParams) { if (iFilter == null) { return("1 = 1"); } else { if (iFilter is PgTVM.PgTableViewFilterM && FilterHasError(iFilter)) { return("1 = 1"); } else if (iFilter is PgTVM.PgTableViewFiltersM) { PgTVM.PgTableViewFiltersM container = iFilter as PgTVM.PgTableViewFiltersM; if (container.Container.Count == 0 || FilterHasError(iFilter)) { return("1=1"); } } } switch (iFilter.Type) { case PgTVM.PgTableViewFilterType.Filter: { var filter = iFilter as PgTVM.PgTableViewFilterM; if (filter == null) { break; } if (filter.CheckHasError()) { if (filter.UseOwnValue) { return(null); } else { throw new Exception(); } } var param = GetWhereParams(filter, listParams.Count + 1); listParams.Add(param); return(GetWhereFilter(filter, param)); } case PgTVM.PgTableViewFilterType.Container: { var filters = iFilter as PgTVM.PgTableViewFiltersM; if (filters == null) { break; } return(GetWhereContainer(filters, listParams)); } } throw new Exception("Ошибка при выборе фильтра"); }
/// <summary> /// Получает FilterRelationModel из фильтра /// </summary> /// <param name="iFilter"></param> /// <returns></returns> private FilterRelationModel GetFilterModel(PgTVM.IPgTableViewFilterM iFilter) { switch (iFilter.Type) { case PgTVM.PgTableViewFilterType.Filter: { var filter = iFilter as PgTVM.PgTableViewFilterM; if (filter == null) { break; } //if (filter.CheckHasError()) // return null; return(new FilterRelationModel() { Type = TypeRelation.ELEMENT, Element = new FilterElementModel() { Column = filter.Field.Name, Type = filter.TOperation, Value = ((filter.Value == null) ? String.Empty : filter.Value.ToString()) } }); } case PgTVM.PgTableViewFilterType.Container: { var filters = iFilter as PgTVM.PgTableViewFiltersM; if (filters == null) { break; } return(GetFilterModelContainer(filters)); } } throw new Exception("Ошибка при выборе фильтра"); }
public static bool FilterHasError(PgTVM.IPgTableViewFilterM iFilter) { if (iFilter is PgTVM.PgTableViewFilterM) { PgTVM.PgTableViewFilterM filter = iFilter as PgTVM.PgTableViewFilterM; return(filter.HasError); } else if (iFilter is PgTVM.PgTableViewFiltersM) { PgTVM.PgTableViewFiltersM container = iFilter as PgTVM.PgTableViewFiltersM; bool result = false; foreach (PgTVM.IPgTableViewFilterM innerIFilter in container.Container) { result |= FilterHasError(innerIFilter); } return(result); } else { return(false); } }
/// <summary> /// Устанавливает активный фильтр из FilterRelationModel /// </summary> /// <param name="iFilter"></param> /// <param name="pattern"></param> public void SetFilterFromPattern(PgTVM.IPgTableViewFilterM iFilter, FilterRelationModel pattern) { switch (pattern.Type) { case TypeRelation.AND: case TypeRelation.OR: { PgTVM.PgTableViewFiltersM container = iFilter as PgTVM.PgTableViewFiltersM; container.Container.Clear(); container.TRelation = pattern.Type; foreach (FilterRelationModel relM in pattern.Arguments) { if (relM.Type == TypeRelation.ELEMENT) { PgTVM.PgTableViewFilterM innerelement = new PgTVM.PgTableViewFilterM(container, false); container.Container.Add(innerelement); SetFilterFromPattern(innerelement, relM); } else { PgTVM.PgTableViewFiltersM innercontainer = new PgTVM.PgTableViewFiltersM(container, false); container.Container.Add(innercontainer); SetFilterFromPattern(innercontainer, relM); } } break; } case TypeRelation.ELEMENT: { PgTVM.PgTableViewFilterM element = (PgTVM.PgTableViewFilterM)iFilter; element.Field = element.Source.FindField(pattern.Element.Column); element.TOperation = pattern.Element.Type; element.Value = pattern.Element.Value; break; } } }