예제 #1
0
        public static bool AñadirCarrito(int idProducto, int cantidad, string atributos)
        {
            CarritoBE          objCarritoBE;
            Carrito_ProductoBE objCarrito_ProductoBE = new Carrito_ProductoBE();
            Carrito_Producto_Elemento_AtributoBE objCarrito_Producto_Elemento_AtributoBE = new Carrito_Producto_Elemento_AtributoBE();
            ProductoBC objProductoBC = new ProductoBC();
            ProductoBE objProductoBE = new ProductoBE();

            //decimal total = 0;

            try
            {
                if (!ExisteProductoCarrito(idProducto, atributos))
                {
                    objCarritoBE = (CarritoBE)HttpContext.Current.Session["CARRITO"];

                    string[] arrAtributos = atributos.Split('|');

                    objProductoBE = objProductoBC.Get_Producto(idProducto);

                    objCarrito_ProductoBE.Id_Producto = objProductoBE.Id_Producto;
                    objCarrito_ProductoBE.Imagen      = objProductoBE.lstImagen_ProductoBE[0].Nombre;
                    objCarrito_ProductoBE.Nombre      = objProductoBE.Nombre;
                    objCarrito_ProductoBE.Precio      = objProductoBE.Precio;
                    objCarrito_ProductoBE.Cantidad    = cantidad;

                    foreach (string s in arrAtributos)
                    {
                        if (!string.IsNullOrEmpty(s))
                        {
                            string[] arrElemento = s.Split(','); //Atributo,Elemento,Id_Elemento

                            objCarrito_Producto_Elemento_AtributoBE = new Carrito_Producto_Elemento_AtributoBE();
                            objCarrito_Producto_Elemento_AtributoBE.Id_Elemento_Atributo = Convert.ToInt32(arrElemento[2]);
                            objCarrito_Producto_Elemento_AtributoBE.Atributo             = arrElemento[0];
                            objCarrito_Producto_Elemento_AtributoBE.Elemento             = arrElemento[1];
                            objCarrito_ProductoBE.lstCarrito_Producto_Elemento_AtributoBE.Add(objCarrito_Producto_Elemento_AtributoBE);
                        }
                    }

                    objCarritoBE.Total += cantidad * objProductoBE.Precio;

                    if (HttpContext.Current.Session["USUARIO"] != null)
                    {
                        objCarritoBE.Id_Usuario = ((UsuarioBE)HttpContext.Current.Session["USUARIO"]).Id_Usuario;

                        CarritoBC          objCarritoBC          = new CarritoBC();
                        Carrito_ProductoBC objCarrito_ProductoBC = new Carrito_ProductoBC();

                        if (objCarritoBE.lstCarrito_ProductoBE.Count == 0) //El carrito no existe
                        {
                            objCarritoBE.Id_Carrito = objCarritoBC.Insert_Carrito(objCarritoBE);
                        }
                        //else
                        //    objCarritoBC.Update_Carrito(objCarritoBE);

                        objCarrito_ProductoBE.Id_Carrito          = objCarritoBE.Id_Carrito;
                        objCarrito_ProductoBE.Id_Carrito_Producto = objCarrito_ProductoBC.Insert_Carrito_Producto_Completo(objCarrito_ProductoBE);
                    }

                    objCarritoBE.lstCarrito_ProductoBE.Add(objCarrito_ProductoBE);

                    objCarritoBE.PasosCarrito = EtapaCompra.Compra0;

                    HttpContext.Current.Session["CARRITO"] = objCarritoBE;

                    return(true);
                }
                else
                {
                    return(false);
                }
            }
            catch (Exception)
            {
                throw;
            }
        }
예제 #2
0
        public void Loguear(UsuarioBE objUsuarioBE)
        {
            try
            {
                Session["USUARIO"] = objUsuarioBE;
                lblUsuario.Text    = objUsuarioBE.Usuario;
                MostrarUsuarioLogueado(true);
                //FormsAuthentication.Initialize();

                CarritoBC objCarritoBC = new CarritoBC();
                CarritoBE objCarritoBE = objCarritoBC.Get_Carrito_Usuario(objUsuarioBE.Id_Usuario);

                if (Session["CARRITO"] == null || ((CarritoBE)Session["CARRITO"]).lstCarrito_ProductoBE.Count == 0)
                {
                    Session["CARRITO"] = objCarritoBE != null ? objCarritoBE : new CarritoBE();
                }
                else //Hace un merge
                {
                    CarritoBE          objCarritoSessionBE   = (CarritoBE)Session["CARRITO"];
                    Carrito_ProductoBC objCarrito_ProductoBC = new Carrito_ProductoBC();

                    if (objCarritoBE == null) //Si el usuario no tiene productos en el carrito
                    {
                        objCarritoBE            = new CarritoBE();
                        objCarritoBE.Id_Usuario = objUsuarioBE.Id_Usuario;
                        objCarritoBE.Id_Carrito = objCarritoBC.Insert_Carrito(objCarritoBE);
                    }

                    //Se obtiene una lista de los productos en sesion que no han sido agregados a BD
                    foreach (Carrito_ProductoBE cp in objCarritoBE.lstCarrito_ProductoBE)
                    {
                        if (cp.lstCarrito_Producto_Elemento_AtributoBE.Count == 0) //Si no tiene atributos
                        {
                            objCarritoSessionBE.lstCarrito_ProductoBE = (from c in objCarritoSessionBE.lstCarrito_ProductoBE
                                                                         where c.Id_Producto != cp.Id_Producto
                                                                         select c).ToList();
                        }
                        else
                        {
                            foreach (Carrito_ProductoBE cps in objCarritoSessionBE.lstCarrito_ProductoBE)
                            {
                                if (cps.Id_Producto == cp.Id_Producto)
                                {
                                    int cantidadAtributo = 0;

                                    foreach (Carrito_Producto_Elemento_AtributoBE cpeas in cps.lstCarrito_Producto_Elemento_AtributoBE)
                                    {
                                        foreach (Carrito_Producto_Elemento_AtributoBE cpea in cp.lstCarrito_Producto_Elemento_AtributoBE)
                                        {
                                            if (cpeas.Id_Elemento_Atributo == cpea.Id_Elemento_Atributo)
                                            {
                                                cantidadAtributo++;
                                                break;
                                            }
                                        }
                                    }

                                    if (cantidadAtributo == cps.lstCarrito_Producto_Elemento_AtributoBE.Count)
                                    {
                                        objCarritoSessionBE.lstCarrito_ProductoBE.Remove(cps);
                                        break;
                                    }
                                }
                            }
                        }
                    }

                    foreach (Carrito_ProductoBE cp in objCarritoSessionBE.lstCarrito_ProductoBE)
                    {
                        cp.Id_Carrito          = objCarritoBE.Id_Carrito;
                        cp.Id_Carrito_Producto = objCarrito_ProductoBC.Insert_Carrito_Producto_Completo(cp);
                        objCarritoBE.lstCarrito_ProductoBE.Add(cp);
                    }

                    objCarritoBE.Total = (from c in objCarritoBE.lstCarrito_ProductoBE select c.Precio).Sum();

                    Session["CARRITO"] = objCarritoBE;
                }

                CargarItemsCarrito();

                if (objUsuarioBE.Activo_Correo)
                {
                    hdVerifico.Value = "1";
                }
                else
                {
                    hdVerifico.Value = "0";
                }
            }
            catch (Exception)
            {
                throw;
            }
        }