// GET: MateriaPrimaProveedor/Create
        public ActionResult Create(int id)
        {
            try
            {
                var materiaprimaP     = new MateriaPrimaProcess();
                var listamateriaprima = new List <MateriaPrima>();
                listamateriaprima.Add(materiaprimaP.GetByID(id));

                var proveedorP     = new ProveedorProcess();
                var proveedorlista = new List <Proveedor>();

                foreach (var item in proveedorP.Listar())
                {
                    if (item.Estado == "Activo")
                    {
                        proveedorlista.Add(item);
                    }
                }

                var materiaprimaproveedor = new MateriaPrimaProveedorProcess();
                foreach (var itemP in proveedorP.Listar())
                {
                    foreach (var item in materiaprimaproveedor.Listarpormateriaprima(id))
                    {
                        if (item.CodMateriaPrima == id)
                        {
                            if (itemP.Id == item.CodProveedor)
                            {
                                proveedorlista.RemoveAll(x => x.Id == itemP.Id);
                            }
                            else
                            {
                            }
                        }
                    }
                }

                ViewBag.Codproveedor    = new SelectList(proveedorlista, "Id", "Nombre");
                ViewBag.Codmateriaprima = new SelectList(listamateriaprima, "Id", "Nombre");
                return(View());
            }
            catch (Exception ex)
            {
                Bitacora        bitacora  = new Bitacora("Crear Tabla Materia Prima Proveedor", ex.Message.ToString(), User.Identity.Name, DateTime.Now);
                BitacoraProcess bitacorap = new BitacoraProcess();
                bitacorap.Create(bitacora);
                return(View());
            }
        }
 // GET: MateriaPrimaProveedor
 public ActionResult Index()
 {
     try
     {
         var materiaprimaproveedor = new MateriaPrimaProveedorProcess();
         var lista = materiaprimaproveedor.Listar();
         return(View(lista));
     }
     catch (Exception ex)
     {
         Bitacora        bitacora  = new Bitacora("Listar Tabla Materia Prima Proveedor", ex.Message.ToString(), User.Identity.Name, DateTime.Now);
         BitacoraProcess bitacorap = new BitacoraProcess();
         bitacorap.Create(bitacora);
         return(View());
     }
 }
 // GET: MateriaPrimaProveedor/Edit/5
 public ActionResult Edit(int id)
 {
     try
     {
         var materiaprimaproveedor = new MateriaPrimaProveedorProcess();
         var MP = materiaprimaproveedor.GetByID(id);
         return(View(MP));
     }
     catch (Exception ex)
     {
         Bitacora        bitacora  = new Bitacora("Editar Tabla Materia Prima Proveedor", ex.Message.ToString(), User.Identity.Name, DateTime.Now);
         BitacoraProcess bitacorap = new BitacoraProcess();
         bitacorap.Create(bitacora);
         return(View());
     }
 }
        public ActionResult Create(Reposicion reposicion)
        {
            try
            {
                var biz = new ReposicionProcess();
                reposicion.Estado = "Pendiente";
                reposicion.Fecha  = DateTime.Now;
                var    materiaprimaproducto  = new MateriaPrimaProductoProcess();
                var    materiaprimaProveedor = new MateriaPrimaProveedorProcess();
                double valor1 = 0;
                var    listamateriaprimaproveedor = materiaprimaProveedor.Listar();

                foreach (var itemPROV in listamateriaprimaproveedor)
                {
                    if (itemPROV.CodMateriaPrima == reposicion.CodMateriaPrima && itemPROV.CodProveedor == reposicion.CodProveedor)
                    {
                        valor1 = itemPROV.Precio;
                    }
                }


                reposicion.Monto = valor1 * reposicion.Cantidad;
                biz.Crear(reposicion);

                TempData["Message"] = Recursos.Recurso.reposicion1;

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


                return(RedirectToAction("Index"));
            }
            catch (Exception ex)
            {
                Bitacora        bitacora  = new Bitacora("Crear Tabla Reposicion", ex.Message.ToString(), User.Identity.Name, DateTime.Now);
                BitacoraProcess bitacorap = new BitacoraProcess();
                bitacorap.Create(bitacora);
                return(View());
            }
        }
        // GET: MateriaPrimaProveedor/Delete/5
        public ActionResult Delete(int id)
        {
            try
            {
                var materiaprimaproveedorP = new MateriaPrimaProveedorProcess();
                var MP = materiaprimaproveedorP.Delete(id);

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

                return(RedirectToAction("Index"));
            }
            catch (Exception ex)
            {
                Bitacora        bitacora  = new Bitacora("Eliminar Tabla Materia Prima Proveedor", ex.Message.ToString(), User.Identity.Name, DateTime.Now);
                BitacoraProcess bitacorap = new BitacoraProcess();
                bitacorap.Create(bitacora);
                return(View());
            }
        }
        public ActionResult Create(MateriaPrimaProveedor MateriaPrimaProveedor)
        {
            try
            {
                var materiaprimaproveedor = new MateriaPrimaProveedorProcess();

                materiaprimaproveedor.Crear(MateriaPrimaProveedor);

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

                return(RedirectToAction("Index", "MateriaPrima"));
            }
            catch (Exception ex)
            {
                Bitacora        bitacora  = new Bitacora("Crear Tabla Materia Prima Proveedor", ex.Message.ToString(), User.Identity.Name, DateTime.Now);
                BitacoraProcess bitacorap = new BitacoraProcess();
                bitacorap.Create(bitacora);
                return(View());
            }
        }
        public ActionResult Edit(MateriaPrimaProveedor materiaprimaproveedor)
        {
            try
            {
                var materiaprimaproveedorP = new MateriaPrimaProveedorProcess();
                var MP = materiaprimaproveedorP.GetByID(materiaprimaproveedor.Id);
                MP.Precio = materiaprimaproveedor.Precio;
                materiaprimaproveedorP.Edit(MP);

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

                return(RedirectToAction("Index"));
            }
            catch (Exception ex)
            {
                Bitacora        bitacora  = new Bitacora("Editar Tabla Materia Prima Proveedor", ex.Message.ToString(), User.Identity.Name, DateTime.Now);
                BitacoraProcess bitacorap = new BitacoraProcess();
                bitacorap.Create(bitacora);
                return(View());
            }
        }
        // GET: Reposicion/Create
        public ActionResult Create(int id)
        {
            try
            {
                var materiaprimaP = new MateriaPrimaProcess();
                var mat           = new List <MateriaPrima>();
                mat.Add(materiaprimaP.GetByID(id));

                var ProveedorP     = new ProveedorProcess();
                var proveedorlista = new List <Proveedor>();


                var ProveedormateriaprimaP        = new MateriaPrimaProveedorProcess();
                var listaproveedorpormateriaprima = ProveedormateriaprimaP.Listarpormateriaprima(id);

                foreach (var item in listaproveedorpormateriaprima)
                {
                    proveedorlista.Add(ProveedorP.GetByID(item.CodProveedor));
                }

                var depositoP       = new DepositoProcess();
                var depositolistado = depositoP.Listar();

                ViewBag.Codmateriaprima = new SelectList(mat, "Id", "Nombre");
                ViewBag.Codproveedor    = new SelectList(proveedorlista, "Id", "Nombre");
                ViewBag.Coddeposito     = new SelectList(depositolistado, "Id", "Detalle");

                return(View());
            }
            catch (Exception ex)
            {
                Bitacora        bitacora  = new Bitacora("Crear Tabla Reposicion", ex.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 PagarUsuario(int id)
        {
            try
            {
                var pedidoP = new PedidoProcess();
                var ped     = pedidoP.GetByID(id);
                int salida  = 0;

                var depositoP     = new DepositoProcess();
                var deposito      = new Deposito();
                var listadeposito = depositoP.Listar();

                foreach (var item in listadeposito)
                {
                    deposito = item;
                }

                ped.Estado = "Pagado";



                var ventaP = new VentaProcess();
                var venta  = new Venta();

                var     usuariop      = new UsuarioProcess();
                Usuario usuario       = new Usuario();
                var     listausuarios = usuariop.Listar();

                foreach (var item in listausuarios)
                {
                    if (item.UserName == User.Identity.Name)
                    {
                        usuario = item;
                    }
                }

                var materiaprimaprodP     = new MateriaPrimaProductoProcess();
                var materiaprima          = new List <StockMateriaPrimaDeposito>();
                var listamateriaprimaprod = materiaprimaprodP.Listar();


                foreach (var item in listamateriaprimaprod)
                {
                    if (item.CodProducto == ped.Codproducto)
                    {
                        var mt = new StockMateriaPrimaDeposito();
                        mt.Cantidad        = item.Cantidad * ped.Cantidad;
                        mt.CodMateriaPrima = item.CodMateriaPrima;
                        materiaprima.Add(mt);
                    }
                }


                var stockP      = new StockMateriaPrimaDepositoProcess();
                var reposicionP = new ReposicionProcess();

                var       ProveedormateriaprimaP = new MateriaPrimaProveedorProcess();
                Proveedor proveedor = new Proveedor();

                var materiaprimaProveedor = new MateriaPrimaProveedorProcess();


                var listastockmateriaprima = stockP.Listar();

                foreach (var item in listastockmateriaprima)
                {
                    double valor1 = 0;
                    double valor2 = 0;
                    foreach (var itemMP in materiaprima)
                    {
                        if (item.CodMateriaPrima == itemMP.CodMateriaPrima)
                        {
                            if (item.Cantidad < itemMP.Cantidad)
                            {
                                var reposicion = new Reposicion();
                                reposicion.CodMateriaPrima = item.CodMateriaPrima;
                                reposicion.CodDeposito     = deposito.Id;
                                reposicion.Fecha           = DateTime.Now;
                                reposicion.Cantidad        = itemMP.Cantidad - item.Cantidad;
                                reposicion.Estado          = "Reposicion Compra";

                                foreach (var itemProveedor in ProveedormateriaprimaP.Listarpormateriaprima(itemMP.CodMateriaPrima))
                                {
                                    if (valor2 == 0)
                                    {
                                        reposicion.Proveedor    = itemProveedor.Proveedor;
                                        reposicion.CodProveedor = itemProveedor.Proveedor.Id;
                                        valor2 = 1;
                                    }
                                }

                                foreach (var itemPROV in materiaprimaProveedor.Listarpormateriaprima(itemMP.CodMateriaPrima))
                                {
                                    if (itemPROV.CodMateriaPrima == reposicion.CodMateriaPrima && itemPROV.CodProveedor == reposicion.CodProveedor)
                                    {
                                        valor1 = itemPROV.Precio;
                                    }
                                }
                                reposicion.Monto = valor1 * reposicion.Cantidad;
                                reposicionP.Crear(reposicion);
                                item.Cantidad = 0;
                                stockP.Edit(item);
                                salida = 1;
                            }
                            else
                            {
                                item.Cantidad = item.Cantidad - itemMP.Cantidad;
                                stockP.Edit(item);
                            }
                        }
                    }
                }

                venta.CodEmpleado = usuario.CodEmpleado;
                venta.CodPedido   = ped.Id;
                venta.Formadepago = "Efectivo";

                if (venta.Formadepago == "Efectivo" && ped.Comprador.SocioEstado == "Si")
                {
                    venta.Monto = ped.Monto * 0.90;
                }
                else
                {
                    if (venta.Formadepago == "Efectivo")
                    {
                        venta.Monto = ped.Monto * 0.95;
                    }
                    if (ped.Comprador.SocioEstado == "Si")
                    {
                        venta.Monto = ped.Monto * 0.95;
                    }
                }

                venta.Pagado = "Si";

                ped.Monto = venta.Monto;
                pedidoP.Editar(ped);

                var envioP = new EnvioProcess();
                var envio  = new Envio();

                envio.CodVenta       = ventaP.Crear(venta).Id;
                envio.Direccion      = ped.Comprador.Domicilio;
                envio.Estado         = "En Espera";
                envio.Fechadellegada = DateTime.Now;
                DateTime today = DateTime.Now;
                if (salida == 1)
                {
                    envio.Fechadesalida = today.AddDays(14);
                }
                else
                {
                    envio.Fechadesalida = today.AddDays(7);
                }


                envioP.Crear(envio);

                TempData["Message"] = Recursos.Recurso.pedido3;

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


                return(RedirectToAction("IndexUsuario"));
            }
            catch (Exception ex)
            {
                Bitacora        bitacora  = new Bitacora("Pagar Tabla Pedido", ex.Message.ToString(), User.Identity.Name, DateTime.Now);
                BitacoraProcess bitacorap = new BitacoraProcess();
                bitacorap.Create(bitacora);
                return(View());
            }
        }