Exemple #1
0
        public ActionResult Results(string q)
        {
            if (string.IsNullOrWhiteSpace(q))
            {
                return(RedirectToAction("Index"));
            }

            if (Regex.IsMatch(q.Trim().ToUpper(), "^[A-Z,0-9]{4,4}-[A-Z,0-9]{6,7}$"))
            {
                if (Repository.OfType <Order>().Queryable.Any(a => a.RequestNumber == q.Trim().ToUpper()))
                {
                    return(this.RedirectToAction <OrderController>(a => a.Lookup(q.Trim().ToUpper())));
                }
            }


            var orderIds = _accessQueryService.GetOrderAccess(_userIdentity.Current)
                           .Select(x => x.OrderId)
                           .Distinct()
                           .ToArray();

            SearchResultModel model;

            try
            {
                model = new SearchResultModel
                {
                    Query        = q,
                    Orders       = _searchService.SearchOrders(q, orderIds),
                    LineItems    = _searchService.SearchLineItems(q, orderIds),
                    Comments     = _searchService.SearchComments(q, orderIds),
                    CustomFields = _searchService.SearchCustomFieldAnswers(q, orderIds)
                };
            }
            catch (Exception ex) //If the search fails, return no results
            {
                Log.Error(ex, "Error searching for {query}", q);
                model = new SearchResultModel {
                    Query = q
                };
            }

            return(View(model));
        }
        public ActionResult Results(string q)
        {
            if (string.IsNullOrWhiteSpace(q))
            {
                return RedirectToAction("Index");
            }

            if (Regex.IsMatch(q.Trim().ToUpper(), "^[A-Z,0-9]{4,4}-[A-Z,0-9]{6,7}$"))
            {
                if (Repository.OfType<Order>().Queryable.Any(a => a.RequestNumber == q.Trim().ToUpper()))
                {
                    return this.RedirectToAction<OrderController>(a => a.Lookup(q.Trim().ToUpper()));
                }
            }

            var orderIds = _accessQueryService.GetOrderAccess(_userIdentity.Current)
                .Select(x=>x.OrderId)
                .Distinct()
                .ToArray();

            SearchResultModel model;

            try
            {
                model = new SearchResultModel
                {
                    Query = q,
                    Orders = _searchService.SearchOrders(q, orderIds),
                    LineItems = _searchService.SearchLineItems(q, orderIds),
                    Comments = _searchService.SearchComments(q, orderIds),
                    CustomFields = _searchService.SearchCustomFieldAnswers(q, orderIds)
                };
            }
            catch(Exception ex) //If the search fails, return no results
            {
                Log.Error(ex, "Error searching for {query}", q);
                model = new SearchResultModel {Query = q};
            }

            return View(model);
        }