public JsonResult ClearAdvSearchFilters()
        {
            IList <PropertyUnitModel> model = new List <PropertyUnitModel>();
            BreadcrumbNavigation      nav   = (BreadcrumbNavigation)System.Web.HttpContext.Current.Session["Navigation"];

            if (nav == null)
            {
                nav = new BreadcrumbNavigation();
            }
            AdvancedSearchResults res = nav.GetOrderedItems().Where(n => n.NavigableID == "AdvancedSearchResults").FirstOrDefault() as AdvancedSearchResults;

            if (res != null)
            {
                nav.Pop();
            }

            AdvancedSearchNav adv = nav.GetOrderedItems().Where(n => n.NavigableID == "AdvancedSearch").FirstOrDefault() as AdvancedSearchNav;

            adv.PageData = new List <PropertyUnitModel>();
            nav.Push(adv);
            nav.LastNavigable = "AdvancedSearch";


            System.Web.HttpContext.Current.Session["Navigation"] = nav;

            return(Json(ResponseStatus.Success, RenderPartialViewToString("ConditionsContainer", model), JsonRequestBehavior.AllowGet));
        }
        private AdvSearchFiltersAll GenerateFilters()
        {
            BreadcrumbNavigation nav = (BreadcrumbNavigation)System.Web.HttpContext.Current.Session["Navigation"];

            if (nav == null)
            {
                nav = new BreadcrumbNavigation();
            }
            AdvancedSearchNav adv = nav.GetOrderedItems().Where(n => n.NavigableID == "AdvancedSearch").FirstOrDefault() as AdvancedSearchNav;

            IList <PropertyUnitModel> units = (IList <PropertyUnitModel>)adv.PageData;

            AdvSearchFiltersAll ret = new AdvSearchFiltersAll()
            {
                AllFilters = new List <AdvSearchFilters>()
            };

            foreach (var item in units)
            {
                AdvSearchFilters fil = new AdvSearchFilters()
                {
                    propertyId = item.PropertyID, propertyName = item.PropertyName, propertyType = item.PropertyType, unitId = item.SelectedUnit
                };
                if (item.SelectedUnit != -1)
                {
                    fil.unitName = item.Units.FirstOrDefault(i => i.UnitKey == item.SelectedUnit).UnitLabel;
                }

                //fil.valueFrom = Decimal.Parse(item.ValueFrom);
                //fil.valueTo = Decimal.Parse(item.ValueTo);
                //ret.AllFilters.Add(fil);

                decimal vFrom;
                bool    isDecimalFrom = decimal.TryParse(item.ValueFrom, out vFrom);
                vFrom = isDecimalFrom ? vFrom : 0;
                ;
                decimal vTo;
                bool    isDecimalTo = decimal.TryParse(item.ValueFrom, out vTo);
                vTo = isDecimalTo ? vTo : 0;
                ;
                fil.valueFrom = vFrom;
                fil.valueTo   = vTo;
                ret.AllFilters.Add(fil);
            }
            return(ret);
        }
        public IList <PropertyUnitModel> BreadcrumbNavigationGetSet()
        {
            BreadcrumbNavigation nav = (BreadcrumbNavigation)System.Web.HttpContext.Current.Session["Navigation"];

            if (nav == null)
            {
                nav = new BreadcrumbNavigation();
            }
            IList <PropertyUnitModel> retVal;

            foreach (var item in nav.GetOrderedItems().Where(n => n.NavigableID != "HomePage"))
            {
                item.IsVisible = false;
            }
            if (nav.Contains("FullSearch"))
            {
                FullSearch fs = nav.GetOrderedItems().Where(n => n.NavigableID == "FullSearch").FirstOrDefault() as FullSearch;
                fs.IsVisible = false;
                //fs.PageData = null;
            }


            AdvancedSearchNav adv = nav.GetOrderedItems().Where(n => n.NavigableID == "AdvancedSearch").FirstOrDefault() as AdvancedSearchNav;

            if (adv == null)
            {
                //  nav = new BreadcrumbNavigation();
                HomePage hp = new HomePage();
                hp.PageData         = 0;
                ViewBag.TabSelected = hp.PageData;
                nav.LastNavigable   = "HomePage";
                nav.Push(hp);
                adv    = new AdvancedSearchNav();
                retVal = new List <PropertyUnitModel>();
            }
            else
            {
                retVal = (IList <PropertyUnitModel>)adv.PageData == null ? new List <PropertyUnitModel>() : (IList <PropertyUnitModel>)adv.PageData;
            }
            nav.LastNavigable = "AdvancedSearch";
            adv.IsVisible     = true;
            nav.Push(adv);

            System.Web.HttpContext.Current.Session["Navigation"] = nav;
            return(retVal);
        }
        public AdvSearchFiltersAll BreadcrumbNavigationGetSet(AdvSearchFiltersAll filters)
        {
            BreadcrumbNavigation nav = (BreadcrumbNavigation)System.Web.HttpContext.Current.Session["Navigation"];

            if (nav == null)
            {
                nav = new BreadcrumbNavigation();
            }
            if (nav.Contains("Exporter"))
            {
                nav.Pop();
            }
            if (nav.Contains("Comparison"))
            {
                nav.Pop();
            }
            if (nav.Contains("MaterialDetails1"))
            {
                nav.Pop();
            }
            if (nav.Contains("Subgroups"))
            {
                nav.Pop();
            }
            if (nav.Contains("BrowseFacets"))
            {
                nav.Pop();
            }
            if (nav.Contains("BrowseHome"))
            {
                nav.Pop();
            }



            AdvancedSearchNav adv = nav.GetOrderedItems().Where(n => n.NavigableID == "AdvancedSearch").FirstOrDefault() as AdvancedSearchNav;

            if (adv == null)
            {
                adv.IsVisible = true;
                adv           = new AdvancedSearchNav();
            }


            IList <PropertyUnitModel> units = new List <PropertyUnitModel>();

            foreach (var item in nav.GetOrderedItems().Where(n => n.NavigableID != "HomePage" && n.NavigableID != "AdvancedSearch"))
            {
                item.IsVisible = false;
            }
            if (nav.Contains("FullSearch"))
            {
                FullSearch fs = nav.GetOrderedItems().Where(n => n.NavigableID == "FullSearch").FirstOrDefault() as FullSearch;
                fs.IsVisible = false;
                fs.PageData  = null;
            }

            AdvancedSearchResults res = nav.GetOrderedItems().Where(n => n.NavigableID == "AdvancedSearchResults").FirstOrDefault() as AdvancedSearchResults;

            if (res == null)
            {
                AdvancedSearchResults hp = new AdvancedSearchResults();
                hp.PageData = filters;
                nav.Push(hp);
            }
            else
            {
                if (filters == null ||
                    (filters != null && filters.AllFilters == null && filters.StructureSearch == null) ||
                    (filters != null && filters.AllFilters != null && filters.AllFilters.Count == 0 && filters.StructureSearch == null)
                    )
                {
                    string selectedSource = filters.SelectedSource;
                    filters = res.PageData as AdvSearchFiltersAll;
                    if (selectedSource != null)
                    {
                        filters.SelectedSource = selectedSource;
                    }
                }
                else
                {
                    res.PageData  = filters;
                    res.IsVisible = true;
                    nav.Push(res);
                }
            }

            nav.LastNavigable = "AdvancedSearchResults";

            if (filters != null && filters.AllFilters != null)
            {
                foreach (var item in filters.AllFilters)
                {
                    var pUnits            = materialContextUow.PropertyUnits.AllAsNoTracking.Where(n => n.PropertyID == item.propertyId).ToList();
                    PropertyUnitModel pum = new PropertyUnitModel()
                    {
                        PropertyType = item.propertyType,
                        UniqueID     = Guid.NewGuid().ToString("N"),
                        PropertyID   = item.propertyId,
                        PropertyName = item.propertyName,
                        IsPropertyConditionsActive = item.isPropertyConditionsActive,
                        Units = new List <UnitModel>()
                    };
                    foreach (var u in pUnits.Where(i => i.UnitKey != null))
                    {
                        pum.Units.Add(new UnitModel()
                        {
                            Factor = (double)u.Factor, Metric = (bool)u.Metric, Offset = (double)u.Offset, UnitKey = (int)u.UnitKey, UnitLabel = u.UnitLabel
                        });
                    }
                    pum.SelectedUnit    = item.unitId;
                    pum.SelectedBinary  = item.binaryOperators;
                    pum.SelectedLogical = item.logicalOperators;
                    pum.ValueFrom       = item.valueFrom_orig == null ? "" : item.valueFrom_orig.ToString();
                    pum.ValueTo         = item.valueTo_orig == null ? "" : item.valueTo_orig.ToString();

                    // Fill property conditions
                    pum.PropertyConditions = new List <PropertyConditionModel>();

                    foreach (var cond in item.PropertyConditions)
                    {
                        PropertyConditionModel oneCondition = new PropertyConditionModel()
                        {
                            Condition = new AdvSearchPropertyConditions()
                            {
                                PropertyID = cond.Condition.PropertyID,
                                X_label    = cond.Condition.X_label,
                                UnitGroup  = cond.Condition.UnitGroup
                            },
                            SelectedLogical = cond.SelectedLogical,
                            ValueFrom       = cond.ValueFrom,
                            ValueTo         = cond.ValueTo
                        };
                        oneCondition.FillUnits();

                        pum.PropertyConditions.Add(oneCondition);
                    }


                    units.Add(pum);
                }

                adv.PageData = units;
            }



            System.Web.HttpContext.Current.Session["Navigation"] = nav;
            return(filters);
        }
        public ActionResult FullTextSearchOnly(SearchFilters filters)
        {
            BaseSearchModel model = new BaseSearchModel();

            model = _searchResultsBinder.GetResultsFullTextSearch(filters, new GridDescriptor(new SortDescriptor()
            {
                PropertyName = "Name", Order = SortOrder.Ascending
            }), materialContextUow);

            model.HasSearchFilters = HasSearchFiltersEnum.Yes;


            BreadcrumbNavigation nav = (BreadcrumbNavigation)System.Web.HttpContext.Current.Session["Navigation"];

            if (nav == null)
            {
                nav = new BreadcrumbNavigation();
            }
            if (nav.Contains("AdvancedSearch"))
            {
                AdvancedSearchNav asn = nav.GetOrderedItems().Where(n => n.NavigableID == "AdvancedSearch").FirstOrDefault() as AdvancedSearchNav;
                asn.PageData  = null;
                asn.IsVisible = false;
            }
            if (nav.Contains("AdvancedSearchResults"))
            {
                AdvancedSearchResults asn = nav.GetOrderedItems().Where(n => n.NavigableID == "AdvancedSearchResults").FirstOrDefault() as AdvancedSearchResults;
                asn.PageData  = null;
                asn.IsVisible = false;
            }
            if (nav.Contains("Exporter"))
            {
                nav.Pop();
            }
            if (nav.Contains("Comparison"))
            {
                nav.Pop();
            }
            if (nav.Contains("MaterialDetails1"))
            {
                nav.Pop();
            }
            if (nav.Contains("Subgroups"))
            {
                nav.Pop();
            }
            if (nav.Contains("BrowseFacets"))
            {
                nav.Pop();
            }
            if (nav.Contains("BrowseHome"))
            {
                nav.Pop();
            }
            System.Web.HttpContext.Current.Session["AdvancedSearchFilter"] = null;

            Session["ClassificationSelection"] = null;
            Session["ClassificationIds"]       = "";
            IDictionary <string, object> allFilters = new Dictionary <string, object>();

            allFilters.Add("filters", filters);
            allFilters.Add("advFilters", null);
            FullSearch fs = nav.GetOrderedItems().Where(n => n.NavigableID == "FullSearch").FirstOrDefault() as FullSearch;

            if (fs == null)
            {
                fs = new FullSearch();
            }
            fs.IsVisible      = true;
            fs.PageData       = allFilters;
            nav.LastNavigable = "FullSearch";
            nav.Push(fs);
            new TableFiltersBinder().resetAllTableFilters();
            return(View("Search", model));
        }
        public IDictionary <string, object> BreadcrumbNavigationGetSet(SearchFilters filters, AdvSearchFiltersAll advFilters, bool browse = false, string classIds = "")
        {
            BreadcrumbNavigation nav = (BreadcrumbNavigation)System.Web.HttpContext.Current.Session["Navigation"];

            if (nav == null)
            {
                nav = new BreadcrumbNavigation();
            }
            if (nav.Contains("Exporter"))
            {
                nav.Pop();
            }
            if (nav.Contains("Comparison"))
            {
                nav.Pop();
            }
            if (nav.Contains("MaterialDetails1"))
            {
                nav.Pop();
            }
            if (nav.Contains("Subgroups"))
            {
                nav.Pop();
            }
            IDictionary <string, object> allFilters = new Dictionary <string, object>();

            foreach (var item in nav.GetOrderedItems().Where(n => n.NavigableID != "HomePage"))
            {
                item.IsVisible = false;
            }
            if (browse)
            {
                allFilters.Add("filters", filters);

                nav.GetOrderedItems().Where(n => n.NavigableID == "BrowseHome").FirstOrDefault().IsVisible = true;

                BrowseFacets bf = nav.GetOrderedItems().Where(n => n.NavigableID == "BrowseFacets").FirstOrDefault() as BrowseFacets;
                if (bf == null)
                {
                    bf = new BrowseFacets();

                    bf.PageData = allFilters;
                }
                else
                {
                    if (filters.ClasificationId == 0)
                    {
                        allFilters = (Dictionary <string, object>)bf.PageData;
                    }
                    else
                    {
                        bf.PageData = allFilters;
                    }
                }
                bf.IsVisible      = true;
                nav.LastNavigable = "BrowseFacets";
                nav.Push(bf);
            }
            else
            {
                allFilters.Add("filters", filters);
                allFilters.Add("advFilters", advFilters);


                if (nav.Contains("AdvancedSearch"))
                {
                    AdvancedSearchNav asn = nav.GetOrderedItems().Where(n => n.NavigableID == "AdvancedSearch").FirstOrDefault() as AdvancedSearchNav;
                    asn.PageData  = null;
                    asn.IsVisible = false;
                }
                if (nav.Contains("AdvancedSearchResults"))
                {
                    AdvancedSearchResults asn = nav.GetOrderedItems().Where(n => n.NavigableID == "AdvancedSearchResults").FirstOrDefault() as AdvancedSearchResults;
                    asn.PageData  = null;
                    asn.IsVisible = false;
                }
                FullSearch fs = nav.GetOrderedItems().Where(n => n.NavigableID == "FullSearch").FirstOrDefault() as FullSearch;
                if (fs == null)
                {
                    HomePage hp = new HomePage();
                    hp.PageData         = 0;
                    ViewBag.TabSelected = hp.PageData;
                    nav.LastNavigable   = "HomePage";
                    hp.IsVisible        = true;
                    nav.Push(hp);

                    fs          = new FullSearch();
                    fs.PageData = allFilters;
                }
                else
                {
                    if (filters.filter == null && (filters.Source == null || filters.Source == "0") && (advFilters == null || advFilters.AllFilters == null))
                    {
                        allFilters = (Dictionary <string, object>)fs.PageData;
                    }
                    else
                    {
                        fs.PageData = allFilters;
                    }
                    if (!string.IsNullOrWhiteSpace(classIds))
                    {
                        Session["ClassificationIds"] = classIds;
                    }
                }

                fs.IsVisible      = true;
                nav.LastNavigable = "FullSearch";
                nav.Push(fs);
            }

            System.Web.HttpContext.Current.Session["Navigation"] = nav;
            return(allFilters);
        }