public ActionResult InvoicePosition(InvoicePossition invoicePosition) { var userId = User.Identity.GetUserId(); // zweryfikujemy, czy uzytkownik próbuje zaktualizować swoją fakturę // dodajemy lub aktualizujemy pozycję faktury // wyliczymy wartość pozycji // wyliczymy i zaktualizujemy wrtość faktury if (!ModelState.IsValid) { var vm = PrepareInvoicePositionVm(invoicePosition); return(View("InvoicePosition", vm)); } var product = _productRepository.GetProduct(invoicePosition.ProductId); invoicePosition.Value = product.Value * invoicePosition.Quantity; if (invoicePosition.Id == 0) { _invoiceRepository.AddPosition(invoicePosition, userId); } else { _invoiceRepository.UpdatePosition(invoicePosition, userId); } _invoiceRepository.UpdateInvoiceValue(invoicePosition.InvoiceId, userId); return(RedirectToAction("Invoice", new { id = invoicePosition.InvoiceId })); }
private EditInvoicePositionViewModel PrepareInvoicePositionVm(InvoicePossition invoicePosition) { return(new EditInvoicePositionViewModel { InvoicePosition = invoicePosition, Heading = invoicePosition.Id == 0 ? "Dodawanie nowej pozycji" : "Edycja Pozycja", Products = _productRepository.GetProducts() }); }
public void AddPosition(InvoicePossition invoicePosition, string userId) { // na początku musimy się upewnić, czy użytkownik dodaje pozycje do swojej faktury // czyli sprawdzamy czy istnieje faktura o id takim jak id dodawnej pozycji // i czy ta faktura przynależy do użytkownika using (var context = new ApplicationDbContext()) { var invoiceToUpdate = context.Invoices .Single(x => x.Id == invoicePosition.InvoiceId && x.UserId == userId); // jeżeli nie ma takiego rekordu to zostanie rzucony wyjątek context.InvoicePossitions.Add(invoicePosition); context.SaveChanges(); } }
public void UpdatePosition(InvoicePossition invoicePosition, string userId) { using (var context = new ApplicationDbContext()) { // pobieramy pozycje z faktury var invoicePositionToUpdate = context.InvoicePossitions .Include(x => x.Product) .Include(x => x.Invoice) .Single(x => x.Id == invoicePosition.Id && x.Invoice.UserId == userId); var productInInvoicePossition = context.Products .Single(x => x.Id == invoicePosition.ProductId); invoicePositionToUpdate.Lp = invoicePosition.Lp; invoicePositionToUpdate.ProductId = invoicePosition.ProductId; invoicePositionToUpdate.Quantity = invoicePosition.Quantity; invoicePositionToUpdate.Value = invoicePosition.Quantity * productInInvoicePossition.Value; context.SaveChanges(); } }