public async Task <IActionResult> Post(ProductToCreateDto productToCreate)
        {
            var  product = this._mapper.Map <Product>(productToCreate);
            long id      = await this._productsRepository.InsertAsync(product);

            return(Created(id.ToString(), product));
        }
        public async Task <ActionResult> CreateProduct([FromBody] ProductToCreateDto productToCreate)
        {
            bool isSuccess = false;

            if (ModelState.IsValid)
            {
                isSuccess = await _productService.AddProduct(productToCreate);
            }

            if (!isSuccess)
            {
                return(BadRequest());
            }

            return(NoContent());
        }
        public async Task <IActionResult> CreateProduct([FromBody] ProductToCreateDto productToCreateDto)
        {
            var productToCreate = _mapper.Map <Product>(productToCreateDto);

            if (await _repository.EntityExists(productToCreate))
            {
                return(BadRequest("Product With Same Name and Vendor Exists"));
            }
            var category = await _repository.GetCategory(productToCreate.CategoryId);

            if (category == null)
            {
                return(BadRequest("Invalid Category Id"));
            }
            var productCode = await _repository.GenerateProductCode(productToCreateDto.CategoryId);

            if (productToCreateDto.Price == 0)
            {
                return(BadRequest("Invalid Price"));
            }
            var merchant = await _repository.GetMerchant(productToCreateDto.MerchantId);

            if (merchant == null)
            {
                return(BadRequest("The Merchant for whom this product is to be created does not exist"));
            }
            var brand = await _repository.GetBrand(productToCreateDto.BrandId);

            if (brand == null)
            {
                return(BadRequest("The Brand for whom this product is to be created does not exist"));
            }
            var store = await _repository.GetStore(productToCreateDto.StoreId);

            if (store == null)
            {
                return(BadRequest("The Store for which this product is to be stored does not exist"));
            }
            productToCreate.Code = productCode;
            store.Products.Add(productToCreate);
            if (await _repository.SaveAllChangesAsync())
            {
                var productToReturn = _mapper.Map <ProductToReturnDto>(productToCreate);
                return(CreatedAtRoute("GetProduct", new { code = productToReturn.Code }, productToReturn));
            }
            return(BadRequest("An Error occurred while creating product"));
        }
Exemple #4
0
        public async Task <IActionResult> RegisterProduct(ProductToCreateDto productToCreateDto)
        {
            // var company = await _repo.GetCompany(productToCreateDto.CompanyId);
            // if(company == null) {
            //     return BadRequest("Can't Find Company");
            // }
            if (await _repo.ToRegisterProductExist(productToCreateDto.ProductName, productToCreateDto.CompanyId))
            {
                return(BadRequest("Name Already Exist"));
            }
            var productToCreate = _mapper.Map <Product>(productToCreateDto);
            var productFromRepo = await _repo.RegisterProduct(productToCreate);

            var productToReturn = _mapper.Map <ProductToReturnDto>(productFromRepo);

            return(Ok(productToReturn));
        }
        public async Task <ActionResult <Product> > CreateProduct(ProductToCreateDto productToCreate)
        {
            var product = _mapper.Map <ProductToCreateDto, Product>(productToCreate);

            product.PictureUrl = "images/products/placeholder.png";

            _unitOfWork.Repository <Product>().Add(product);

            var result = await _unitOfWork.Complete();

            if (result <= 0)
            {
                return(BadRequest(new ApiResponse(400, "Problem creating product")));
            }

            return(Ok(product));
        }
        public async Task <ActionResult <Product> > UpdateProduct(int id, ProductToCreateDto productToUpdate)
        {
            var product = await _unitOfWork.Repository <Product>().GetByIdAsync(id);

            productToUpdate.PictureUrl = product.PictureUrl;

            _mapper.Map(productToUpdate, product);

            _unitOfWork.Repository <Product>().Update(product);

            var result = await _unitOfWork.Complete();

            if (result <= 0)
            {
                return(BadRequest(new ApiResponse(400, "Problem updating product")));
            }

            return(Ok(product));
        }
Exemple #7
0
        public async Task <ActionResult <ProductDto> > CreateProduct(ProductToCreateDto createDto)
        {
            if (_repository.IsExist(x => x.Name.ToLower() == createDto.Name.ToLower()))
            {
                return(BadRequest(new ApiResponse(400, $"{createDto.Name} already exists")));
            }

            var product = _mapper.Map <Product>(createDto);

            product.Id        = Guid.NewGuid().ToString();
            product.CreatedBy = HttpContext.User.RetrieveEmailFromPrincipal();
            await _repository.Add(product);

            if (await _unitOfWork.Complete() <= 0)
            {
                return(BadRequest(new ApiResponse(400, $"An error occured while trying to insert")));
            }

            return(CreatedAtRoute("GetProduct", new { productId = product.Id },
                                  _mapper.Map <ProductDto>(product)));
        }
        public async Task <IActionResult> Put(string code, [FromBody] ProductToCreateDto productToUpdateDto)
        {
            if (code != productToUpdateDto.Code)
            {
                return(BadRequest(" The id of the product to update does not corresppnd woth that on the route of the request"));
            }
            var productFromRepo = await _repository.GetProduct(productToUpdateDto.Code);

            if (productFromRepo == null)
            {
                return(NotFound());
            }
            var productToUpdate = _mapper.Map <ProductToCreateDto, Product>(productToUpdateDto, productFromRepo);

            _repository.Update(productToUpdate);
            if (await _repository.SaveAllChangesAsync())
            {
                var productToReturn = _mapper.Map <ProductToReturnDto>(productToUpdate);
                return(NoContent());
            }
            return(BadRequest($"An Error occurred while trying to update product with code {productToUpdate.Code}"));
        }