public async Task <IActionResult> Create([Bind("Id,ProductCode,Name,Description,Price")] Product product)
        {
            if (ModelState.IsValid)
            {
                _context.Add(product);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(product));
        }
        public async Task <IActionResult> Create([Bind("Id,CustomerCode,CustomerType,Name,Web,Email,PhoneNumber")] Customer customer)
        {
            if (ModelState.IsValid)
            {
                _context.Add(customer);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(customer));
        }
        public async Task <IActionResult> Create(int id, [FromForm][Bind("Quantity,Price,SelectedProductId")] InvoiceItem invoiceItem)
        {
            ModelState.Clear();

            var invoice = await _context.Invoice
                          .Include(i => i.Customer)
                          .Include(i => i.Items).ThenInclude(itm => itm.Product)
                          .FirstOrDefaultAsync(i => i.Id == id);

            if (invoice is null)
            {
                return(Redirect(Url.Action("Index", "Invoices")));
            }

            invoiceItem.Invoice           = invoice;
            invoiceItem.AvailableProducts = await _context.Product.ToListAsync();

            var product = await _context.Product.FirstOrDefaultAsync(p => p.Id == invoiceItem.SelectedProductId);

            if (product is null)
            {
                ModelState.AddModelError("SelectedProductId", "Unable to find product");
                return(View(invoice));
            }

            invoiceItem.Product = product;

            if (ModelState.IsValid)
            {
                _context.InvoiceItem.Add(invoiceItem);
                await _context.SaveChangesAsync();

                return(Redirect(Url.Action("Details", "Invoices", new { invoiceItem.Invoice.Id })));
            }

            return(View(invoiceItem));
        }
        public async Task <IActionResult> Create([Bind("SerialNumber,InvoiceNumber,InvoiceDate,SelectedCustomerId")] Invoice invoice)
        {
            ModelState.Clear();
            var customer = await _context.Customer.FirstOrDefaultAsync(c => c.Id == invoice.SelectedCustomerId);

            if (customer is null)
            {
                ModelState.AddModelError("SelectedCustomerId", "Unable to find customer");
                return(View(invoice));
            }

            invoice.Customer = customer;

            if (ModelState.IsValid)
            {
                invoice.DueDate = invoice.InvoiceDate.AddDays(DueDays);

                _context.Add(invoice);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(invoice));
        }