コード例 #1
0
ファイル: CategoryController.cs プロジェクト: Ektiva/ynet
        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));
        }
コード例 #2
0
        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));
        }
コード例 #3
0
ファイル: CategoryController.cs プロジェクト: Ektiva/ynet
        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);
        }
コード例 #4
0
ファイル: StoreContextSeed.cs プロジェクト: Ektiva/ynet
        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);
        }
コード例 #5
0
ファイル: ItemsController.cs プロジェクト: Ektiva/ynet
        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)));;
        }