public IHttpActionResult DeleteInvoiceItem(InvoiceItemDTO dto) { if (!ModelState.IsValid) return BadRequest(ModelState); InvoiceItem itemToDelete = _invoiceItemService.GetById(dto.InvoiceItemId); if (itemToDelete == null) return NotFound(); _invoiceItemService.Delete(itemToDelete); return Ok(); }
public IHttpActionResult PutInvoiceItem(InvoiceItemDTO dto) { if (!ModelState.IsValid) return BadRequest(ModelState); if (dto.InvoiceItemId == 0) { // We are adding a new InvoiceItem. InvoiceItem item = _mapper.Map(dto); _invoiceItemService.Insert(item); } else { // We are updating an existing InvoiceItem. InvoiceItem invoiceItem = _invoiceItemService.GetById(dto.InvoiceItemId); if (invoiceItem == null) return NotFound(); else { if (invoiceItem.InvoiceId != dto.InvoiceId) return BadRequest(string.Format("Invalid data. The InvoiceId provided in your request ({0}) does not match the InvoiceId associated with this InvoiceItem ({1}).", dto.InvoiceId, invoiceItem.InvoiceId)); Product myProduct = _productService.GetById(dto.ProductId); if (myProduct == null) return BadRequest(string.Format("The ProductId provided in your request is invalid. There is no product with ID {0}.", dto.ProductId)); // Update these fields with the user input. invoiceItem.Notes = dto.Notes; invoiceItem.Quantity = dto.Quantity; invoiceItem.SortOrder = dto.SortOrder; invoiceItem.ProductId = dto.ProductId; invoiceItem.UnitPrice = decimal.Parse(dto.UnitPrice); // Copy these from the database instead of relying on user input. invoiceItem.ProductDescription = myProduct.Description; invoiceItem.IsProductTaxable = myProduct.IsTaxable; } _invoiceItemService.Update(invoiceItem); } return Ok(); }