Пример #1
0
        public async Task <ActionResult> Edit(SaleDetailTmp saleDetailTmp)
        {
            if (ModelState.IsValid)
            {
                var product = await db.Products.FindAsync(saleDetailTmp.ProductId);

                if (product == null)
                {
                    return(HttpNotFound());
                }

                if (saleDetailTmp.Quantity >= product.QuantityDiscount)
                {
                    saleDetailTmp.PercentDiscount = product.PercentDiscount;
                }
                else
                {
                    saleDetailTmp.PercentDiscount = 0;
                }

                db.Entry(saleDetailTmp).State = EntityState.Modified;
                await db.SaveChangesAsync();

                return(RedirectToAction("ShowCar"));
            }

            return(View(saleDetailTmp));
        }
Пример #2
0
        public async Task <IActionResult> AddProduct(SaleDetailTmpViewModel view)
        {
            var user = await _dataContext.Users.Where(u => u.UserName == User.Identity.Name).FirstOrDefaultAsync();

            if (ModelState.IsValid)
            {
                var saleDetailTmp = _dataContext.SaleDetailTmps.Where(sdt => sdt.Username == User.Identity.Name && sdt.Product.Id == view.ProductId).FirstOrDefault();
                if (saleDetailTmp == null)
                {
                    var product = await _dataContext.Products.FindAsync(view.ProductId);

                    saleDetailTmp = new SaleDetailTmp
                    {
                        Id       = view.Id,
                        Name     = product.Name,
                        Price    = view.Price,
                        Quantity = view.Quantity,
                        Username = User.Identity.Name,
                        Product  = await _dataContext.Products.FindAsync(view.ProductId)
                    };
                    _dataContext.SaleDetailTmps.Add(saleDetailTmp);
                }
                else
                {
                    saleDetailTmp.Quantity += view.Quantity;
                    _dataContext.Entry(saleDetailTmp).State = EntityState.Modified;
                }
                await _dataContext.SaveChangesAsync();

                return(RedirectToAction("Create"));
            }

            view.Products = _combosHelper.GetComboProducts();
            return(View(view));
        }
Пример #3
0
        public async Task <ActionResult> AddToCar(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            var product = await this.db.Products.FindAsync(id);

            if (product == null)
            {
                return(HttpNotFound());
            }

            var customer = await db.Customers.
                           Where(c => c.Email.ToLower().Equals(User.Identity.Name.ToLower())).
                           FirstOrDefaultAsync();

            if (customer == null)
            {
                return(HttpNotFound());
            }

            var saleDetailTmp = await db.SaleDetailTmps.
                                Where(sdt => sdt.CustomerId == customer.CustomerId &&
                                      sdt.ProductId == product.ProductId).
                                FirstOrDefaultAsync();

            if (saleDetailTmp == null)
            {
                saleDetailTmp = new SaleDetailTmp
                {
                    CustomerId      = customer.CustomerId,
                    Name            = product.Name,
                    PercentDiscount = 0,
                    Price           = product.Price,
                    ProductId       = product.ProductId,
                    Quantity        = 1,
                };

                db.SaleDetailTmps.Add(saleDetailTmp);
            }
            else
            {
                saleDetailTmp.Quantity++;
                db.Entry(saleDetailTmp).State = EntityState.Modified;
            }

            if (saleDetailTmp.Quantity >= product.QuantityDiscount)
            {
                saleDetailTmp.PercentDiscount = product.PercentDiscount;
            }

            await db.SaveChangesAsync();

            return(RedirectToAction("Index2"));
        }
Пример #4
0
        public async Task <ActionResult> AddNewToCar()
        {
            ViewBag.ProductId = new SelectList(await this.GetProducts(), "ProductId", "Name");
            var view = new SaleDetailTmp {
                Quantity = 1
            };

            return(View(view));
        }
Пример #5
0
        public async Task <ActionResult> AddNewToCar(SaleDetailTmp saleDetailTmp)
        {
            if (ModelState.IsValid)
            {
                var customer = await db.Customers.
                               Where(c => c.Email.ToLower().Equals(User.Identity.Name.ToLower())).
                               FirstOrDefaultAsync();

                if (customer == null)
                {
                    return(HttpNotFound());
                }

                var saleDetailTmpOld = await db.SaleDetailTmps.
                                       Where(sdt => sdt.CustomerId == customer.CustomerId &&
                                             sdt.ProductId == saleDetailTmp.ProductId).
                                       FirstOrDefaultAsync();

                var product = await db.Products.FindAsync(saleDetailTmp.ProductId);

                if (saleDetailTmpOld == null)
                {
                    saleDetailTmp.CustomerId = customer.CustomerId;
                    saleDetailTmp.Name       = product.Name;
                    saleDetailTmp.Price      = product.Price;
                    if (saleDetailTmp.Quantity >= product.QuantityDiscount)
                    {
                        saleDetailTmp.PercentDiscount = product.PercentDiscount;
                    }

                    db.SaleDetailTmps.Add(saleDetailTmp);
                }
                else
                {
                    saleDetailTmpOld.Quantity += saleDetailTmp.Quantity;
                    if (saleDetailTmpOld.Quantity >= product.QuantityDiscount)
                    {
                        saleDetailTmpOld.PercentDiscount = product.PercentDiscount;
                    }

                    db.Entry(saleDetailTmpOld).State = EntityState.Modified;
                }

                await db.SaveChangesAsync();

                return(RedirectToAction("ShowCar"));
            }

            ViewBag.ProductId = new SelectList(await this.GetProducts(), "ProductId", "Name");
            return(View(saleDetailTmp));
        }
Пример #6
0
        public ActionResult AddProduct(AddProductView view)
        {
            var user = db.Users.Where(u => u.UserName == User.Identity.Name).FirstOrDefault();

            if (ModelState.IsValid)
            {
                var SaleDetailTmp = db.SaleDetailTmps.Where(sdt => sdt.UserName == User.Identity.Name && sdt.ProductId == view.ProductId).FirstOrDefault();
                if (SaleDetailTmp == null)
                {
                    var product = db.Products.Find(view.ProductId);
                    SaleDetailTmp = new SaleDetailTmp
                    {
                        Description = product.Description,
                        Price       = product.Price,
                        ProductId   = product.ProductId,
                        Quantity    = view.Quantity,
                        TaxRate     = product.Tax.Rate,
                        UserName    = User.Identity.Name,
                    };
                    db.SaleDetailTmps.Add(SaleDetailTmp);
                }
                else
                {
                    SaleDetailTmp.Quantity       += view.Quantity;
                    db.Entry(SaleDetailTmp).State = EntityState.Modified;
                }
                try
                {
                    db.SaveChanges();
                    return(RedirectToAction("Create"));
                }
                catch (Exception ex)
                {
                    ModelState.AddModelError(string.Empty, ex.Message);
                }
            }
            ViewBag.ProductId = new SelectList(CombosHelper.GetProducts(user.CompanyId), "ProductId", "Description");
            return(PartialView());
        }
Пример #7
0
        public static Response SaleFromOrder(int orderId, string userName)
        {
            using (var transaccion = db.Database.BeginTransaction())
            {
                try
                {
                    var user         = db.Users.Where(u => u.UserName == userName).FirstOrDefault();
                    var details      = db.OrderDetails.Where(od => od.OrderId == orderId).ToList();
                    var orderDetails = db.Orders.Where(o => o.OrderId == orderId).FirstOrDefault();
                    if (details == null || details.Count == 0 || orderDetails == null)
                    {
                        return(new Response {
                            Succeeded = false, Message = "Can not get the details of this order."
                        });
                    }

                    // If user has temp details, delete them
                    var userOldDetails = db.SaleDetailTmps.Where(sdt => sdt.UserName == userName).ToList();
                    foreach (var oldDetails in userOldDetails)
                    {
                        db.SaleDetailTmps.Remove(oldDetails);
                    }
                    // NOTE: This could be unnecessary

                    foreach (var detail in details)
                    {
                        var saleDetailTmp = new SaleDetailTmp
                        {
                            Description = detail.Description,
                            Price       = detail.Price,
                            ProductId   = detail.ProductId,
                            Quantity    = detail.Quantity,
                            TaxRate     = detail.TaxRate,
                            UserName    = userName,
                            OrderId     = orderId,
                        };
                        db.SaleDetailTmps.Add(saleDetailTmp);
                    }

                    db.SaveChanges();
                    transaccion.Commit();
                    return(new Response {
                        Succeeded = true, CustomerId = orderDetails.CustomerId, Date = orderDetails.Date, Remarks = orderDetails.Remarks
                    });
                }
                catch (Exception ex)
                {
                    transaccion.Rollback();
                    if (ex.InnerException != null && ex.InnerException.InnerException != null)
                    {
                        return(new Response {
                            Succeeded = false, Message = ex.InnerException.InnerException.Message
                        });
                    }
                    else if (ex.InnerException != null)
                    {
                        return(new Response {
                            Succeeded = false, Message = ex.InnerException.Message
                        });
                    }
                    else
                    {
                        return(new Response {
                            Succeeded = false, Message = ex.Message
                        });
                    }
                }
            }
        }