public async Task <IActionResult> Edit(int id, InvoiceClientProjectViewModel model)
        {
            if (id != model.Invoice.InvoiceID)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                var invoiceFromDB = await _context.Invoice.FindAsync(model.Invoice.InvoiceID);

                invoiceFromDB.InvoicePrice  = model.Invoice.InvoicePrice;
                invoiceFromDB.InvoiceDate   = model.Invoice.InvoiceDate;
                invoiceFromDB.InvoiceExpiry = model.Invoice.InvoiceExpiry;
                invoiceFromDB.InvoiceNumber = model.Invoice.InvoiceNumber;

                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            InvoiceClientProjectViewModel modelVM = new InvoiceClientProjectViewModel()
            {
                ProjectList = await _context.Project.ToListAsync(),
                Invoice     = model.Invoice
            };

            return(View(modelVM));
        }
        public async Task <IActionResult> Create()
        {
            InvoiceClientProjectViewModel model = new InvoiceClientProjectViewModel()
            {
                ProjectList = await _context.Project.ToListAsync(),
                Invoice     = new Models.Invoice()
            };

            return(View(model));
        }
        public async Task <IActionResult> Create(Invoice invoice)
        {
            if (ModelState.IsValid)
            {
                DateTime dDate = new DateTime(0001, 01, 01);
                DateTime nDate = DateTime.Today;

                if (invoice.InvoiceDate == dDate)
                {
                    if (invoice.InvoiceExpiry == dDate)
                    {
                        var clientID     = _context.Project.Where(s => s.ProjectID == invoice.ProjectID).Select(s => s.ClientID).FirstOrDefault();
                        var invoicePrice = _context.Project.Where(s => s.ProjectID == invoice.ProjectID).Select(s => s.OffertePrice).FirstOrDefault();

                        invoice.InvoicePrice = invoicePrice;
                        invoice.ClientID     = clientID;

                        invoice.InvoiceExpiry = nDate.AddMonths(1);
                        invoice.InvoiceDate   = nDate;

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

                        return(RedirectToAction(nameof(Index)));
                    }
                    else
                    {
                        var clientID     = _context.Project.Where(s => s.ProjectID == invoice.ProjectID).Select(s => s.ClientID).FirstOrDefault();
                        var invoicePrice = _context.Project.Where(s => s.ProjectID == invoice.ProjectID).Select(s => s.OffertePrice).FirstOrDefault();

                        invoice.InvoiceDate = nDate;

                        invoice.InvoicePrice = invoicePrice;
                        invoice.ClientID     = clientID;
                        _context.Add(invoice);
                        await _context.SaveChangesAsync();

                        return(RedirectToAction(nameof(Index)));
                    }
                }
                else
                {
                    var clientID     = _context.Project.Where(s => s.ProjectID == invoice.ProjectID).Select(s => s.ClientID).FirstOrDefault();
                    var invoicePrice = _context.Project.Where(s => s.ProjectID == invoice.ProjectID).Select(s => s.OffertePrice).FirstOrDefault();

                    invoice.InvoicePrice = invoicePrice;
                    invoice.ClientID     = clientID;
                    _context.Add(invoice);
                    await _context.SaveChangesAsync();

                    return(RedirectToAction(nameof(Index)));
                }
            }
            InvoiceClientProjectViewModel model = new InvoiceClientProjectViewModel()
            {
                ProjectList = await _context.Project.ToListAsync(),
                Invoice     = invoice
            };

            return(View(model));
        }