コード例 #1
0
        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 }));
        }
コード例 #2
0
 private EditInvoicePositionViewModel PrepareInvoicePositionVm(InvoicePossition invoicePosition)
 {
     return(new EditInvoicePositionViewModel
     {
         InvoicePosition = invoicePosition,
         Heading = invoicePosition.Id == 0 ?
                   "Dodawanie nowej pozycji" :
                   "Edycja Pozycja",
         Products = _productRepository.GetProducts()
     });
 }
コード例 #3
0
        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();
            }
        }
コード例 #4
0
        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();
            }
        }