public async Task <ActionResult <Category> > PostCategory(Category category) { if (category.CategoryUp == "Root") { category.NodePath = "/1/"; category.parentId = 0; } if (category.CategoryUp == "N/A") { category.NodePath = "/1/"; category.parentId = -1; } else { category.parentId = _context.Categorys.FirstOrDefault(x => x.Name == category.CategoryUp).Id; var parentNode = new byte[2147483591]; var lastChild = new Category(); try { parentNode = _context.Categorys.FirstOrDefault(x => x.Name == category.CategoryUp).Node; } catch (Exception ex) { return(BadRequest(new { message = "Parent does not exist. Please verified the spelling or Add this as a parent first. => Error message: " + ex.Message })); } try { lastChild = _context.Categorys.Where(x => x.CategoryUp == category.CategoryUp) .OrderByDescending(x => x.Node) .FirstOrDefault(); SqlHierarchyId lastSqlNode = HierarchyExtensions.ToSqlHierarchyId(lastChild.Node); category.Node = HierarchyExtensions.ToByteArray(HierarchyExtensions.ToSqlHierarchyId(parentNode).GetDescendant(lastSqlNode, new SqlHierarchyId())); if (category.CategoryUp == "N/A") { category.NodePath = "/1/"; category.parentId = -1; } } catch (Exception ex) { category.Node = HierarchyExtensions.ToByteArray(HierarchyExtensions.ToSqlHierarchyId(parentNode).GetDescendant(new SqlHierarchyId(), new SqlHierarchyId())); } } _context.Categorys.Add(category); await _context.SaveChangesAsync(); return(CreatedAtAction("GetCategory", new { id = category.Id }, category)); }
public async Task <ActionResult <NewDomain> > PostNewDomain(NewDomain newDomain) { //Check if the Domain Type is valid if (newDomain.DomainTypeId > 7 || newDomain.DomainTypeId < 1) { return(BadRequest(new { message = @"The Domain Type Id is not valid. Valid numbers => 1: Root, 2: Company, 3: Sales Division, 4: Sales District, 5: Profit Center, 6: Distribution Center, 7: Operation Center" })); } if (newDomain.Parentt == "N/A") { newDomain.NodePath = "/1/"; } else { var parentNode = new byte[2147483591]; var lastChild = new NewDomain(); try { parentNode = _context.NewDomains.FirstOrDefault(x => x.DomainName == newDomain.Parentt).Node; } catch (Exception ex) { return(BadRequest(new { message = "Parent does not exist. Please verified the spelling or Add this as a parent first. => Error message: " + ex.Message })); } try { lastChild = _context.NewDomains.Where(x => x.Parentt == newDomain.Parentt) .OrderByDescending(x => x.Node) .FirstOrDefault(); SqlHierarchyId lastSqlNode = HierarchyExtensions.ToSqlHierarchyId(lastChild.Node); newDomain.Node = HierarchyExtensions.ToByteArray(HierarchyExtensions.ToSqlHierarchyId(parentNode).GetDescendant(lastSqlNode, new SqlHierarchyId())); } catch (Exception ex) { newDomain.Node = HierarchyExtensions.ToByteArray(HierarchyExtensions.ToSqlHierarchyId(parentNode).GetDescendant(new SqlHierarchyId(), new SqlHierarchyId())); } } _context.NewDomains.Add(newDomain); await _context.SaveChangesAsync(); return(CreatedAtAction("GetNewDomain", new { id = newDomain.DomainId }, newDomain)); }
public async Task <ActionResult <IEnumerable <CategoryToReturnDto> > > GetCategory(int id, int parentId) { var categorys = await _context.Categorys.Where(x => (x.Name != "Root" && x.Name != "All Categories" && x.Name != "Motors")).ToListAsync(); var toReturn = new List <CategoryToReturnDto>(); if (parentId != 0) { var parent = await _context.Categorys.FindAsync(parentId); var parentNode = HierarchyExtensions.ToSqlHierarchyId(parent.Node); foreach (var item in categorys) { var node = HierarchyExtensions.ToSqlHierarchyId(item.Node); if (node.GetLevel().ToSqlInt32() == id && node.GetAncestor(1) == parentNode) { var alt = new CategoryToReturnDto(); alt.Id = item.Id; alt.Name = item.Name; alt.hasSubCategory = item.hasSubCategory; alt.parentId = item.parentId; toReturn.Add(alt); } } } else { foreach (var item in categorys) { var node = HierarchyExtensions.ToSqlHierarchyId(item.Node); if (node.GetLevel().ToSqlInt32() == id) { var alt = new CategoryToReturnDto(); alt.Id = item.Id; alt.Name = item.Name; alt.hasSubCategory = item.hasSubCategory; alt.parentId = item.parentId; toReturn.Add(alt); } } } return(toReturn); }
private static Category setCategory(StoreContext _context, Category category) { var parentNode = new byte[2147483591]; var lastChild = new Category(); parentNode = _context.Categorys.FirstOrDefault(x => x.Name == category.CategoryUp).Node; try { lastChild = _context.Categorys.Where(x => x.CategoryUp == category.CategoryUp) .OrderByDescending(x => x.Node) .FirstOrDefault(); SqlHierarchyId lastSqlNode = HierarchyExtensions.ToSqlHierarchyId(lastChild.Node); category.Node = HierarchyExtensions.ToByteArray(HierarchyExtensions.ToSqlHierarchyId(parentNode).GetDescendant(lastSqlNode, new SqlHierarchyId())); } catch (Exception ex) { category.Node = HierarchyExtensions.ToByteArray(HierarchyExtensions.ToSqlHierarchyId(parentNode).GetDescendant(new SqlHierarchyId(), new SqlHierarchyId())); } return(category); }
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)));; }