public ActionResult Index(string sortOrder, string currentFilter, string searchString, int?page)
        {
            try
            {
                ViewBag.CurrentSort = sortOrder;

                ViewBag.NameSortParm = string.IsNullOrEmpty(sortOrder) ? "name_desc" : "";
                ViewBag.DateSortParm = sortOrder == "Date" ? "date_desc" : "Date";


                if (searchString != null)
                {
                    page = 1;
                }
                else
                {
                    searchString = currentFilter;
                }


                ViewBag.CurrentFilter = searchString;

                var ep = new ProductoProcess();


                IEnumerable <Producto> Productos = ep.ListarAPI();

                if (!string.IsNullOrEmpty(searchString))
                {
                    Productos = Productos.Where(s => s.Nombre.Contains(searchString));
                }

                switch (sortOrder)
                {
                case "name_desc":
                    Productos = Productos.OrderByDescending(s => s.Nombre);
                    break;

                case "Date":
                    Productos = Productos.OrderBy(s => s.Id);
                    break;

                default:
                    Productos = Productos.OrderBy(s => s.Nombre);
                    break;
                }



                int pageSize   = 10;
                int pageNumber = (page ?? 1);



                foreach (var item in Productos)
                {
                    if (item.DVH != Decopack.Servicios.Seguridad.GenerarSHA(string.Format("{0}{1}{2}{3}", item.Nombre, item.Precio, item.Estado, item.Descripcion)))
                    {
                        diferencia = true;
                    }
                }

                var productoDVVP = new ProductoDVVProcess();
                var productoDVV  = new ProductoDVV();
                var biz          = new ProductoProcess();

                foreach (var item in biz.ListarAPI())
                {
                    cadena = string.Format(cadena + "{0}", item.DVH);
                }

                if (biz.ListarAPI().Count() != 0)
                {
                    productoDVV.DVV = Decopack.Servicios.Seguridad.GenerarSHA(cadena);

                    foreach (var item in productoDVVP.Listar())
                    {
                        if (item.Entidad == "Producto")
                        {
                            if (productoDVV.DVV == item.DVV)
                            {
                            }
                            else
                            {
                                Bitacora        bitacora  = new Bitacora("Listar Tabla Producto", "Error DVV", User.Identity.Name, DateTime.Now);
                                BitacoraProcess bitacorap = new BitacoraProcess();
                                bitacorap.Create(bitacora);
                                ViewBag.showSuccessAlert = true;
                                return(View(Productos.ToPagedList(pageNumber, pageSize)));
                            }
                        }
                    }
                }



                if (diferencia == true)
                {
                    Bitacora        bitacora  = new Bitacora("Listar Tabla Producto", "Error DVH", User.Identity.Name, DateTime.Now);
                    BitacoraProcess bitacorap = new BitacoraProcess();
                    bitacorap.Create(bitacora);
                    ViewBag.showSuccessAlert = true;
                    return(View(Productos.ToPagedList(pageNumber, pageSize)));
                }
                else
                {
                    ViewBag.showSuccessAlert = false;
                    return(View(Productos.ToPagedList(pageNumber, pageSize)));
                }

                if (ViewBag.advertencia == true)
                {
                }
                else
                {
                    ViewBag.advertencia = false;
                }
            }
            catch (Exception a)
            {
                Bitacora        bitacora  = new Bitacora("Listar Tabla Producto", a.Message.ToString(), User.Identity.Name, DateTime.Now);
                BitacoraProcess bitacorap = new BitacoraProcess();
                bitacorap.Create(bitacora);
                return(View());
            }
        }
        public ActionResult Actualizar()
        {
            try
            {
                var biz = new ProductoProcess();


                if (biz.ListarAPI().Count() != 0)
                {
                    var Producto = biz.ListarAPI();

                    var proveedorlista         = new List <Proveedor>();
                    var ProveedormateriaprimaP = new MateriaPrimaProveedorProcess();

                    var materiaprimaproducto = new MateriaPrimaProductoProcess();
                    var proveedorp           = new ProveedorProcess();
                    int contadorP            = 0;



                    foreach (var itemP in Producto)
                    {
                        itemP.Precio = 0;
                        itemP.Estado = "No Disponible";
                        itemP.DVH    = Decopack.Servicios.Seguridad.GenerarSHA(string.Format("{0}{1}{2}{3}", itemP.Nombre, itemP.Precio, itemP.Estado, itemP.Descripcion));

                        foreach (var itemM in materiaprimaproducto.Listar())
                        {
                            if (itemM.CodProducto == itemP.Id)
                            {
                                contadorP = 0;
                                foreach (var item in ProveedormateriaprimaP.Listarpormateriaprima(itemM.CodMateriaPrima))
                                {
                                    foreach (var itemPROV in proveedorp.Listar())
                                    {
                                        if (itemPROV.Id == item.CodProveedor)
                                        {
                                            if (itemPROV.Estado == "Activo")
                                            {
                                                if (contadorP == 0)
                                                {
                                                    itemP.Precio = (item.Precio * itemM.Cantidad) + itemP.Precio;
                                                    itemP.Estado = "Disponible";
                                                    itemP.DVH    = Decopack.Servicios.Seguridad.GenerarSHA(string.Format("{0}{1}{2}{3}", itemP.Nombre, itemP.Precio, itemP.Estado, itemP.Descripcion));
                                                    biz.Edit(itemP);
                                                    contadorP = 1;
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                        if (itemP.Precio == 0)
                        {
                            biz.Edit(itemP);
                        }
                    }

                    var productoDVVP = new ProductoDVVProcess();
                    var productoDVV  = new ProductoDVV();



                    foreach (var item in biz.ListarAPI())
                    {
                        cadena = string.Format(cadena + "{0}", item.DVH);
                    }

                    productoDVV.DVV = Decopack.Servicios.Seguridad.GenerarSHA(cadena);

                    foreach (var item in productoDVVP.Listar())
                    {
                        if (item.Entidad == "Producto")
                        {
                            productoDVV.Id      = item.Id;
                            productoDVV.Entidad = item.Entidad;
                            productoDVVP.Editar(productoDVV);
                        }
                        else
                        {
                            productoDVVP.Crear(productoDVV);
                        }
                    }
                }

                Bitacora        bitacora  = new Bitacora("Tabla Producto", "Actualizar Precio", User.Identity.Name, DateTime.Now);
                BitacoraProcess bitacorap = new BitacoraProcess();
                bitacorap.Create(bitacora);


                return(RedirectToAction("Index"));
            }
            catch (Exception ex)
            {
                Bitacora        bitacora  = new Bitacora("Actualizar Precio Tabla Producto", ex.Message.ToString(), User.Identity.Name, DateTime.Now);
                BitacoraProcess bitacorap = new BitacoraProcess();
                bitacorap.Create(bitacora);
                return(View());
            }
        }
        public ActionResult Edit(Producto producto1, HttpPostedFileBase imagendelproducto)
        {
            try
            {
                var biz      = new ProductoProcess();
                var producto = biz.GetByID(producto1.Id);
                if (imagendelproducto != null && imagendelproducto.ContentLength > 0)
                {
                    byte[] imagendata = null;
                    using (var binarypaciente = new BinaryReader(imagendelproducto.InputStream))
                    {
                        imagendata = binarypaciente.ReadBytes(imagendelproducto.ContentLength);
                    }
                    producto.ImagenProducto = imagendata;
                }

                if (producto.Precio > producto1.Precio)
                {
                    ViewBag.advertencia = true;
                    return(View(producto1));
                }
                else
                {
                    ViewBag.advertencia = false;
                }
                producto.Nombre      = producto1.Nombre;
                producto.Precio      = producto1.Precio;
                producto.Descripcion = producto1.Descripcion;
                producto.DVH         = Decopack.Servicios.Seguridad.GenerarSHA(string.Format("{0}{1}{2}{3}", producto.Nombre, producto.Precio, producto.Estado, producto.Descripcion));
                if (producto.Precio == 0)
                {
                    throw new Exception();
                }


                bool result = biz.Edit(producto);

                var ProductoCCP = new ProductoCCProcess();
                var productoCC  = new ProductoCC();
                productoCC.Descripcion = producto.Descripcion;
                productoCC.Nombre      = producto.Nombre;
                productoCC.Fecha       = DateTime.Now;
                productoCC.Tipo        = "Editar";
                productoCC.Usuario     = User.Identity.Name;
                ProductoCCP.Crear(productoCC);

                var productoDVVP = new ProductoDVVProcess();
                var productoDVV  = new ProductoDVV();



                foreach (var item in biz.ListarAPI())
                {
                    cadena = string.Format(cadena + "{0}", item.DVH);
                }

                productoDVV.DVV = Decopack.Servicios.Seguridad.GenerarSHA(cadena);

                foreach (var item in productoDVVP.Listar())
                {
                    if (item.Entidad == "Producto")
                    {
                        productoDVV.Id      = item.Id;
                        productoDVV.Entidad = item.Entidad;
                        productoDVVP.Editar(productoDVV);
                    }
                    else
                    {
                        productoDVVP.Crear(productoDVV);
                    }
                }

                Bitacora        bitacora  = new Bitacora("Editar", "Tabla Producto", User.Identity.Name, DateTime.Now);
                BitacoraProcess bitacorap = new BitacoraProcess();
                bitacorap.Create(bitacora);

                if (result)
                {
                    return(RedirectToAction("Index"));
                }
                else
                {
                    return(View());
                }
            }
            catch (Exception a)
            {
                Bitacora        bitacora  = new Bitacora("Editar Tabla Producto", a.Message.ToString(), User.Identity.Name, DateTime.Now);
                BitacoraProcess bitacorap = new BitacoraProcess();
                bitacorap.Create(bitacora);
                return(View());
            }
        }
        public ActionResult Delete(Producto producto1)
        {
            try
            {
                var biz      = new ProductoProcess();
                var producto = biz.GetByID(producto1.Id);

                if (producto.Estado == "Disponible")
                {
                    producto.Estado = "No Disponible";
                }
                else
                {
                    producto.Estado = "Disponible";
                }
                producto.DVH = Decopack.Servicios.Seguridad.GenerarSHA(string.Format("{0}{1}{2}{3}", producto.Nombre, producto.Precio, producto.Estado, producto.Descripcion));
                bool result = biz.Edit(producto);

                var ProductoCCP = new ProductoCCProcess();
                var productoCC  = new ProductoCC();
                productoCC.Descripcion = producto.Descripcion;
                productoCC.Nombre      = producto.Nombre;
                productoCC.Fecha       = DateTime.Now;
                productoCC.Tipo        = "Baja";
                productoCC.Usuario     = User.Identity.Name;
                ProductoCCP.Crear(productoCC);

                var productoDVVP = new ProductoDVVProcess();
                var productoDVV  = new ProductoDVV();



                foreach (var item in biz.ListarAPI())
                {
                    cadena = string.Format(cadena + "{0}", item.DVH);
                }

                productoDVV.DVV = Decopack.Servicios.Seguridad.GenerarSHA(cadena);

                foreach (var item in productoDVVP.Listar())
                {
                    if (item.Entidad == "Producto")
                    {
                        productoDVV.Id      = item.Id;
                        productoDVV.Entidad = item.Entidad;
                        productoDVVP.Editar(productoDVV);
                    }
                    else
                    {
                        productoDVVP.Crear(productoDVV);
                    }
                }

                Bitacora        bitacora  = new Bitacora("Eliminar", "Tabla Producto", User.Identity.Name, DateTime.Now);
                BitacoraProcess bitacorap = new BitacoraProcess();
                bitacorap.Create(bitacora);

                if (result)
                {
                    return(RedirectToAction("Index"));
                }
                else
                {
                    return(View());
                }
            }
            catch (Exception a)
            {
                Bitacora        bitacora  = new Bitacora("Eliminar Tabla Producto", a.Message.ToString(), User.Identity.Name, DateTime.Now);
                BitacoraProcess bitacorap = new BitacoraProcess();
                bitacorap.Create(bitacora);
                return(View());
            }
        }
        public ActionResult Create(Producto producto, HttpPostedFileBase imagendelproducto)
        {
            try
            {
                if (imagendelproducto != null && imagendelproducto.ContentLength > 0)
                {
                    HttpPostedFileBase fileBase = Request.Files[0];
                    WebImage           image    = new WebImage(fileBase.InputStream);

                    producto.ImagenProducto = image.GetBytes();
                }

                producto.Estado = "No Disponible";
                producto.Precio = 0;
                producto.DVH    = Decopack.Servicios.Seguridad.GenerarSHA(string.Format("{0}{1}{2}{3}", producto.Nombre, producto.Precio, producto.Estado, producto.Descripcion));

                var biz = new ProductoProcess();

                var model = biz.AgregarAPI(producto);


                var ProductoCCP = new ProductoCCProcess();
                var productoCC  = new ProductoCC();
                productoCC.Descripcion = producto.Descripcion;
                productoCC.Nombre      = producto.Nombre;
                productoCC.Fecha       = DateTime.Now;
                productoCC.Tipo        = "Alta";
                productoCC.Usuario     = User.Identity.Name;
                ProductoCCP.Crear(productoCC);

                var productoDVVP = new ProductoDVVProcess();
                var productoDVV  = new ProductoDVV();



                foreach (var item in biz.ListarAPI())
                {
                    cadena = string.Format(cadena + "{0}", item.DVH);
                }

                productoDVV.DVV = Decopack.Servicios.Seguridad.GenerarSHA(cadena);

                foreach (var item in productoDVVP.Listar())
                {
                    if (item.Entidad == "Producto")
                    {
                        productoDVV.Id      = item.Id;
                        productoDVV.Entidad = item.Entidad;
                        productoDVVP.Editar(productoDVV);
                    }
                    else
                    {
                        productoDVVP.Crear(productoDVV);
                    }
                }
                if (productoDVVP.Listar().Count == 0)
                {
                    productoDVV.Entidad = "Producto";
                    productoDVVP.Crear(productoDVV);
                }


                Bitacora        bitacora  = new Bitacora("Crear", "Tabla Producto", User.Identity.Name, DateTime.Now);
                BitacoraProcess bitacorap = new BitacoraProcess();
                bitacorap.Create(bitacora);



                return(RedirectToAction("Index"));
            }
            catch (Exception a)
            {
                Bitacora        bitacora  = new Bitacora("Crear Tabla Producto", a.Message.ToString(), User.Identity.Name, DateTime.Now);
                BitacoraProcess bitacorap = new BitacoraProcess();
                bitacorap.Create(bitacora);
                return(View());
            }
        }