public static SellingResult Save(DeliveryOrderHeaderViewModel models)
        {
            SellingResult result = new SellingResult();

            try
            {
                using (var db = new BuahSayurContext())
                {
                    string newRef = GetNewReference();
                    result.Reference = newRef;

                    DeliveryOrder deliveryOrder = new DeliveryOrder
                    {
                        Id = 1,
                        Customer_Username = models.Customer_Username,
                        Reference = newRef,
                        SellingDate = models.SellingDate,
                        IsSent = false,
                        IsReturned = false
                    };
                    db.DeliveryOrders.Add(deliveryOrder);

                    foreach (var item in models.DeliveryDetails)
                    {
                        DeliveryOrderDetail deliveryDetail = new DeliveryOrderDetail
                        {
                            DeliveryOrder_Id = deliveryOrder.Id,
                            Item_Code = item.Item_Code,
                            Quantity = item.Quantity,
                            Price = item.Price,
                            Total = item.Quantity * item.Price
                        };
                        result.Total += (item.Quantity * item.Price);
                        db.DeliveryOrderDetails.Add(deliveryDetail);
                        // Update Stock
                        Item Stock = db.Items.Where(x => x.Code == item.Item_Code).FirstOrDefault();
                        if (Stock != null)
                        {
                            Stock.Stock = Stock.Stock - item.Quantity;
                        }
                    }
                    db.SaveChanges();
                }
            }
            catch (Exception ex)
            {
                result.Success = false;
                Message = ex.Message;
            }
            return result;
        }
        public ActionResult GetSellingByReference(string reference)
        {
            DeliveryOrderHeaderViewModel model = SellingDataAccess.GetByReference(reference);

            if (model != null)
            {
                string SellingDate = model.SellingDate.ToString("ddd, dd/MM/yyyy");
                return(Json(new { success = true, data = model, SellingDate = SellingDate }, JsonRequestBehavior.AllowGet));
            }
            else
            {
                return(Json(new { success = false }, JsonRequestBehavior.AllowGet));
            }
        }
        public ActionResult SaveSelling(DeliveryOrderHeaderViewModel models)
        {
            if (ModelState.IsValid)
            {
                SellingResult result = SellingDataAccess.Save(models);

                if (result.Success)
                {
                    return(Json(new { success = true, message = "Success", data = result }, JsonRequestBehavior.AllowGet));
                }
                else
                {
                    return(Json(new { success = false, message = SellingDataAccess.Message }, JsonRequestBehavior.AllowGet));
                }
            }
            return(Json(new { success = false, message = "Invalid Model State!" }, JsonRequestBehavior.AllowGet));
        }
        public static DeliveryOrderHeaderViewModel GetByReference(string reference)
        {
            DeliveryOrderHeaderViewModel result = new DeliveryOrderHeaderViewModel();

            using (var db = new BuahSayurContext())
            {
                result = (from dOr in db.DeliveryOrders
                          join c in db.Customers
                            on dOr.Customer_Username equals c.Username into clf
                          from c in clf.DefaultIfEmpty()
                          where dOr.Reference == reference
                          select new DeliveryOrderHeaderViewModel
                          {
                              Id = dOr.Id,
                              Customer_Username = c.Username,
                              Reference = dOr.Reference,
                              SellingDate = dOr.SellingDate,
                              IsSent = dOr.IsSent,
                              IsReturned = dOr.IsReturned
                          }).FirstOrDefault();
            }
            return result;
        }