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"));
        }
        public async Task <IActionResult> CreateMerchant([FromBody] MerchantToCreateDto customerToCreateDto)
        {
            var customerToCreate = _mapper.Map <Merchant>(customerToCreateDto);

            if (await _repository.EntityExists(customerToCreate))
            {
                return(BadRequest("Merchant Name Exists"));
            }
            _repository.Add(customerToCreate);
            if (await _repository.SaveAllChangesAsync())
            {
                return(CreatedAtRoute("GetMerchant", new { id = customerToCreate.Id }, customerToCreate));
            }
            return(BadRequest("An Error occurred while creating the Merchant"));
        }
        public async Task <IActionResult> CreateCategory([FromBody] CategoryToCreateDto categoryToCreateDto)
        {
            var categoryToCreate = _mapper.Map <Category>(categoryToCreateDto);

            if (await _repository.EntityExists(categoryToCreate))
            {
                return(BadRequest("Category Name Exists"));
            }
            _repository.Add(categoryToCreate);
            if (await _repository.SaveAllChangesAsync())
            {
                return(CreatedAtRoute("GetMerchant", new { id = categoryToCreate.Id }, categoryToCreate));
            }
            return(BadRequest("An Error occurred while creating the Category"));
        }
Exemple #4
0
        public async Task <IActionResult> CreateStore([FromBody] StoreToCreateDto storeToCreateDto)
        {
            var storeToCreate = _mapper.Map <Store>(storeToCreateDto);

            if (await _repository.EntityExists(storeToCreate))
            {
                return(BadRequest("Store with the same name and location exists"));
            }
            _repository.Add(storeToCreate);
            if (await _repository.SaveAllChangesAsync())
            {
                return(CreatedAtRoute("GetStore", new { id = storeToCreate.Id }, storeToCreate));
            }
            return(BadRequest("An Error occurred while creating the store"));
        }
        public async Task <IActionResult> CreateBrand([FromBody] BrandToCreateDto brandToCreateDto)
        {
            var categoryFromRepo = await _repository.GetCategory(brandToCreateDto.CategoryId);

            var brandToCreate = _mapper.Map <Brand>(brandToCreateDto);

            if (await _repository.EntityExists(brandToCreate))
            {
                return(BadRequest("Brand Name Exists"));
            }
            _repository.Add(brandToCreate);
            if (await _repository.SaveAllChangesAsync())
            {
                var brandToReturn = _mapper.Map <BrandToCreateDto>(brandToCreateDto);
                return(CreatedAtRoute("GetBrand", new { id = brandToCreate.Id }, brandToReturn));
            }
            return(BadRequest("An Error occurred while creating the brand"));
        }