public ActionResult Create(Invoice_ViewModel newInvoice) { try { if (ModelState.IsValid) { //Calculate the total amount of the entered invoice double amount = (newInvoice.BaseInvoiceViewModel.Price * newInvoice.BaseInvoiceViewModel.Quantity) + newInvoice.BaseInvoiceViewModel.Tax; //Check if the entered amount will not exceed the limit. if (!ValidateInvoiceEntry(amount)) { //Calculate what the invoice balance would be if this order would be added. double newAmount = amount + GetCurrentInvoiceSum(); //Throw a validation error that the new invoice exceeds the limit. ModelState.AddModelError("CustomerError", "Invoice limit exceeded: Adding this order of $" + amount + " would create an exceeding invoice balance of $" + newAmount); return View(newInvoice); } Customer customer = AddCustomerToDB(newInvoice); //Grab the "customerID" for the foreign key association int customerID = customer.CustomerID; AddNewInvoiceToDB(newInvoice, customerID); return RedirectToAction("Index"); } } catch (Exception ex) { return View("Error", new HandleErrorInfo(ex, "Create", "Invoice")); } return View(newInvoice); }
private Invoice SetupInvoiceObject(Invoice_ViewModel data, int customerID, int invoiceID, DateTime createdDate) { Invoice invoice = (new Invoice { CustomerID = customerID, InvoiceID = invoiceID, InvoiceCreationDate = createdDate, InvoiceDueDate = data.BaseInvoiceViewModel.InvoiceDueDate, ProductName = data.BaseInvoiceViewModel.ProductName, ProductDescription = data.BaseInvoiceViewModel.ProductDescription, Price = data.BaseInvoiceViewModel.Price, Quantity = data.BaseInvoiceViewModel.Quantity, Tax = data.BaseInvoiceViewModel.Tax }); return invoice; }
private Customer SetupCustomerObject(Invoice_ViewModel data, int customerID) { Customer cust = (new Customer { CustomerID = customerID, FirstName = data.BaseCustomerViewModel.FirstName, LastName = data.BaseCustomerViewModel.LastName, Email = data.BaseCustomerViewModel.Email }); return cust; }
private void ProcessEdit(Invoice_ViewModel data) { //Get both ID's int customerID = data.BaseInvoiceViewModel.CustomerID; int invoiceID = data.BaseInvoiceViewModel.InvoiceID; //Get the created date DateTime createdDate = GetInvoiceCreatedDate(invoiceID); //Setup the model object to save it in the DB var invoice = SetupInvoiceObject(data, customerID, invoiceID, createdDate); var customer = SetupCustomerObject(data, customerID); db.Entry(invoice).State = EntityState.Modified; db.Entry(customer).State = EntityState.Modified; db.SaveChanges(); }
private void AddNewInvoiceToDB(Invoice_ViewModel data, int customerID) { Invoice invoice = SetupInvoiceObject(data, customerID); db.Invoices.Add(invoice); db.SaveChanges(); }
//Takes entered data from the viewmodel and adds an entry to the DB private Customer AddCustomerToDB(Invoice_ViewModel data) { //Create a customer model object using our viewmodel. Customer customer = SetupCustomerObject(data); db.Customers.Add(customer); db.SaveChanges(); return customer; }
public ActionResult Edit(Invoice_ViewModel data) { try { if (ModelState.IsValid) { //Calculate the total amount of the entered invoice double amount = (data.BaseInvoiceViewModel.Price * data.BaseInvoiceViewModel.Quantity) + data.BaseInvoiceViewModel.Tax; //Check if the entered amount will not exceed the limit. if (!ValidateInvoiceEntry(amount)) { //Calculate what the invoice balance would be if this order would be added. double newAmount = amount + GetCurrentInvoiceSum(); //Throw a validation error that the new invoice exceeds the limit. ModelState.AddModelError("CustomerError", "Invoice limit exceeded: Adding this order of $" + amount + " would create an exceeding invoice balance of $" + newAmount); return View(data); } //Complete the edit request ProcessEdit(data); return RedirectToAction("Index"); } } catch (Exception ex) { return View("Error", new HandleErrorInfo(ex, "Edit", "Invoice")); } return View(data); }