Esempio n. 1
0
        public IResponseBase Execute(IRequestParameter parameters)
        {
            var result = new Response <SearchResponse>();

            _request = (SearchRequest)parameters;

            try
            {
                if (_request.Href != null)
                {
                    var cacheKey = string.Format(Config.CacheKeys.Search, _request.Href, _request.Page, _request.PageSize);
                    IsViewAllProductSearch = _request.Href.Contains("view-all");
                    IsEmailCamPaign        = _request.Href.ToLower().Contains("utm_medium=email");
                    result = CacheMemory.Get <Response <SearchResponse> >(cacheKey);
                    if (result.resultset != null && string.IsNullOrWhiteSpace(result.resultset.Href))
                    {
                        _hrefLookup = HrefLookup.Load(_core);
                        var config = BuildAPIConfig(parameters);

                        if (config != null)
                        {
                            result = GetResponse(config);
                        }

                        if (result.resultset.Filters != null && result.resultset.Filters.FilterSections != null)
                        {
                            result.resultset.Filters.FilterSections = SelectSpecifiedSize(result.resultset.Filters.FilterSections);
                        }

                        var href = ParsingHelper.GetHrefWithoutQueryString(_request.Href);
                        result.resultset.CategoryID = _hrefLookup.Forward.Get(href);
                        var resultVideos = CacheMemory.Get <Dictionary <string, PaylessMadCms.PromoSlot> >(Config.CacheKeys.CmsVideos);
                        if (resultVideos != null && resultVideos.Keys.Contains(href))
                        {
                            result.resultset.Promo = resultVideos[href];
                        }

                        if (!_errors.Any() && result.resultset.Products.Any())
                        {
                            CacheMemory.SetAndExpiresMinutesAsync(cacheKey, result, 15);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                _errors.Add(ex.Handle(string.Format("Search.Execute({0}):{1}-{2}", ex.LineNumber(), ex.Message, ex.StackTrace), ErrorSeverity.FollowUp, ErrorType.RequestError));
            }
            return(result);
        }
Esempio n. 2
0
 private void Update_MenuBy_CmsAndFtpFile(Response <MenuResponse> result)
 {
     try
     {
         var madDash = new PaylessMadCms(_core);
         var categoryImagesLookup = madDash.CategoryImages();
         var hrefLookup           = HrefLookup.Load(_core);
         if (_errors.Any() || !result.resultset.Menu.Any())
         {
             return;
         }
         Update_MenuHrefLookup(result.resultset.Menu, categoryImagesLookup, hrefLookup);
         Add_MenuItem_GiftCard(result);
         Add_MenuItem_Help(result);
     }
     catch (Exception ex)
     {
         _errors.Add(ex.Handle("Menu.Update_MenuBy_CmsAndFtpFile", ErrorSeverity.FollowUp, ErrorType.RequestError));
     }
 }
Esempio n. 3
0
        public IResponseBase Execute(IRequestParameter parameters)
        {
            var result = new Response <CategoryResponse>();

            try
            {
                _request = (CategoryRequest)parameters;
                var hrefLookup = HrefLookup.Load(_core);
                var catid      = hrefLookup.Forward.Get(ParsingHelper.GetHrefWithoutQueryString(_request.Href));
                var cacheKey   = string.Format(Config.CacheKeys.Category, catid);

                result = CacheMemory.Get <Response <CategoryResponse> >(cacheKey);
                if (result == null || string.IsNullOrWhiteSpace(result.resultset.CategoryID))
                {
                    var forwardDate = GetDateFromRequest();
                    var maddash     = new PaylessMadCms(_core);
                    result.resultset = maddash.GetCategoryData(catid, forwardDate);
                    var config      = BuildAPIConfig(parameters, catid);
                    var apiResponse = DWClient.GetAPIResponse <ProductSearchResult>(config);
                    if (apiResponse.ResponseStatus.Code == HttpStatusCode.OK)
                    {
                        result.resultset.Filters = new ExtendedFilter(apiResponse.Model.Refinements, null, hrefLookup);
                    }

                    result.resultset.CategoryID = catid;
                    if (result.errors.Count == 0)
                    {
                        CacheMemory.SetAndExpiresHoursAsync(cacheKey, result, 1);
                    }
                }
            }
            catch (Exception ex)
            {
                _errors.Add(ex.Handle("Category.Execute", ErrorSeverity.FollowUp, ErrorType.RequestError));
            }
            return(result);
        }