public IActionResult Post([FromBody] ProductCreation product)
        {
            if (product == null)
            {
                return(BadRequest());
            }

            if (product.Name == "产品")
            {
                ModelState.AddModelError("Name", "产品的名称不可以是'产品'二字");
            }

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var newProduct = Mapper.Map <Product>(product);

            _productRepository.AddProduct(newProduct);
            if (!_productRepository.Save())
            {
                return(StatusCode(500, "保存产品的时候出错"));
            }

            var dto = Mapper.Map <ProductWithoutMaterialDto>(newProduct);

            return(CreatedAtRoute("GetProduct", new { id = dto.Id }, dto));
        }
        public IActionResult Post([FromBody] ProductCreation product)
        {
            if (product == null)
            {
                return(BadRequest());
            }

            if (product.Name == "产品")
            {
                ModelState.AddModelError("Name", "产品的名称不可以是'产品'二字");
            }

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var maxId      = ProductService.Current.Products.Max(x => x.Id);
            var newProduct = new ProductDto
            {
                Id          = ++maxId,
                Name        = product.Name,
                Price       = product.Price,
                Description = product.Description
            };

            ProductService.Current.Products.Add(newProduct);

            return(CreatedAtRoute("GetProduct", new { id = newProduct.Id }, newProduct));
        }
Example #3
0
        public IActionResult Create([FromBody] ProductCreation product)
        {
            if (product != null)
            {
                if (ModelState.IsValid)
                {
                    var maxId = ProductService.Current.products.Max(x => x.Id);

                    var newProduct = new Products
                    {
                        Id          = ++maxId,
                        Name        = product.Name,
                        Price       = product.Price,
                        Description = product.Description
                    };


                    //addproduct
                    ProductService.Current.products.Add(newProduct);
                    return(CreatedAtRoute("GetProduct", new { id = newProduct.Id }, newProduct));
                }

                return(BadRequest(ModelState));
            }

            return(BadRequest());
        }
Example #4
0
        public IActionResult Post([FromBody] ProductCreation product)
        {
            if (product == null)
            {
                _logger.LogInformation($"product参数为空");
                return(BadRequest());
            }

            if (product.Name.Equals("产品"))
            {
                ModelState.AddModelError("Name", "产品的名称不能是\"产品\"二字");
            }

            // validation
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var newProduct = new Product
            {
                Id    = _productService.NewId,
                Name  = product.Name,
                Price = product.Price
            };

            _productService.Add(newProduct);

            return(CreatedAtRoute("GetProduct", new { id = newProduct.Id }, newProduct));
        }
Example #5
0
        public IActionResult Post([FromBody] ProductCreation product) //[FromBody] , 请求的body里面包含着方法需要的实体数据, 方法需要把这个数据Deserialize成ProductCreation, [FromBody]就是干这些活的.
        {
            if (product == null)
            {
                return(BadRequest());
            }
            //对请求过来的数据进行验证(与模型上的一样可以在ModelState 验证)
            if (product.Name == "产品")
            {
                ModelState.AddModelError("Name", "产品的名称不可以是'产品'二字");
            }

            //模型验证问题 模型规则已在模型特性上加上 如果没通过那么返回BadRequest
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));//ModelState: 是一个Dictionary, 它里面是请求提交到Action的Name和Value的对们, 一个name对应着model的一个属性, 它也包含了一个针对每个提交的属性的错误信息的集合.
            }

            var maxId      = ProductService.Current.Products.Max(x => x.Id);
            var newProduct = new Product
            {
                Id          = ++maxId,
                Name        = product.Name,
                Price       = product.Price,
                Description = product.Description
            };

            ProductService.Current.Products.Add(newProduct);

            return(CreatedAtRoute("GetProduct", new { id = newProduct.Id }, newProduct));//返回指定名字路由 第二个参数为对应方法参数 ,第三个参数为实体数据
        }
        public IActionResult Post([FromBody] ProductCreation product)
        {
            if (product == null)
            {
                return(BadRequest());
            }

            if (product.Name == "你妹")
            {
                // 后期用FluentValidation实现验证逻辑
                ModelState.AddModelError("Name", "你妹咯!");
            }

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var newProduct = Mapper.Map <Product>(product);

            _productRepository.AddProduct(newProduct);
            if (!_productRepository.Save())
            {
                _logger.LogCritical($"【保存产品{product.Name}的时候出错】");
                return(StatusCode(500, "保存产品的时候出错"));
            }

            var dto = Mapper.Map <ProductWithoutMaterialDto>(newProduct);

            return(CreatedAtRoute("GetProduct", new { id = dto.Id }, dto));
        }
Example #7
0
        public IActionResult AddProduct([FromForm] ProductCreation product)
        {
            if (product == null)
            {
                return(BadRequest());
            }

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            return(new JsonResult(new { isSuccess = true }));
        }
Example #8
0
 public IActionResult Post(ProductCreation product)
 {
     //验证数据合法性
     if (product == null)
     {
         return(BadRequest());
     }
     //验证字段
     if (ModelState.IsValid)
     {
         //insert
         return(CreatedAtRoute("", "", "'"));
     }
     return(BadRequest(ModelState));
 }
Example #9
0
        public IActionResult CreateProduct([FromBody] ProductCreation product)
        {
            var maxProductId = ProductsDataStore.Current.Products.Max(p => p.Id);
            var newProduct   = new ProductDto()
            {
                Id    = ++maxProductId,
                Name  = product.Name,
                Price = product.Price
            };

            ProductsDataStore.Current.Products.Add(newProduct);

            var productToReturn = ProductsDataStore.Current.Products.FirstOrDefault(c => c.Id == newProduct.Id);

            return(Ok(productToReturn));
        }
        public IActionResult Post([FromBody] ProductCreation product)
        {
            if (product == null)
            {
                return(BadRequest());
            }

            //Data Annotation
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            //复杂验证,自定义
            if (product.Name == "name")
            {
                ModelState.AddModelError("Name", "产品名称不能是‘name’");
                return(BadRequest(ModelState));
            }

            ////获取目前存在的最大id
            //var maxId = ProductService.Current().Products.Max(t => t.Id);

            //var newProduct = new ProductDto
            //{
            //    Id = ++maxId,
            //    Name = product.Name,
            //    Price = product.Price,
            //    Description = product.Description
            //};

            //ProductService.Current().Products.Add(newProduct);

            var newProduct = Mapper.Map <Product>(product);

            _productRepository.AddProduct(newProduct);
            if (!_productRepository.Save())
            {
                return(StatusCode(500, "保存产品的时候出错"));
            }

            var dto = Mapper.Map <ProductWithoutMaterialDto>(newProduct);

            //return CreatedAtRoute("GetProduct", new { id = newProduct.Id }, newProduct);
            return(CreatedAtRoute("GetProduct", new { id = dto.Id }, dto));
        }
Example #11
0
        public IActionResult Post([FromForm] ProductCreation product)
        {
            var uniqfilename = "defult.png";

            if (product.Photo != null)
            {
                uniqfilename = UplodFile(product.Photo);
            }
            var productToAdd = new Product()
            {
                Name        = product.Name,
                LastUpdated = DateTime.UtcNow,
                Price       = product.Price,
                PhotoPath   = uniqfilename,
            };
            var prop = _reboproducts.Add(productToAdd);

            return(Ok(prop));
        }
Example #12
0
        public IActionResult Post([FromBody] ProductCreation product)
        {
            if (product == null)
            {
                return(BadRequest());
            }
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            var maxId      = ProductService.CurrentProducts.Products.Max(x => x.Id);
            var newProduct = new Product
            {
                Id    = ++maxId,
                Name  = product.Name,
                Price = product.Price
            };

            ProductService.CurrentProducts.Products.Add(newProduct);
            return(CreatedAtRoute("GetProduct", new { id = newProduct.Id }, newProduct));
        }
        //FromBody  请求的body里面包含着方法需要的实体数据,方法需要把这个数据 Deserialize 成ProductCreation
        public IActionResult Post([FromBody] ProductCreation product)
        {
            if (product == null)
            {
                return(BadRequest());
            }

            if (!ModelState.IsValid)
            {
                //这里的ModelState 是一个Dictionary
                return(BadRequest(ModelState));
            }

            if (product.Name == "产品")
            {
                ModelState.AddModelError("Name", "产品的名称不可以是'产品'二字");
                return(BadRequest(ModelState));
            }

            //var maxId = ProductService.Current.Products.Max(x => x.Id);
            //var newProduct = new ProductDto
            //{
            //    Id = ++maxId,
            //    Name = product.Name,
            //    Price = product.Price,
            //    Description = product.Description
            //};
            //ProductService.Current.Products.Add(newProduct);

            var newProduct = Mapper.Map <Product>(product);

            _productRepository.AddProduct(newProduct);
            if (!_productRepository.Save())
            {
                return(StatusCode(500, "保存产品的时候出错!!"));
            }
            var dto = Mapper.Map <ProductWithoutMaterialDto>(newProduct);

            return(CreatedAtRoute("GetProduct", new { id = dto.Id }, dto));
        }
        public void SincronizaProdutos()
        {
            RefreshToken();

            var products = _productService.SearchProducts(categoryIds: null,
                                                          pageSize: int.MaxValue,
                                                          showHidden: true);

            ProductResponse[] GetProductResponse = null;
            ProductResponse   ProductResponse    = null;

            CategoryResponse[] CategoryResponse = null;
            var ContaAzulMiscSettings           = _settingService.LoadSetting <ContaAzulMiscSettings>();

            foreach (var item in products)
            {
                var product   = new ProductMessage();
                var categoria = "?name=Mercadoria para Revenda";
                //busca a categoria no conta azul para obter o id:
                using (var getcategory = new GetCategory(ContaAzulMiscSettings.UseSandbox))
                    CategoryResponse = getcategory.CreateAsync(ContaAzulMiscSettings.access_token, categoria).ConfigureAwait(false).GetAwaiter().GetResult();

                // var categoria = _categoryService.GetProductCategoryById(item.Id);

                product.name            = item.Name;
                product.value           = Math.Round(item.Price, 1);
                product.cost            = Math.Round(item.ProductCost);
                product.available_stock = item.StockQuantity;
                product.net_weight      = Math.Round(item.Weight, 3);
                product.category_id     = CategoryResponse[0].id;
                product.gross_weight    = Math.Round(item.Weight, 3);

                try
                {
                    var filtro = "?name=" + item.Name;

                    using (var getproduct = new GetProduct(ContaAzulMiscSettings.UseSandbox))
                        GetProductResponse = getproduct.CreateAsync(null, ContaAzulMiscSettings.access_token, filtro).ConfigureAwait(false).GetAwaiter().GetResult();

                    if (GetProductResponse.Count() > 0)
                    {
                        var productTable = _contaAzulProductService.GetProduct(GetProductResponse[0]);
                        //caso ele não exista na tabela relacional do banco, insere e atualiza no conta azul
                        if (productTable == null)
                        {
                            using (var productCreation = new ProductCreation(ContaAzulMiscSettings.UseSandbox))
                                ProductResponse = productCreation.CreateAsyncUpdate(product, GetProductResponse[0].id.ToString(), ContaAzulMiscSettings.access_token).ConfigureAwait(false).GetAwaiter().GetResult();

                            if (ProductResponse != null)
                            {
                                var productContaAzul = new ProductContaAzul();

                                productContaAzul.ContaAzulId = ProductResponse.id;
                                productContaAzul.ProductId   = item.Id;
                                productContaAzul.DataCriacao = DateTime.Now;
                                _contaAzulProductService.InsertProduct(productContaAzul);
                            }
                        }
                        else
                        {//caso já existe no banco, só verifica se houve alteração e faz o update no conta azul
                            product.id = productTable.ContaAzulId.ToString();

                            var objetoContaAzul = JsonConvert.SerializeObject(GetProductResponse[0]);
                            var objetoAtualizar = JsonConvert.SerializeObject(product);

                            var data = objetoAtualizar.Equals(objetoContaAzul);

                            if (!objetoAtualizar.Equals(objetoContaAzul))
                            {
                                using (var productCreation = new ProductCreation(ContaAzulMiscSettings.UseSandbox))
                                    ProductResponse = productCreation.CreateAsyncUpdate(product, productTable.ContaAzulId.ToString(), ContaAzulMiscSettings.access_token).ConfigureAwait(false).GetAwaiter().GetResult();
                            }
                        }
                    }
                    else
                    {//caso ele não exista no conta azul, faz a inserção dele no conta azul e no banco de dados
                        var data2 = JsonConvert.SerializeObject(product);

                        using (var productCreation = new ProductCreation(ContaAzulMiscSettings.UseSandbox))
                            ProductResponse = productCreation.CreateAsync(product, ContaAzulMiscSettings.access_token).ConfigureAwait(false).GetAwaiter().GetResult();

                        if (ProductResponse != null)
                        {
                            var productContaAzul = new ProductContaAzul();

                            productContaAzul.ContaAzulId = ProductResponse.id;
                            productContaAzul.ProductId   = item.Id;
                            productContaAzul.DataCriacao = DateTime.Now;
                            _contaAzulProductService.InsertProduct(productContaAzul);
                        }
                    }
                }
                catch (Exception ex)
                {
                    _logger.Error(ex.Message, ex);
                }
            }
        }