public DTO.Product CreateProduct(Product product) { return new DTO.Product() { Id=product.Id, Code = product.Code, Created = product.Created, Desc = product.Desc, Modified = product.Modified, ProductCategoryId = product.ProductCategoryId, ProductPrices = product.ProductPrices == null ? new List<DTO.ProductPrice>() : product.ProductPrices.Select(p => productPriceFactory.CreateProductPrice(p)).ToList(), }; }
public RepositoryActionResult<Product> AddProduct(Product newProduct) { try { //Adds new product _ctx.Products.Add(newProduct); //Saves Changes var result = _ctx.SaveChanges(); //Returns Product & Status if (result > 0) { return new RepositoryActionResult<Product>(newProduct, RepositoryActionStatus.Created); } else { return new RepositoryActionResult<Product>(newProduct, RepositoryActionStatus.NothingModified, null); } } catch (Exception ex) { return new RepositoryActionResult<Product>(null, RepositoryActionStatus.Error, ex); } }
public RepositoryActionResult<Product> UpdateProduct(Product updatedProduct) { try { // Only update when product already exists var existingProduct = _ctx.Products.FirstOrDefault(b => b.Id == updatedProduct.Id); if (existingProduct == null) { return new RepositoryActionResult<Product>(updatedProduct, RepositoryActionStatus.NotFound); } // Change the original entity status to detached; otherwise, we get an error on attach // as the entity is already in the dbSet // set original entity state to detached _ctx.Entry(existingProduct).State = EntityState.Detached; // attach & save _ctx.Products.Attach(updatedProduct); // set the updated entity state to modified, so it gets updated. _ctx.Entry(updatedProduct).State = EntityState.Modified; // Save Changes var result = _ctx.SaveChanges(); //Returns Book & Status if (result > 0) { return new RepositoryActionResult<Product>(updatedProduct, RepositoryActionStatus.Updated); } else { return new RepositoryActionResult<Product>(updatedProduct, RepositoryActionStatus.NothingModified, null); } } catch (Exception ex) { return new RepositoryActionResult<Product>(null, RepositoryActionStatus.Error, ex); } }