public bool Update([FromBody] Dispatch _oDispatch)
        {
            try
            {
                int output;
                using (var context = new DB001Core())
                {
                    var input = context.Dispatchs
                                .Include(d => d.DispatchDetails)
                                .Where(s => s.DispatchID == _oDispatch.DispatchID)
                                .FirstOrDefault();

                    input.ClientID        = _oDispatch.ClientID;
                    input.ProductID       = _oDispatch.ProductID;
                    input.StateID         = _oDispatch.StateID;
                    input.DistrictID      = _oDispatch.DistrictID;
                    input.CityID          = _oDispatch.CityID;
                    input.ShippingAddress = _oDispatch.ShippingAddress;
                    input.DispatchDate    = _oDispatch.DispatchDate;
                    input.DispatchDetails = _oDispatch.DispatchDetails;
                    input.IsDispatched    = _oDispatch.IsDispatched;
                    input.ModifiedOn      = DateTime.Now;

                    if (_oDispatch.IsDispatched == true)
                    {
                        if (input.DispatchDate == null)
                        {
                            input.DispatchDate = DateTime.Now;
                        }
                    }
                    output = context.SaveChanges();
                }

                if (_oDispatch.IsDispatched == true)
                {
                    var invoice = context.Invoices
                                  .Where(w => w.OrderID == _oDispatch.OrderID && w.PaymentStatus.Status == "Pending")
                                  .FirstOrDefault();

                    if (invoice != null)
                    {
                        invoice.PaymentStatusID = 2; //Unpaid
                        context.SaveChanges();
                    }

                    CommonLogic commonLogic = new CommonLogic();
                    commonLogic.ChangeOrderStatus(_oDispatch.OrderID, "Delivered");
                }

                return(Convert.ToBoolean(output));
            }
            catch (Exception ex)
            {
                throw;
            }
            finally
            {
                context = null;
            }
        }
        public bool Add([FromBody] Dispatch _oDispatch)
        {
            try
            {
                int output;

                using (var context = new DB001Core())
                {
                    CommonLogic clsCommonLogic = new CommonLogic();
                    _oDispatch.DispatchNumber = clsCommonLogic.GenerateDispatchCode();

                    _oDispatch.CreatedOn  = DateTime.Now;
                    _oDispatch.ModifiedOn = DateTime.Now;
                    _oDispatch.IsDeleted  = false;

                    context.Dispatchs.Add(_oDispatch);
                    output = context.SaveChanges();
                }

                CommonLogic commonLogic = new CommonLogic();
                commonLogic.ChangeOrderStatus(_oDispatch.OrderID, "Device Ready");

                return(Convert.ToBoolean(output));
            }
            catch (Exception ex)
            {
                throw;
            }
            finally
            {
                context = null;
            }
        }
        public bool Update([FromBody] Invoice _oInvoice)
        {
            try
            {
                int output = 0;
                if (_oInvoice.IsDraft)
                {
                    using (var context = new DB001Core())
                    {
                        var input = context.Invoices
                                    .Include(i => i.InvoiceDetails)
                                    .Where(w => w.InvoiceID == _oInvoice.InvoiceID)
                                    .FirstOrDefault();

                        input.ClientID        = _oInvoice.ClientID;
                        input.ProductID       = _oInvoice.ProductID;
                        input.OrderID         = _oInvoice.OrderID;
                        input.PaymentModeID   = _oInvoice.PaymentModeID;
                        input.PaymentStatusID = _oInvoice.PaymentStatusID;
                        input.TotalAmount     = _oInvoice.TotalAmount;
                        input.PaymentDate     = _oInvoice.PaymentDate;
                        input.InvoiceDetails  = _oInvoice.InvoiceDetails;
                        input.IsDraft         = _oInvoice.IsDraft;

                        output = context.SaveChanges();
                    }
                }
                else
                {
                    using (var context = new DB001Core())
                    {
                        var input = context.Invoices
                                    .Include(i => i.InvoiceDetails)
                                    .Where(w => w.InvoiceID == _oInvoice.InvoiceID)
                                    .FirstOrDefault();

                        if (_oInvoice.PaymentStatusID == 1 && input.PaymentDate == null)
                        {
                            input.PaymentDate = DateTime.Now;
                            AddDistributorBill(_oInvoice);
                        }

                        input.PaymentModeID   = _oInvoice.PaymentModeID;
                        input.PaymentStatusID = _oInvoice.PaymentStatusID;
                        input.IsDraft         = _oInvoice.IsDraft;
                        input.InvoiceDetails  = _oInvoice.InvoiceDetails;

                        output = context.SaveChanges();

                        if (_oInvoice.PaymentStatusID == 1 && input.PaymentDate == null)
                        {
                            var invoice = context.Invoices
                                          .Where(w => w.OrderID == _oInvoice.OrderID)
                                          .FirstOrDefault();

                            AddDistributorBill(invoice);
                        }
                    }

                    if (_oInvoice.PaymentStatusID != 1)
                    {
                        CommonLogic commonLogic = new CommonLogic();
                        commonLogic.ChangeOrderStatus(_oInvoice.OrderID, "Billing");
                    }

                    else if (_oInvoice.PaymentStatusID == 1)
                    {
                        CommonLogic commonLogic = new CommonLogic();
                        commonLogic.ChangeOrderStatus(_oInvoice.OrderID, "Payment");
                    }
                }
                return(Convert.ToBoolean(output));
            }
            catch (Exception ex)
            {
                throw;
            }
            finally
            {
                context = null;
            }
        }