public int AddCart(int ItemId)
        {
            var aPview            = new AgregarProductoView();
            var _consultaProducto = _context.Productos.Where(p => p.Id == ItemId).SingleOrDefault();

            aPview.Cantidad = 1;
            if (Session["Cart"] == null)
            {
                List <AgregarProductoView> _cestaProductos = new List <AgregarProductoView>();
                AddCesta(aPview, _consultaProducto, _cestaProductos);
            }
            else
            {
                List <AgregarProductoView> _cestaProductos = (List <AgregarProductoView>)Session["Cart"];

                if (!(_cestaProductos.Where(l => l.IdProducto == ItemId).Count() >= 1))
                {
                    AddCesta(aPview, _consultaProducto, _cestaProductos);
                }
            }
            var lista = (List <AgregarProductoView>)Session["Cart"];

            ViewBag.cartCount = lista.Count();
            return(lista.Count());
        }
 private void AddCesta(AgregarProductoView aPview, Producto _consultaProducto, List <AgregarProductoView> _cestaProductos)
 {
     aPview.IdProducto = _consultaProducto.Id;
     aPview.Nombre     = _consultaProducto.Nombre;
     aPview.Precio     = _consultaProducto.Precio;
     _cestaProductos.Add(aPview);
     Session["Cart"] = _cestaProductos;
 }
        public ActionResult PuntodeVenta()
        {
            var view = new AgregarProductoView
            {
                DetalleCart = (List <AgregarProductoView>)Session["CartVentas"],
            };

            return(View(view));
        }
        public PartialViewResult GetCartItems()
        {
            var _view = new AgregarProductoView
            {
                DetalleCart = (List <AgregarProductoView>)Session["Cart"],
            };

            return(PartialView("_ItemCesta", _view));
        }
        public ActionResult PuntodeAdquisicion()
        {
            var view = new AgregarProductoView
            {
                DetalleCart = (List <AgregarProductoView>)Session["CartAdquisicion"],
            };

            return(View(view));
        }
        private void ActualizarCesta(AgregarProductoView aPview, Producto _consultaProducto, List <AgregarProductoView> _cestaProductos)
        {
            aPview.IdProducto     = _consultaProducto.Id;
            aPview.Nombre         = _consultaProducto.Nombre;
            aPview.IdTipoProducto = _consultaProducto.TipoProductoId;
            _cestaProductos.Add(aPview);

            Session["CartArriendos"]   = _cestaProductos;
            Session["ConteoArriendos"] = Convert.ToInt32(Session["ConteoArriendos"]) + 1;
        }
        public ActionResult PuntodeAdquisicion(AgregarProductoView aPview)
        {
            var _consultaProducto = _context.Productos.Where(p => p.Barcode == aPview.Barcode).SingleOrDefault();

            if (_consultaProducto != null)
            {
                if (Session["CartAdquisicion"] == null)
                {
                    List <AgregarProductoView> _cestaProductos = new List <AgregarProductoView>();
                    ActualizarCesta(aPview, _consultaProducto, _cestaProductos);
                }
                else
                {
                    List <AgregarProductoView> _cestaProductos = (List <AgregarProductoView>)Session["CartAdquisicion"];
                    var _idPFirstLista = _cestaProductos.FirstOrDefault().IdProducto;
                    var _cProducto     = _context.Productos.Where(x => x.Id == _idPFirstLista).Single();

                    if (_cProducto.TipoProductoId == _consultaProducto.TipoProductoId) //Acteco Diferente
                    {
                        if (_cestaProductos.Where(l => l.Barcode == aPview.Barcode).Count() >= 1)
                        {
                            foreach (var item in _cestaProductos)
                            {
                                if (item.Barcode == aPview.Barcode)
                                {
                                    item.Cantidad += aPview.Cantidad;
                                }
                            }
                        }
                        else
                        {
                            ActualizarCesta(aPview, _consultaProducto, _cestaProductos);
                        }
                    }
                    else
                    {
                        ModelState.AddModelError(string.Empty, "Solo puede Ingresar Productos de un mismo tipo");
                    }
                }
            }
            else
            {
                ModelState.AddModelError(string.Empty, "El codigo ingresado no existe");
            }
            aPview.DetalleCart = (List <AgregarProductoView>)Session["CartAdquisicion"];
            return(View(aPview));
        }
        public ActionResult PuntodeArriendo(AgregarProductoView aPview)
        {
            aPview.Cantidad = 1;
            var _consultaProducto = _context.Productos.Where(p => p.Barcode == aPview.Barcode).SingleOrDefault();

            if (_consultaProducto != null)
            {
                if (!(aPview.Cantidad > _consultaProducto.Inventario.Single().Stock))
                {
                    if (Session["CartArriendos"] == null)
                    {
                        List <AgregarProductoView> _cestaProductos = new List <AgregarProductoView>();
                        ActualizarCesta(aPview, _consultaProducto, _cestaProductos);
                    }
                    else
                    {
                        List <AgregarProductoView> _cestaProductos = (List <AgregarProductoView>)Session["CartArriendos"];
                        var _idPFirstLista = _cestaProductos.FirstOrDefault().IdProducto;
                        var _cProducto     = _context.Productos.Where(x => x.Id == _idPFirstLista).Single();

                        if (_cProducto.TipoProductoId == _consultaProducto.TipoProductoId)
                        {
                            if (_cestaProductos.Where(l => l.Barcode == aPview.Barcode).Count() >= 1)
                            {
                                foreach (var item in _cestaProductos)
                                {
                                    if (item.Barcode == aPview.Barcode)
                                    {
                                        if ((item.Cantidad + aPview.Cantidad) <= _consultaProducto.Inventario.Single().Stock)
                                        {
                                            item.Cantidad += aPview.Cantidad;
                                        }
                                        else
                                        {
                                            ModelState.AddModelError(string.Empty, "No existe Stock Suficiente del producto: " + _consultaProducto.Nombre);
                                        }
                                    }
                                }
                            }
                            else
                            {
                                ActualizarCesta(aPview, _consultaProducto, _cestaProductos);
                            }
                        }
                        else
                        {
                            ModelState.AddModelError(string.Empty, "Solo puede Ingresar Productos de un mismo tipo");
                        }
                    }
                }
                else
                {
                    ModelState.AddModelError(string.Empty, "No existe Stock Suficiente del producto: " + _consultaProducto.Nombre);
                }
            }
            else
            {
                ModelState.AddModelError(string.Empty, "El codigo ingresado no existe");
            }
            aPview.DetalleCart = (List <AgregarProductoView>)Session["CartArriendos"];
            return(View(aPview));
        }