示例#1
0
        public async Task<ActionResult> Create(InvoiceViewModel invoiceVM)
        {
                if (ModelState.IsValid)
                {
                    if(await Task.Run(() => _service.saveInvoice(invoiceVM)))
                    {
                        return RedirectToAction("Index");
                    }
                }

                //ViewBag.StudentID = new SelectList(db.Students, "StudentID", "NameOfChild", invoices.StudentID);
                return View(invoiceVM);
        }
示例#2
0
        /// <summary>
        /// validates invoice details data when description field is not null,also validates no invoice detail data
        /// </summary>
        /// <param name="invoiceVM">InvoiceviewModel</param>
        /// <returns>boolean true on success or false on validation failure</returns>
        public bool validateInvoice(InvoiceViewModel invoiceVM)
        {
            Boolean iserror = true;
            int Count = 0;
            for(var i=0;i < invoiceVM.InvoiceDetailsViewModel.Count;i++)
            {
                string desc = (invoiceVM.InvoiceDetailsViewModel[i].Description != null) ? invoiceVM.InvoiceDetailsViewModel[i].Description.Trim() : "";

                //if description is not null checks all other details have valid values
                if (desc != "" )
                {
                    if(invoiceVM.InvoiceDetailsViewModel[i].Quantity <1)
                    {
                        _modelstate.AddModelError("InvoiceDetailsViewModel[" + i + "].Quantity", "less than one");
                        iserror = false;
                    }
                    if(invoiceVM.InvoiceDetailsViewModel[i].UnitPrice <1)
                    {
                        _modelstate.AddModelError("InvoiceDetailsViewModel[" + i + "].UnitPrice", "less than one");
                        iserror = false;

                    }
                    if(invoiceVM.InvoiceDetailsViewModel[i].Amount <1)
                    {
                        _modelstate.AddModelError("InvoiceDetailsViewModel[" + i + "].Amount", "less than one");
                        iserror = false;

                    }
                    //checks if atleast one record is added to invoice details, return false if data is empty

                    Count = Count + 1;

                }
            }
            if (Count == 0)
            {
                iserror = false;
                _modelstate.AddModelError("", "No Records to add");
            }

            return iserror;
        }
示例#3
0
        /// <summary>
        /// saves invoice data after validation checks
        /// </summary>
        /// <param name="invoiceVM">InvoiceViewModel</param>
        /// <returns>boolean on save success</returns>
        public bool saveInvoice(InvoiceViewModel invoiceVM)
        {
            if (!validateInvoice(invoiceVM))
            {
                return false;
            }
            try
            {
                //remove empty invoice details record in invoice in reverse order
                //if you remove randomly, collection get changes, and error is thrown
                for (var i = invoiceVM.InvoiceDetailsViewModel.Count - 1; i >= 0; i--)
                {
                    string desc = (invoiceVM.InvoiceDetailsViewModel[i].Description != null) ? invoiceVM.InvoiceDetailsViewModel[i].Description.Trim() : "";

                    if (desc == "")
                    {
                        invoiceVM.InvoiceDetailsViewModel.RemoveAt(i);
                    }
                }
                Invoice addInvoice = Mapper.Map<Invoice>(invoiceVM);
                db.Invoices.Add(addInvoice);
                db.SaveChanges();

                return true;

            }
            catch(Exception e)
            {
                _modelstate.AddModelError("", e.Message);
                return false;
            }
        }
示例#4
0
        /// <summary>
        /// This method is similar to saving data after report, here data is saved after report editing
        /// </summary>
        /// <param name="invoiceVM">invoice view model</param>
        /// <returns>booleand wheather data is saved or not</returns>
        public bool saveAfterEdit(InvoiceViewModel invoiceVM)
        {
            if (!validateInvoice(invoiceVM))
            {
                return false;
            }
            try
            {
                for (var i = invoiceVM.InvoiceDetailsViewModel.Count - 1; i >= 0; i--)
                {
                    string desc = (invoiceVM.InvoiceDetailsViewModel[i].Description != null) ? invoiceVM.InvoiceDetailsViewModel[i].Description.Trim() : "";

                    if (desc == "")
                    {
                        invoiceVM.InvoiceDetailsViewModel.RemoveAt(i);
                    }
                }

                Invoice updateInvoice = Mapper.Map<Invoice>(invoiceVM);

                foreach(var invDetail in updateInvoice.InvoiceDetails)
                {
                    if(invDetail.InvoiceDetailID !=0)
                    {
                        db.Entry(invDetail).State = EntityState.Modified;
                    }
                    else if(invDetail.InvoiceDetailID == 0)
                    {
                        invDetail.InvoiceRefID = invoiceVM.InvoiceID;
                        db.Entry(invDetail).State = EntityState.Added;
                    }
                }

                db.Entry(updateInvoice).State = EntityState.Modified;
                db.SaveChanges();
                return true;

            }
            catch(Exception e)
            {
                _modelstate.AddModelError("", e.Message);
                return false;
            }
        }
示例#5
0
        public async Task<ActionResult> Edit(InvoiceViewModel invoiceVM)
        {
            if(ModelState.IsValid)
            {
                if(await Task.Run(() => _service.saveAfterEdit(invoiceVM)))
                {
                    return RedirectToAction("Index");
                }
            }

            return View(invoiceVM);
        }