public IHttpActionResult Post([FromBody] InvoiceDTO value) { try { if (value == null) { return(BadRequest()); } string userName = null; if (HttpContext.Current != null && HttpContext.Current.User != null && HttpContext.Current.User.Identity.Name != null) { userName = HttpContext.Current.User.Identity.Name; } if (value.Amount != value.InvoiceItems.Sum(it => it.Amount)) { return(BadRequest("Invocie Amount Miss Match with total Invoice Item Amount")); } if (value.GST != value.InvoiceItems.Sum(it => it.GST)) { return(BadRequest("Invocie GST Miss Match with total Invoice Item GST")); } var invoice = value.ToDomain(); invoice.CreateUser = userName; invoice.ChangeUser = userName; invoice.Concurrency = Guid.NewGuid(); _InvoiceRepo.Add(invoice); _uow.SaveChanges(); if (invoice.ID > 0) { return(Created <InvoiceDTO>(Request.RequestUri + "/" + invoice.ID, invoice.ToDTO())); } return(BadRequest()); } catch (Exception ex) { return(InternalServerError()); } }
public IHttpActionResult Put(int id, [FromBody] InvoiceDTO value) { if (value == null) { return(BadRequest()); } string userName = null; if (HttpContext.Current != null && HttpContext.Current.User != null && HttpContext.Current.User.Identity.Name != null) { userName = HttpContext.Current.User.Identity.Name; } if (value.Amount != value.InvoiceItems.Sum(it => it.Amount)) { return(BadRequest("Invocie Amount Miss Match with total Invoice Item Amount")); } if (value.GST != value.InvoiceItems.Sum(it => it.GST)) { return(BadRequest("Invocie GST Miss Match with total Invoice Item GST")); } var originalInvoice = _InvoiceRepo.Get() .Include(i => i.InvoiceItems.Select(ii => ii.ProductInvoiceItem)) .Include(i => i.InvoiceItems.Select(ii => ii.JsonInvoiceItem)) .FirstOrDefault <Invoice>(c => c.ID == id); if (originalInvoice == null) { return(NotFound()); } var invoice = value.ToDomain(originalInvoice); invoice.ChangeUser = userName; invoice.Concurrency = Guid.NewGuid(); _InvoiceRepo.Update(invoice); try { _uow.SaveChanges(); return(Created <InvoiceDTO>(Request.RequestUri + "/" + invoice.ID, invoice.ToDTO())); } catch (DbEntityValidationException ex) { //StringBuilder sb = new StringBuilder(); //foreach (var failure in ex.EntityValidationErrors) //{ // sb.AppendFormat("{0} failed validation\n", failure.Entry.Entity.GetType()); // foreach (var error in failure.ValidationErrors) // { // sb.AppendFormat("- {0} : {1}", error.PropertyName, error.ErrorMessage); // sb.AppendLine(); // } //} // throw new DbEntityValidationException( // "Entity Validation Failed - errors follow:\n" + // sb.ToString(), ex //); // Add the original exception as the innerException return(InternalServerError()); } catch (Exception ex) { return(InternalServerError()); } }