public ActionResult VerEnvioUnico(int id)
        {
            try
            {
                var enviop     = new EnvioProcess();
                var listaenvio = enviop.Listar();

                foreach (var item in listaenvio)
                {
                    if (item.Venta.CodPedido == id)
                    {
                        estadopedido = item.Estado;
                        idpedido     = id;
                    }
                }
                return(RedirectToAction("IndexUsuario"));
            }
            catch (Exception ex)
            {
                Bitacora        bitacora  = new Bitacora("Listar Envio Tabla Pedido", ex.Message.ToString(), User.Identity.Name, DateTime.Now);
                BitacoraProcess bitacorap = new BitacoraProcess();
                bitacorap.Create(bitacora);
                return(View());
            }
        }
        public ActionResult Asignar(Envio Envio)
        {
            try
            {
                var enviop    = new EnvioProcess();
                var empleadoP = new EmpleadoProcess();
                var envio     = enviop.GetByID(Envio.Id);
                envio.CodEmpleadoDeposito = Envio.CodEmpleadoDeposito;
                envio.Estado = "Asignado";
                enviop.Edit(envio);

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

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

                return(RedirectToAction("Index"));
            }
            catch (Exception ex)
            {
                Bitacora        bitacora  = new Bitacora("Asignar Tabla Envio", ex.Message.ToString(), User.Identity.Name, DateTime.Now);
                BitacoraProcess bitacorap = new BitacoraProcess();
                bitacorap.Create(bitacora);
                return(View());
            }
        }
        public ActionResult Asignar(int id)
        {
            try
            {
                var enviop            = new EnvioProcess();
                var empleadoP         = new EmpleadoProcess();
                var listaempleados    = new List <Empleado>();
                var listadodeempleado = empleadoP.Listar();

                foreach (var item in listadodeempleado)
                {
                    if (item.Estado == "Activo")
                    {
                        listaempleados.Add(item);
                    }
                }

                ViewBag.CodEmpleadoDeposito = new SelectList(listaempleados, "Id", "Nombre");;
                var listado = enviop.GetByID(id);
                ViewBag.codigo = id;
                return(View(listado));
            }
            catch (Exception ex)
            {
                Bitacora        bitacora  = new Bitacora("Asignar Tabla Envio", ex.Message.ToString(), User.Identity.Name, DateTime.Now);
                BitacoraProcess bitacorap = new BitacoraProcess();
                bitacorap.Create(bitacora);
                return(View());
            }
        }
        public ActionResult ConfirmarEmpleado(int id)
        {
            try
            {
                var enviop = new EnvioProcess();
                var envio  = enviop.GetByID(id);
                envio.Estado = "Confirmado";

                enviop.Edit(envio);

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

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

                return(RedirectToAction("IndexEmpleado"));
            }
            catch (Exception ex)
            {
                Bitacora        bitacora  = new Bitacora("Confirmar Tabla Envio", ex.Message.ToString(), User.Identity.Name, DateTime.Now);
                BitacoraProcess bitacorap = new BitacoraProcess();
                bitacorap.Create(bitacora);
                return(View());
            }
        }
        public ActionResult Index()
        {
            try
            {
                var envioP = new EnvioProcess();

                var lista         = new List <Envio>();
                var listadeenvios = envioP.Listar();

                foreach (var item in listadeenvios)
                {
                    if (item.EmpleadoDeposito == null)
                    {
                        var empleado = new Empleado();
                        empleado.Nombre       = "Sin Asignar";
                        item.EmpleadoDeposito = empleado;
                    }
                    lista.Add(item);
                }

                ViewBag.nombreusuario = "a";
                var usuariop     = new UsuarioProcess();
                var listausuario = usuariop.Listar();

                foreach (var item in listausuario)
                {
                    if (item.UserName == User.Identity.Name)
                    {
                        ViewBag.nombreusuario = item.CodEmpleado;
                    }
                }

                return(View(lista));
            }
            catch (Exception ex)
            {
                Bitacora        bitacora  = new Bitacora("Listar Tabla Envio", ex.Message.ToString(), User.Identity.Name, DateTime.Now);
                BitacoraProcess bitacorap = new BitacoraProcess();
                bitacorap.Create(bitacora);
                return(View());
            }
        }
        public ActionResult VerEstadoEnvio()
        {
            try
            {
                var envioP         = new EnvioProcess();
                var usuarioP       = new UsuarioProcess();
                var usuario        = new Usuario();
                var lista          = new List <Envio>();
                var listadeusuario = usuarioP.Listar();
                var listadeenvio   = envioP.Listar();

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

                foreach (var item in listadeenvio)
                {
                    if (item.Venta.Pedido.CodComprador == usuario.CodComprador)
                    {
                        lista.Add(item);
                    }
                }
                return(View(lista));
            }
            catch (Exception ex)
            {
                Bitacora        bitacora  = new Bitacora("ver estado envio Tabla Envio", 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());
            }
        }