public async Task <IActionResult> Edit(int id, [Bind("CarritoId,ProductoId,cantidadProd,precioLinea")] DetalleCarrito detalleCarrito)
        {
            if (id != detalleCarrito.CarritoId)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(detalleCarrito);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!DetalleCarritoExists(detalleCarrito.CarritoId))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            ViewData["CarritoId"]  = new SelectList(_context.Carritos, "CarritoId", "lugarEntrega", detalleCarrito.CarritoId);
            ViewData["ProductoId"] = new SelectList(_context.productos, "ProductoId", "descripcionProd", detalleCarrito.ProductoId);
            return(View(detalleCarrito));
        }
Ejemplo n.º 2
0
        public ActionResult ConfirmacionCompra()
        {
            string nombreTarjeta = Convert.ToString(Session["nombreTarjeta"]);



            byte formadePago = (byte)Session["formaDePago"];

            ViewBag.formadePago = formadePago;
            string debitoOcredito = Convert.ToString(Session["debitoOcredito"]);

            Usuario user = new Usuario();

            user = (Usuario)Session["user"];
            decimal importe = (decimal)Session["importe"];

            List <DetalleCarrito> detalleCarrito = (List <DetalleCarrito>)Session["detalleCarrito"];


            PedidoNegocio pedidoNegocio = new PedidoNegocio();
            Pedido        pedido        = new Pedido();

            pedido.tipoPago = new TipoPago();

            pedido.IdUsuario  = user.Id;
            pedido.Importe    = importe;
            pedido.IdEstado   = 1;
            pedido.IdTipoPago = formadePago;

            if (Session["debitoOcredito"] != null)
            {
                pedido.tipoPago.Nombre = debitoOcredito;
            }
            else if (Session["nombreTarjeta"] != null)
            {
                pedido.tipoPago.Nombre = nombreTarjeta;
            }



            pedidoNegocio.Agregar(pedido);

            DetalleCarrito detalledelCarrito = new DetalleCarrito();



            DetalleCarritoNegocio detalleNegocio = new DetalleCarritoNegocio();

            long valorDevuelto = pedidoNegocio.InsertarDetalle();

            detalledelCarrito.IdPedido = valorDevuelto;

            detalleNegocio.PasarDeLista_a_detalle(detalleCarrito, valorDevuelto);


            return(View());
        }
        public async Task <IActionResult> Create([Bind("CarritoId,ProductoId,cantidadProd,precioLinea")] DetalleCarrito detalleCarrito)
        {
            if (ModelState.IsValid)
            {
                _context.Add(detalleCarrito);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            ViewData["CarritoId"]  = new SelectList(_context.Carritos, "CarritoId", "lugarEntrega", detalleCarrito.CarritoId);
            ViewData["ProductoId"] = new SelectList(_context.productos, "ProductoId", "descripcionProd", detalleCarrito.ProductoId);
            return(View(detalleCarrito));
        }
        public void GuardarDetalle_DB(DetalleCarrito detalle)
        {
            AccesoDatos datos = new AccesoDatos();

            datos.setearQuery_ConPa("SP_AgregarDetalle");

            datos.agregarParametro("@IdProducto", detalle.IdProducto);
            datos.agregarParametro("@IdPedido", detalle.IdPedido);
            datos.agregarParametro("@PrecioActual", detalle.PrecioActual);
            datos.agregarParametro("@CantidadPedida", detalle.CantidadPedida);
            datos.agregarParametro("@UrlImagen", detalle.UrlImagen);
            datos.agregarParametro("@Nombre", detalle.NombreActual);

            datos.ejecutarAccion();
        }
        public Int32 Registrar(DetalleCarrito detalleCarrito)
        {
            Int32 DetalleCarritoID;

            try
            {
                DetalleCarritoDA detalleCarritoDA = new DetalleCarritoDA();
                DetalleCarritoID = detalleCarritoDA.Registrar(detalleCarrito);
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return(DetalleCarritoID);
        }
        public void PasarDeLista_a_detalle(List <DetalleCarrito> detalleCarrito, long valorDevuelto)
        {
            DetalleCarrito detalle;

            foreach (var item in detalleCarrito)
            {
                detalle                = new DetalleCarrito();
                detalle.IdProducto     = item.IdProducto;
                detalle.NombreActual   = item.NombreActual;
                detalle.PrecioActual   = item.PrecioActual;
                detalle.UrlImagen      = item.UrlImagen;
                detalle.CantidadPedida = item.CantidadPedida;
                detalle.IdPedido       = valorDevuelto;

                GuardarDetalle_DB(detalle);
            }
        }
        public List <DetalleCarrito> BuscadorDeLong(long Busqueda)
        {
            AccesoDatos           datos        = new AccesoDatos();
            List <DetalleCarrito> listaBuscado = new List <DetalleCarrito>();

            try
            {
                //Producto aux = new Producto();
                datos.setearQuery("select * from Detalle where IdPedido = @Busqueda");
                //select p.*, c.Id as IdColores, c.Nombre as NombreColores from Producto p join Color as c on c.id = p.IdColor where IdColor = @Busqueda

                datos.agregarParametro("@Busqueda", Busqueda);



                datos.ejecutarLector();
                datos.lector = datos.comando.ExecuteReader();

                while (datos.lector.Read())
                {
                    DetalleCarrito aux;
                    aux = new DetalleCarrito();

                    aux.IdProducto     = (long)datos.lector["IdProducto"];
                    aux.IdPedido       = (long)datos.lector["IdPedido"];
                    aux.PrecioActual   = datos.lector.GetDecimal(2);
                    aux.CantidadPedida = (byte)datos.lector["CantidadPedida"];
                    aux.UrlImagen      = datos.lector.GetString(4);
                    aux.NombreActual   = (string)datos.lector["Nombre"];



                    listaBuscado.Add(aux);
                }

                datos.lector.Close();
                datos.conexion.Close();
                return(listaBuscado);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public List <DetalleCarrito> Asignar(List <ItemCarrito> lista)
        {
            List <DetalleCarrito> ListaDetalle = new List <DetalleCarrito>();
            DetalleCarrito        detalle      = new DetalleCarrito();
            ItemCarrito           itemcarrito  = new ItemCarrito();



            foreach (var item in lista)
            {
                detalle = new DetalleCarrito(); // esto es para no pisar lo que esta en la direccion de memoria, si solo tengo un detalle siempre se va a pisar ahi, en cambio instanciandolo le doy un nuevo lugar en memoria
                detalle.NombreActual   = item.Nombre;
                detalle.PrecioActual   = item.Precio;
                detalle.UrlImagen      = item.UrlImagen;
                detalle.IdProducto     = item.IdProducto;
                detalle.CantidadPedida = item.CantidadItem;
                ListaDetalle.Add(detalle);
            }

            return(ListaDetalle);
        }
        public List <DetalleCarrito> Listar()
        {
            AccesoDatos           datos = new AccesoDatos();// aca adentro hay magia, estan lector, conexion y comando
            List <DetalleCarrito> lista = new List <DetalleCarrito>();

            datos.setearQuery("Select IdProducto, IdPedido, PrecioActual, CantidadPedida, Detalle.UrlImagen, Detalle.Nombre from Detalle join Producto on Producto.Id = Detalle.IdProducto");
            try
            {
                datos.ejecutarLector();
                datos.lector = datos.comando.ExecuteReader();

                while (datos.lector.Read())
                {
                    DetalleCarrito aux;
                    aux = new DetalleCarrito(); // es como darle un espacio de memorio al nacer.
                                                // aux.id es la parte del setter xq le etoy asignando un valor si el codigo estuviera al reves seria un getter
                    aux.IdProducto     = (long)datos.lector["IdProducto"];
                    aux.IdPedido       = (long)datos.lector["IdPedido"];
                    aux.PrecioActual   = datos.lector.GetDecimal(2);
                    aux.CantidadPedida = (byte)datos.lector["CantidadPedida"];
                    aux.UrlImagen      = datos.lector.GetString(4);
                    aux.NombreActual   = (string)datos.lector["Nombre"];



                    lista.Add(aux);
                }

                datos.lector.Close();
                datos.conexion.Close();
                return(lista);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public Int32 Registrar(DetalleCarrito detalleCarrito)
        {
            Int32 DetalleCarritoID = 0;

            try
            {
                using (SqlConnection cnx = new SqlConnection(ConnectionString))
                {
                    SqlCommand cmd = new SqlCommand("dbo.USP_DetalleCarrito_Registrar", cnx)
                    {
                        CommandType    = CommandType.StoredProcedure,
                        CommandTimeout = 600
                    };

                    cmd.Parameters.AddWithValue("@CarritoId", detalleCarrito.CarritoId);
                    cmd.Parameters.AddWithValue("@Cantidad", detalleCarrito.Cantidad);
                    cmd.Parameters.AddWithValue("@ProductoId", detalleCarrito.ProductoId);

                    cnx.Open();

                    DetalleCarritoID = Int32.Parse(cmd.ExecuteScalar().ToString());

                    if (DetalleCarritoID <= 0)
                    {
                        DetalleCarritoID = -1;
                    }

                    cnx.Close();
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return(DetalleCarritoID);
        }
        public IActionResult Registrar([FromBody] RegistroModel registroModel)
        {
            ResponseModel responseModel = new ResponseModel();

            try
            {
                if (registroModel == null)
                {
                    responseModel.Codigo  = CodeEN.Warning;
                    responseModel.Mensaje = "Datos inválidos";

                    return(BadRequest(responseModel));
                }

                Tuple <Boolean, String> Valid = registroModel.Validate();

                if (!Valid.Item1)
                {
                    responseModel.Codigo  = CodeEN.Warning;
                    responseModel.Mensaje = Valid.Item2;

                    return(BadRequest(responseModel));
                }

                DateTime         FechaActual      = DateTime.UtcNow.AddHours(-5);
                DetalleCarritoBL detalleCarritoBL = new DetalleCarritoBL();

                String carritoId = this.HttpContext.User.Claims.FirstOrDefault(x => x.Type == ClaimTypes.GivenName)?.Value;
                Int32  CarritoId = Int32.Parse(carritoId);

                DetalleCarrito detalleCarrito = new DetalleCarrito
                {
                    CarritoId  = CarritoId,
                    Cantidad   = registroModel.Cantidad,
                    ProductoId = registroModel.ProductoId
                };

                Int32 DetalleCarritoId = detalleCarritoBL.Registrar(detalleCarrito);

                if (DetalleCarritoId > 0)
                {
                    String clienteId = this.HttpContext.User.Claims.FirstOrDefault(x => x.Type == ClaimTypes.NameIdentifier)?.Value;
                    Int32  ClienteId = Int32.Parse(clienteId);

                    CarritoBL carritoBL = new CarritoBL();

                    Carrito carrito = new Carrito
                    {
                        ClienteId = ClienteId,
                        FechaUltimaActualizacion = FechaActual
                    };

                    carritoBL.Actualizar(carrito);

                    responseModel.Codigo  = CodeEN.Success;
                    responseModel.Mensaje = "Se agregó el producto al carrito de manera satisfactoria";


                    return(Ok(responseModel));
                }
                else
                {
                    responseModel.Codigo  = CodeEN.Error;
                    responseModel.Mensaje = "No se pudo agregar el producto al carrito";

                    return(StatusCode(StatusCodes.Status500InternalServerError, responseModel));
                }
            }
            catch (Exception ex)
            {
                responseModel.Codigo  = CodeEN.Exception;
                responseModel.Mensaje = "Ocurrió una excepción";

                return(StatusCode(StatusCodes.Status500InternalServerError, responseModel));
            }
        }
Ejemplo n.º 12
0
        public async Task <IActionResult> Agregar([FromBody] ActualizarDetalleViewModel model)
        {
            if (!this.ModelState.IsValid)
            {
                return(this.BadRequest(this.ModelState));
            }

            if (model == null)
            {
                return(this.BadRequest());
            }

            var carrito = await this.VerificarCarrito(false).ConfigureAwait(false);

            var userId = this._userId;
            var guId   = this._guid;

            var fecha = DateTime.Now;

            if (carrito == null)
            {
                carrito = new Carrito
                {
                    ClienteId = userId,
                    Estado    = true,
                    CreatedAt = fecha,
                    UpdatedAt = fecha,
                };

                if (!this._userId.HasValue)
                {
                    carrito.ClienteGuid = this._guid;
                }

                await this._context.Carritos.AddAsync(carrito).ConfigureAwait(false);

                try
                {
                    await this._context.SaveChangesAsync().ConfigureAwait(false);

                    var detalle = new DetalleCarrito
                    {
                        CarritoId  = carrito.Id,
                        ProductoId = model.ProductoId,
                        Cantidad   = model.Cantidad,
                    };

                    await this._context.DetalleCarritos.AddAsync(detalle).ConfigureAwait(false);

                    await this._context.SaveChangesAsync().ConfigureAwait(false);
                }
                catch (DbUpdateConcurrencyException)
                {
                    return(this.BadRequest("Hubo un error al guardar sus datos."));
                }

                return(this.NoContent());
            }

            carrito.ClienteId = userId;
            carrito.UpdatedAt = fecha;

            if (carrito.Detalles.Any(d => d.ProductoId == model.ProductoId))
            {
                foreach (var detalle in carrito.Detalles)
                {
                    if (detalle.ProductoId == model.ProductoId)
                    {
                        detalle.Cantidad += model.Cantidad;
                    }
                }
            }
            else
            {
                carrito.Detalles.Add(new DetalleCarrito
                {
                    ProductoId = model.ProductoId,
                    Cantidad   = model.Cantidad,
                });
            }

            try
            {
                await this._context.SaveChangesAsync().ConfigureAwait(false);
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!this.CarritoExists(carrito.Id))
                {
                    return(this.NotFound());
                }

                return(this.BadRequest("Hubo un error al guardar sus datos."));
            }

            return(this.NoContent());
        }