Ejemplo n.º 1
0
        public async Task <bool> IsDuplicateProductHeaderAsync(NewProductHeaderDto productHeader)
        {
            //Check header
            var duplicate = await _dbContext.ProductHeaders.AnyAsync(c =>
                                                                     c.Model.Equals(productHeader.Model, StringComparison.InvariantCultureIgnoreCase));

            if (duplicate)
            {
                return(true);
            }

            var products = productHeader.Products.ToList();

            //Check duplicates in product list
            for (int i = 0; i < products.Count; i++)
            {
                for (int j = i + 1; j < products.Count; j++)
                {
                    if (products[i].Code.Equals(products[j].Code, StringComparison.InvariantCultureIgnoreCase)
                        //|| (products[i].Size.Id == products[j].Size.Id
                        //&& products[i].ColorPrimary.Id == products[j].ColorPrimary.Id
                        //&& products[i].ColorSecondary.Id == products[j].ColorSecondary.Id
                        //&& products[i].ExtraDescription.Equals(products[j].ExtraDescription, StringComparison.InvariantCultureIgnoreCase))
                        )
                    {
                        return(true);
                    }
                }
            }

            //Check for duplicates codes in db
            var productCodes = products.Select(p => p.Code).ToList();

            return(await _dbContext.Products.AnyAsync(p => productCodes.Contains(p.Code)));
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> AddProductHeader([FromBody] NewProductHeaderDto newProductHeader)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    return(BadRequest(ModelState));
                }

                if (await _productRepository.IsDuplicateProductHeaderAsync(newProductHeader))
                {
                    ModelState.AddModelError("productHeader", "A product already exists");
                    return(BadRequest(ModelState));
                }

                var productHeaderId = await _productRepository.AddProductHeaderAsync(newProductHeader);

                if (productHeaderId > 0)
                {
                    return(Ok(productHeaderId));
                }

                return(StatusCode(500, "An error ocurred in server"));
            }
            catch (Exception e)
            {
                _logger.LogCritical($"POST {Route} - {e.GetType().Name} - {e.Message} - {e.StackTrace}");
                return(StatusCode(500, "An error ocurred in server"));
            }
        }
Ejemplo n.º 3
0
        public async Task <int> AddProductHeaderAsync(NewProductHeaderDto newProductHeader)
        {
            var productHeader = new ProductHeader
            {
                Model            = newProductHeader.Model,
                Description      = newProductHeader.Description,
                ShortDescription = newProductHeader.ShortDescription,
                SubCategoryId    = newProductHeader.SubCategory.Id,
                BrandId          = newProductHeader.Brand.Id,
                IsActive         = true
            };

            var products = new List <Product>();

            foreach (var productDto in newProductHeader.Products)
            {
                products.Add(new Product
                {
                    Code             = productDto.Code,
                    ExtraDescription = productDto.ExtraDescription,
                    Price            = productDto.Price,
                    SpecialPrice     = productDto.SpecialPrice,
                    CreateDate       = DateTime.Now,
                    SizeId           = productDto.Size.Id,
                    ColorPrimaryId   = productDto.ColorPrimary.Id,
                    ColorSecondaryId = productDto.ColorSecondary.Id,
                    IsActive         = true
                });
            }

            productHeader.Products = products;

            await _dbContext.ProductHeaders.AddAsync(productHeader);

            if (await _dbContext.SaveChangesAsync() > 0)
            {
                return(productHeader.Id);
            }

            return(0);
        }