public async Task <IActionResult> Get(
            string searchTerm,
            int pageIndex,
            int itemsPerPage,
            string orderBy)
        {
            var serviceModel = new GetProductAttributesServiceModel
            {
                PageIndex    = pageIndex,
                ItemsPerPage = itemsPerPage,
                SearchTerm   = searchTerm,
                OrderBy      = orderBy,
                Language     = CultureInfo.CurrentCulture.Name
            };

            var validator = new GetProductAttributesModelValidator();

            var validationResult = await validator.ValidateAsync(serviceModel);

            if (validationResult.IsValid)
            {
                var productAttributes = await this.productAttributesService.GetAsync(serviceModel);

                if (productAttributes != null)
                {
                    var response = new PagedResults <IEnumerable <ProductAttributeResponseModel> >(productAttributes.Total, productAttributes.PageSize)
                    {
                        Data = productAttributes.Data.OrEmptyIfNull().Select(x => new ProductAttributeResponseModel
                        {
                            Id               = x.Id,
                            Name             = x.Name,
                            Order            = x.Order,
                            LastModifiedDate = x.LastModifiedDate,
                            CreatedDate      = x.CreatedDate
                        })
                    };

                    return(this.StatusCode((int)HttpStatusCode.OK, response));
                }
            }

            throw new CustomException(string.Join(ErrorConstants.ErrorMessagesSeparator, validationResult.Errors.Select(x => x.ErrorMessage)), (int)HttpStatusCode.UnprocessableEntity);
        }
Ejemplo n.º 2
0
        public async Task <PagedResults <IEnumerable <ProductAttributeServiceModel> > > GetAsync(GetProductAttributesServiceModel model)
        {
            var productAttributes = this.context.ProductAttributes.Where(x => x.IsActive);

            if (!string.IsNullOrWhiteSpace(model.SearchTerm))
            {
                productAttributes = productAttributes.Where(x => x.ProductAttributeTranslations.Any(x => x.Name.StartsWith(model.SearchTerm) && x.IsActive));
            }

            productAttributes = productAttributes.ApplySort(model.OrderBy);

            var pagedProductAttributes = productAttributes.PagedIndex(new Pagination(productAttributes.Count(), model.ItemsPerPage), model.PageIndex);

            var pagedProductAttributeServiceModels = new PagedResults <IEnumerable <ProductAttributeServiceModel> >(pagedProductAttributes.Total, pagedProductAttributes.PageSize);

            var productAttributeServiceModels = new List <ProductAttributeServiceModel>();

            foreach (var pagedProductAttribute in pagedProductAttributes.Data.ToList())
            {
                var productAttributeServiceModel = new ProductAttributeServiceModel
                {
                    Id               = pagedProductAttribute.Id,
                    Order            = pagedProductAttribute.Order,
                    LastModifiedDate = pagedProductAttribute.LastModifiedDate,
                    CreatedDate      = pagedProductAttribute.CreatedDate
                };

                var productAttributeTranslations = pagedProductAttribute.ProductAttributeTranslations.FirstOrDefault(x => x.Language == model.Language && x.IsActive);

                if (productAttributeTranslations == null)
                {
                    productAttributeTranslations = pagedProductAttribute.ProductAttributeTranslations.FirstOrDefault(x => x.IsActive);
                }

                productAttributeServiceModel.Name = productAttributeTranslations?.Name;

                productAttributeServiceModels.Add(productAttributeServiceModel);
            }

            pagedProductAttributeServiceModels.Data = productAttributeServiceModels;

            return(pagedProductAttributeServiceModels);
        }