public async Task <IActionResult> AddProduct([FromBody] ProductSaveResource saveResource) { if (!_auth.IsAppAdmin(User)) { return(NoContent()); } if (!ModelState.IsValid) { return(BadRequest(ModelState)); } /* Pre-existence Test */ var filter = new MdaProductQuery() { PartNum = saveResource.PartNum, Active = 2 }; var productFromRepo = await _repo.GetProducts(filter); if (productFromRepo.Any()) { return(BadRequest($"Product with Part Number {saveResource.PartNum} already exists.")); } var product = _mapper.Map <MdaProduct>(saveResource); product.CreatedBy = User.Identity.Name; _repo.Add(product); if (await _repo.SaveAll()) { return(Ok(product)); } return(BadRequest("Failed to add product")); }
public async Task <IActionResult> UpdateProduct(int id, [FromBody] ProductSaveResource saveResource) { if (!_auth.IsAppAdmin(User)) { return(NoContent()); } if (!ModelState.IsValid) { return(BadRequest(ModelState)); } /* Existence Test */ var productFromRepo = await _repo.GetProduct(id); if (productFromRepo == null) { return(BadRequest($"Product {id} could not be found.")); } /* Pre-existence Test */ var filter = new MdaProductQuery() { PartNum = saveResource.PartNum, Active = 2 }; var productFromRepoExisting = await _repo.GetProducts(filter); if (productFromRepoExisting.Any()) { var existingProduct = productFromRepoExisting.FirstOrDefault(); if (existingProduct.Id != id) { return(BadRequest($"Product with Part Number {saveResource.PartNum} already exists.")); } else { if (existingProduct.PartNum == saveResource.PartNum && existingProduct.ProductModelId == saveResource.ProductModelId && existingProduct.ProductCapacityId == saveResource.ProductCapacityId) { if (existingProduct.Active == Convert.ToByte(saveResource.Active == true ? 1 : 0)) { return(BadRequest("Nothing was changed.")); } } } } _mapper.Map <ProductSaveResource, MdaProduct>(saveResource, productFromRepo); productFromRepo.ModifiedBy = User.Identity.Name; productFromRepo.ModifiedDate = DateTime.Now; if (await _repo.SaveAll()) { return(NoContent()); } return(BadRequest("Failed to update Product.")); }