Ejemplo n.º 1
0
    protected override bool PerformSearch(string query, bool isQuick)
    {
        DateTime       start  = DateTime.Now;
        PXEntitySearch search = new PXEntitySearch();

        List <PXSearchResult> searchResults = new List <PXSearchResult>();

        Search.NavigationHandler = delegate(string args) { return(NavHandler(args, searchResults)); };
        search.IgnoreCache       = Search.CurrentPage == 0 ? true : false;
        searchResults.AddRange(search.Search(query, Search.CurrentPage * 20, 20));
        if (searchResults.Count == 0)
        {
            Search.DisplaySearchTips(query, SearchTips);
            return(false);
        }

        int i = Search.CurrentPage * 20;

        Search.MaxDescriptionColumns = search.MaxDescriptionColumns;
        foreach (PXEntitySearch.Result res in searchResults)
        {
            Search.DisplayResult(res);
            i++;
        }

        TimeSpan span = DateTime.Now.Subtract(start);

        Search.DisplayResult(PXMessages.LocalizeFormatNoPrefix(Messages.SearchResultsShort, HttpUtility.HtmlEncode(query), this.ctrlSearch.FormatTimeResult(span)));
        Search.PagesCount   = search.TotalCount % 20 == 0 ? search.TotalCount / 20 : search.TotalCount / 20 + 1;
        Search.PagerHasPrev = search.HasPrevPage;
        Search.PagerHasNext = search.HasNextPage;
        return(true);
    }
Ejemplo n.º 2
0
	protected override bool PerformSearch(string query, bool isQuick)
	{
		DateTime start = DateTime.Now;
		PXEntitySearch search = new PXEntitySearch();

		List<PXSearchResult> searchResults = new List<PXSearchResult>();
		Search.NavigationHandler = delegate(string args) { return NavHandler(args, searchResults); };
		search.IgnoreCache = Search.CurrentPage == 0 ? true : false;
		searchResults.AddRange(search.Search(query, Search.CurrentPage * 20, 20));
		if (searchResults.Count == 0)
		{
			Search.DisplaySearchTips(query, SearchTips);
			return false;
		}

		int i = Search.CurrentPage * 20;
		Search.MaxDescriptionColumns = search.MaxDescriptionColumns;
		foreach (PXEntitySearch.Result res in searchResults)
		{
			Search.DisplayResult(res);
			i++;
		}

		TimeSpan span = DateTime.Now.Subtract(start);
		Search.DisplayResult(PXMessages.LocalizeFormatNoPrefix(Messages.SearchResultsShort, HttpUtility.HtmlEncode(query), this.ctrlSearch.FormatTimeResult(span)));
		Search.PagesCount = search.TotalCount % 20 == 0 ? search.TotalCount / 20 : search.TotalCount / 20 + 1;
		Search.PagerHasPrev = search.HasPrevPage;
		Search.PagerHasNext = search.HasNextPage;
		return true;
	}
    private bool NavHandler(string args)
    {
        Guid noteID = Guid.Parse(args.Split(':')[1]);

        try
        {
            PXEntitySearch search = new PXEntitySearch();
            search.Redirect(noteID);
        }
        catch (PXRedirectRequiredException ex)
        {
            string url = PX.Web.UI.PXDataSource.getMainForm(ex.Graph.GetType());
            if (url != null)
            {
                ex.Graph.Unload();
                PXContext.Session.RedirectGraphType[PXUrl.ToAbsoluteUrl(url)] = ex.Graph.GetType();
                throw new PXRedirectRequiredException(url, ex.Graph, "Redirect0:" + this.ResolveUrl/**/ (url));
            }
        }
        return(false);
    }

    private bool NavHandlerFiles(string args)
    {
        try
        {
            String FileName = args.Split(':')[1];
            WikiFileMaintenance      graph = PXGraph.CreateInstance <WikiFileMaintenance>();
            UploadFileWithIDSelector cur   =
                PXSelect <UploadFileWithIDSelector,
                          Where <UploadFileWithIDSelector.name,
                                 Equal <Required <UploadFileWithIDSelector.name> > > > .Select(graph, HttpUtility.UrlDecode(FileName));

            if (cur != null)
            {
                graph.Files.Current = cur;
            }
            PXRedirectHelper.TryRedirect(graph, PXRedirectHelper.WindowMode.Same);
        }
        catch (PXRedirectRequiredException ex)
        {
            string url = PX.Web.UI.PXDataSource.getMainForm(ex.Graph.GetType());
            if (url != null)
            {
                ex.Graph.Unload();
                PXContext.Session.RedirectGraphType[PXUrl.ToAbsoluteUrl(url)] = ex.Graph.GetType();
                throw new PXRedirectRequiredException(url, ex.Graph, "Redirect0:" + this.ResolveUrl/**/ (url));
            }
        }
        return(false);
    }
    protected bool PerformSearchEntity(string query, int page)
    {
        Debug.Print("PerformSearch: {0}", query);
        Stopwatch sw = new Stopwatch();

        sw.Start();

        DateTime       start  = DateTime.Now;
        PXEntitySearch search = new PXEntitySearch();

        search.Category = GetCategory();

        if (!search.IsFullText())
        {
            ShowFullTextWarning();
        }

        List <EntitySearchResult> searchResults = search.Search(query, page, 10);

        if (searchResults.Count == 0)
        {
            if (!search.IsSearchIndexExists())
            {
                DisplayIndexTips();
            }
            else
            {
                DisplaySearchTips(query);
            }

            return(false);
        }

        RenderResultsEntity(searchResults);


        linkPrev.Visible = search.HasPrevPage;
        linkNext.Visible = search.HasNextPage;
        StorePages(-search.PreviousIndex, search.NextIndex);


        sw.Stop();
        Debug.Print("PerformSearch Completed in {0} millisec.", sw.ElapsedMilliseconds);

        return(true);
    }
Ejemplo n.º 5
0
        public virtual IEnumerable obfuscatedItems()
        {
            string query = null;

            foreach (PXFilterRow filter in PXView.Filters)
            {
                query += filter.Value + " ";
            }

            query = query?.Trim();

            if (!String.IsNullOrWhiteSpace(query))
            {
                var searchGraph = new PXEntitySearch();

                if (searchGraph.IsFullText())
                {
                    if (!IsExactMatch(query))
                    {
                        if (FullTextCapability.Value == BqlFullTextRenderingMethod.MySqlMatchAgainst)
                        {
                            query = ConvertToContainsPaternMySql(query);
                        }
                        else
                        {
                            query = ConvertToContainsPatern(query);
                        }
                    }

                    var selectIndexed = new PXSelectReadonly <SMPersonalDataIndex, Where <Contains <SMPersonalDataIndex.content, Required <SMPersonalDataIndex.content>, SMPersonalDataIndex.indexID> >, OrderBy <Desc <RankOf <SMPersonalDataIndex.content> > > >(this);

                    return(selectIndexed.Select(query));
                }
                else
                {
                    var selectNonIndexed = new PXSelectReadonly <SearchIndex, Where <SearchIndex.content, Like <Required <SearchIndex.content> > > >(this);

                    return(selectNonIndexed.Select(string.Format("%{0}%", query)));
                }
            }

            var select = new PXSelectReadonly <SMPersonalDataIndex>(this);

            return(select.Select());
        }
    protected virtual void Page_LoadComplete(object sender, EventArgs e)
    {
        string noteID = Request.Params["navigate"];

        if (!string.IsNullOrEmpty(noteID))
        {
            try
            {
                PXEntitySearch search = new PXEntitySearch();
                search.Redirect(Guid.Parse(noteID));
            }
            catch (PXRedirectRequiredException ex)
            {
                string url = PX.Web.UI.PXDataSource.getMainForm(ex.Graph.GetType());
                if (url != null)
                {
                    ex.Graph.Unload();
                    PXContext.Session.RedirectGraphType[PXUrl.ToAbsoluteUrl(url)] = ex.Graph.GetType();
                    Response.Redirect(this.ResolveUrl/**/ (url));
                    //throw new PXRedirectRequiredException(url, ex.Graph, "Redirect0:" + this.ResolveUrl/**/(url));
                }
            }
        }

        string fileName = Request.Params["file"];

        if (!string.IsNullOrEmpty(fileName))
        {
            try
            {
                WikiFileMaintenance      graph = PXGraph.CreateInstance <WikiFileMaintenance>();
                UploadFileWithIDSelector cur   =
                    PXSelect <UploadFileWithIDSelector,
                              Where <UploadFileWithIDSelector.name,
                                     Equal <Required <UploadFileWithIDSelector.name> > > > .Select(graph, HttpUtility.UrlDecode(fileName));

                if (cur != null)
                {
                    graph.Files.Current = cur;
                }
                PXRedirectHelper.TryRedirect(graph, PXRedirectHelper.WindowMode.Same);
            }
            catch (PXRedirectRequiredException ex)
            {
                string url = PX.Web.UI.PXDataSource.getMainForm(ex.Graph.GetType());
                if (url != null)
                {
                    ex.Graph.Unload();
                    PXContext.Session.RedirectGraphType[PXUrl.ToAbsoluteUrl(url)] = ex.Graph.GetType();
                    Response.Redirect(this.ResolveUrl/**/ (url));
                    //throw new PXRedirectRequiredException(url, ex.Graph, "Redirect0:" + this.ResolveUrl/**/(url));
                }
            }
        }
        //if (Page.IsPostBack && !Page.IsCallback)
        //	AcceptInput();

        //int page = 0;
        //int.TryParse(Request.Params["page"], out page);
        string query = TrimLongString(txtSearch.Text);

        switch (searchType)
        {
        case SearchService.SearchLookupType.ActiveModule:
        case SearchService.SearchLookupType.AllEntities:
            if (PerformSearchEntity(query, pageIndex))
            {
                divMessage.Visible = false;
            }
            break;

        case SearchService.SearchLookupType.ActiveWiki:
        case SearchService.SearchLookupType.AllHelp:
            if (PerformSearchArticle(query, pageIndex))
            {
                divMessage.Visible = false;
            }
            break;

        case SearchService.SearchLookupType.Files:
            if (PerformSearchFile(query, pageIndex))
            {
                divMessage.Visible = false;
            }
            break;
        }
    }