Ejemplo n.º 1
0
        public ActionResult CrearProducto(ProductoModel unProducto)
        {
            //YA controlamos que el usuario este logueado en el GET

            //Si el modelo no es valido retornamos la vista con los errores
            if (!ModelState.IsValid)
            {
                //Retornamos el modelo con sus errores
                return(View(unProducto));
            }
            else //Si el modelo ES VALIDO
            {
                //Nos anticipamos a un posible error en DB
                try
                {
                    //Buscamos el producto por su ID, si hay alguno con la misma id mostramos error
                    ProductoDTO buscando = miLogica.BuscarProducto(unProducto.Id);
                    if (buscando == null)
                    {
                        //Creamos un ProductoDTO para pasarlo a la logica
                        ProductoDTO nuevoProducto = new ProductoDTO()
                        {
                            Id    = unProducto.Id,
                            Marca = unProducto.Marca,
                            //Ya controlamos que la session no sea nula entonces:
                            NickUsuario = HerramientasM.IdLogueado((UsuarioModel)Session["Logueado"]),
                            Nombre      = unProducto.Nombre,
                            Precio      = unProducto.Precio,
                            Habilitado  = true
                        };

                        //Enviamos el producto a la logica
                        miLogica.CrearProducto(nuevoProducto);

                        //Redirigimos al Action para que se reseteen los campos del formulario
                        return(RedirectToAction("CrearProducto"));
                    }
                    else //Si el producto con esa id esta en el sistema
                    {
                        //Creamos el mensaje de error
                        ModelState.AddModelError("Id", $"Ya existe un producto con id: {unProducto.Id}");
                        //Devolvemos la vista
                        return(View(unProducto));
                    }
                }
                catch (Exception unError)
                {
                    //Podriamos guardar el error en base de datos
                    //Retornamos la vista de error
                    return(View("Error"));
                }
            }
        }
        /*Nos devuelve un string con Nombre - Marca de un producto correspondiente al id que nos llega como parametro*/
        private string NombreMarcaProducto(int idProducto)
        {
            //Anticipamos un posible error en la base
            try
            {
                //Instanciamos la logica de productos
                LogicaProducto logicaProducto = new LogicaProducto();

                //Buscamos el producto
                ProductoDTO unProducto = logicaProducto.BuscarProducto(idProducto);

                //Juntamos el nombre y la marca en un mismo string
                string resultado = unProducto.Nombre + " " + unProducto.Marca;

                //Retornamos nombre y marca
                return(resultado);
            }
            catch (Exception)
            {
                //Retornamos un error para saber que algo fallo
                return("Algo salio mal");
            }
        }
        public ActionResult CrearFactura(FacturaModel nuevaFactura)
        {
            //Controlamos que el usuario este logueado, en este caso no importa si es admin o no
            if (Session["Logueado"] != null)
            {
                if (ModelState.IsValid)
                {
                    //Nos anticipamos a cualquier error inesperado que pueda ocurrir en base usando try
                    try
                    {
                        //Creamos una instancia de la logica de productos
                        LogicaProducto logProductos = new LogicaProducto();

                        //Busco el producto ingresado en mi base de datos
                        ProductoDTO productoActual = logProductos.BuscarProducto(nuevaFactura.IdProducto);
                        //Sabemos que el producto no viene null porque el id es seleccionado de una lista. NO es ingresado por el usuario

                        //Creamos el detalle y le cargamos los datos
                        DetalleFacturaModel nuevoDetalle = new DetalleFacturaModel()
                        {
                            IdProducto = productoActual.Id,
                            Cantidad   = nuevaFactura.Cantidad,
                            SubTotal   = productoActual.Precio * nuevaFactura.Cantidad
                        };

                        //Creamos una factura para asignarle lo que esta en session
                        FacturaModel unaFactura = new FacturaModel();
                        unaFactura = (FacturaModel)Session["nuevaFactura"];

                        //Vemos si la lista de productos de la factura esta creada, sino la creamos y agregamos nuestro detalle(Porque si es null y tratamos de agregarle algo va a explotar)
                        if (unaFactura.ListaDetalle == null)
                        {
                            //creamos la lista
                            unaFactura.ListaDetalle = new List <DetalleFacturaModel>();
                            //Se lo pasamos a nuestra factura
                            unaFactura.ListaDetalle.Add(nuevoDetalle);
                        }
                        else
                        {
                            //Si ya tiene algun item agregamos normalmente
                            unaFactura.ListaDetalle.Add(nuevoDetalle);
                        }

                        //Actualizamos el gastototal, La funcion calcularGasto no esta en la capa logica porque usaremos un DetalleFacturaModel y la logica no tiene acceso...
                        unaFactura.Total = CalcularGasto(unaFactura.ListaDetalle);

                        //Guardamos los datos en la session
                        Session["nuevaFactura"] = unaFactura;

                        //Retornamos la vista:
                        return(View(unaFactura));
                    }
                    catch
                    {
                        //Redirigimos a la vista de error...
                        return(View("Error"));
                    }
                }
                else //Si el modelo no es valido
                {
                    //Devolvemos la vista con los errores correspondientes
                    return(View(nuevaFactura));
                }
            }
            else//Si no esta logueado
            {
                //Redirigimos a la vista de LOGIN para que ingrese
                return(RedirectToAction("Login", "Ingreso"));
            }
        }