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()); }
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)));; }