Ejemplo n.º 1
0
        public async Task <ActionResult> PublishItem([FromBody] ItemToReturnDto request)
        {
            var itemCreated = new ItemForServBus {
                Id                = request.Id,
                Name              = request.Name,
                Description       = request.Description,
                OldPrice          = request.OldPrice,
                NewPrice          = request.NewPrice,
                Discount          = request.Discount,
                RatingsCount      = request.RatingsCount,
                RatingsValue      = request.RatingsValue,
                availibilityCount = request.availibilityCount,
                cartCount         = request.cartCount,
                Weight            = request.Weight,
                CategoryId        = request.CategoryId,
                BrandName         = request.BrandName
            };

            await _messagePublisher.Publish(itemCreated);

            return(Ok());
        }
Ejemplo n.º 2
0
        public async Task <ActionResult <Pagination <ItemToReturnDto> > > GetItems(
            [FromQuery] ItemSpecParams itemParams)
        {
            //Get the category choose
            if (itemParams.CategoryId == null)
            {
                itemParams.CategoryId = 0 /*Root*/;
            }
            if (itemParams.BrandId == null)
            {
                //Initialize the BrandId List
                itemParams.BrandId = new List <int?>();
            }
            itemParams.SubCategory = new List <int?>();
            itemParams.SubCategory.Add(itemParams.CategoryId);
            var cat = await _context.Categorys.Where(x => x.Id == itemParams.CategoryId).FirstOrDefaultAsync();

            SqlHierarchyId catNode = HierarchyExtensions.ToSqlHierarchyId(cat.Node);

            //Get all subCategories
            var allCategories = await _context.Categorys.ToListAsync();

            var subCategorys = new List <Category>();

            // Select all subcategories
            foreach (var cats in allCategories)
            {
                SqlHierarchyId node = HierarchyExtensions.ToSqlHierarchyId(cats.Node);
                if (node.IsDescendantOf(catNode) && node != catNode)
                {
                    subCategorys.Add(cats);
                    itemParams.SubCategory.Add(cats.Id);
                }
            }

            var spec = new ItemsWithTypesAndBrandsSpecification(itemParams);

            var countSpec = new ItemWithFiltersForCountSpecificication(itemParams);

            var totalItems = await _itemsRepo.CountAsync(countSpec);

            var items = await _itemsRepo.ListAsync(spec);

            IList <ItemToReturnDto> itemsToReturns = new List <ItemToReturnDto>();

            foreach (var elts in items)
            {
                int id = elts.Id;

                List <string>           colorName = new List <string>();
                List <string>           sizeName = new List <string>();
                List <ReviewDto>        reviewList = new List <ReviewDto>();
                List <ImageToReturnDto> imageList = new List <ImageToReturnDto>();
                int ratingsCount = 0; int ratingsValue = 0;

                var colors = await _context.Colors.Where(x => x.ItemId == id).ToListAsync();

                if (colors.Count > 0)
                {
                    elts.Color = colors;
                    foreach (var elt in elts.Color)
                    {
                        colorName.Add(elt.Name);
                    }
                }
                var sizes = await _context.Sizes.Where(x => x.ItemId == id).ToListAsync();

                if (sizes.Count > 0)
                {
                    elts.Size = sizes;
                    foreach (var elt in elts.Size)
                    {
                        sizeName.Add(elt.Name);
                    }
                }
                var images = await _context.Images.Where(x => x.ItemId == id).ToListAsync();

                if (images.Count > 0)
                {
                    elts.Images = images;
                    foreach (var elt in elts.Images)
                    {
                        ImageToReturnDto img = new ImageToReturnDto();
                        img.small  = (ApiUrl + elt.UrlSmall);
                        img.medium = (ApiUrl + elt.UrlMedium);
                        img.big    = (ApiUrl + elt.UrlBig);
                        imageList.Add(img);
                    }
                }
                var reviews = await _context.Reviews.Where(x => x.ItemId == id).ToListAsync();

                if (reviews.Count > 0)
                {
                    elts.Review = reviews;
                    foreach (var elt in elts.Review)
                    {
                        ReviewDto rev = new ReviewDto();
                        rev.ReviewerName  = elt.ReviewerName;
                        rev.ReviewerPhoto = (ApiUrl + elt.ReviewerPhoto);
                        rev.ReviewMessage = elt.ReviewMessage;
                        rev.rate          = elt.rate;
                        if (elt.rate == 1)
                        {
                            rev.sentiment = "sentiment_very_dissatisfied";
                        }
                        else if (elt.rate == 2)
                        {
                            rev.sentiment = "sentiment_dissatisfied";
                        }
                        else if (elt.rate == 3 || elt.rate == 4)
                        {
                            rev.sentiment = "sentiment_satisfied";
                        }
                        else if (elt.rate == 5)
                        {
                            rev.sentiment = "sentiment_very_satisfied";
                        }
                        rev.ReviewDate = elt.ReviewDate;
                        reviewList.Add(rev);
                        ratingsCount++;
                        ratingsValue += elt.rate;
                    }
                }

                var itemsToReturn = new ItemToReturnDto
                {
                    Id                    = id,
                    Name                  = elts.Name,
                    Description           = elts.Description,
                    OldPrice              = elts.OldPrice,
                    NewPrice              = elts.NewPrice,
                    Discount              = elts.Discount,
                    RatingsCount          = ratingsCount,
                    RatingsValue          = ratingsValue,
                    availibilityCount     = elts.availibilityCount,
                    cartCount             = elts.cartCount,
                    TechnicalDescription  = elts.TechnicalDescription,
                    AdditionalInformation = elts.AdditionalInformation,
                    Weight                = elts.Weight,
                    Color                 = colorName,
                    Size                  = sizeName,
                    Images                = imageList,
                    Reviews               = reviewList,
                    CategoryId            = elts.Category.Id,
                    BrandName             = elts.ProductBrand.Name,
                    CategoryName          = elts.Category.Name,
                    PictureUrl            = ApiUrl + elts.PictureUrl
                };
                itemsToReturns.Add(itemsToReturn);
            }


            //var data = _mapper
            //    .Map<IReadOnlyList<Item>, IReadOnlyList<ItemToReturnDto>>(items);

            return(Ok(new Pagination1 <ItemToReturnDto>(itemParams.PageIndex, itemParams.PageSize, totalItems, itemsToReturns)));;
        }