private void Eliminar_Click(object sender, EventArgs e)
        {
            string id = pedidoGrid.SelectedRows[0].Cells["Id"].Value.ToString();
            MessageBoxButtons mButtons = MessageBoxButtons.YesNo;
            string message = String.Format("¿Estás seguro que deseas eliminar el pedido con Id: {0}?", id);
            string titulo = "Eliminando Pedido";

            var response = MessageBox.Show(message, titulo, mButtons);
            if (response.Equals(System.Windows.Forms.DialogResult.Yes))
            {
                // 1-Las des-relaciono
                LineaPedidoCEN lineaPedidoCEN = new LineaPedidoCEN();
                IList<int> l = new List<int>();
                foreach (LineaPedidoEN linea in lineaPedidoCEN.ObtenerLineasDePedido(id))
                {
                    l.Add(linea.Id);
                }
                _pedido.Unrelationer_lineas(id, l);
                // 2-Borro las lineas
                foreach (LineaPedidoEN linea in lineaPedidoCEN.ObtenerLineasDePedido(id))
                {
                    lineaPedidoCEN.Eliminar(linea.Id);
                }
                // 3-Borro el pedido
                _pedido.Eliminar(id);
                GridPedido_Load(sender, e);
            }
        }
        private void Eliminar_Click(object sender, EventArgs e)
        {
            MessageBoxButtons mButtons = MessageBoxButtons.YesNo;
            string message = String.Format("¿Estás seguro que deseas eliminar el pedido con Id: {0}?", IdPedido);
            string titulo = "Eliminando Pedido";

            var response = MessageBox.Show(message, titulo, mButtons);
            if (response.Equals(System.Windows.Forms.DialogResult.Yes))
            {
                // 1-Las des-relaciono
                LineaPedidoCEN lineaPedidoCEN = new LineaPedidoCEN();
                IList<int> l = new List<int>();
                foreach (LineaPedidoEN linea in lineaPedidoCEN.ObtenerLineasDePedido(IdPedido))
                {
                    l.Add(linea.Id);
                }
                PedidoCEN pedidoCEN = new PedidoCEN();
                pedidoCEN.Unrelationer_lineas(IdPedido, l);
                // 2-Borro las lineas
                foreach (LineaPedidoEN linea in lineaPedidoCEN.ObtenerLineasDePedido(IdPedido))
                {
                    lineaPedidoCEN.Eliminar(linea.Id);
                }
                // 3-Borro el pedido
                pedidoCEN.Eliminar(IdPedido);
            }
            this.Close();
        }
        private void Actualizar_Click(object sender, EventArgs e)
        {
            var enumSelected = (EstadoPedidoEnum)Enum.Parse(typeof(EstadoPedidoEnum), estadoCB.SelectedValue.ToString());
            if (enumSelected.Equals(EstadoPedidoEnum.Recibido))
            {
                // Aumentamos el stock de todos los productos del pedido
                LineaPedidoCEN lineaPedidoCEN = new LineaPedidoCEN();
                ProductoCEN productoCEN = new ProductoCEN();
                var l = new List<LineasGV>();
                foreach (LineaPedidoEN linea in lineaPedidoCEN.ObtenerLineasDePedido(IdPedido))
                {
                    var producto = new ProductoCEN().ObtenerProducto(linea.Productos.Id);
                    productoCEN.Editar(producto.Id, producto.Nombre, producto.Descripcion,
                        producto.Stock + linea.Cantidad, producto.Foto);
                }
            }
            var pedido = new PedidoCEN().ObtenerPedido(IdPedido);
            new PedidoCEN().Editar(IdPedido, pedido.Fecha, enumSelected, pedido.TipoPago);

            this.Close();
        }
        private void Crear_Click(object sender, EventArgs e)
        {
            PedidoCEN pedidoCEN = new PedidoCEN();
            LineaPedidoCEN lineaPedidoCEN = new LineaPedidoCEN();
            // Radiobox seleccionado con el tipo de enum
            var enumSeleccionado = (TipoPagoEnum)pedidoGB.Controls.OfType<RadioButton>().FirstOrDefault(x => x.Checked).Tag;
            // Obtengo el numero de pedido a crear
            int idPedido = pedidoCEN.ObtenerTodos(0, 0).Count + 1;
            // Linea de Pedido a insertar
            IList<LineaPedidoEN> lineaPedido = new List<LineaPedidoEN>();
            // Lista para relacionar las lineas con el pedido
            IList<int> idLineas = new List<int>();
            // Cojo la cantidad y el id de los productos del grid del pedido

            foreach (PedidoGV p in _lproductosPedido)
            {
                // Añado a la lista
                lineaPedido.Add(new LineaPedidoEN(Convert.ToInt32(p.Id), Convert.ToInt32(p.Cantidad),
                    _productoCEN.get_IProductoCAD().ReadOIDDefault(p.Id), null));
                idLineas.Add(Convert.ToInt32(p.Id));
            }
            // Instancio y Creo el pedido
            var pFinal = new PedidoEN(idPedido.ToString(), DateTime.Today, EstadoPedidoEnum.Enviado, enumSeleccionado, lineaPedido, _proveedorCEN.get_IProveedorCAD().ReadOIDDefault(_proveedor.Id));
            pedidoCEN.Crear(pFinal.Id, pFinal.Fecha, pFinal.Estado, pFinal.TipoPago, pFinal.Lineas, pFinal.Proveedor.Id);
            // Relaciono las lineas con el pedido
            pedidoCEN.Relationer_lineas(idPedido.ToString(), idLineas);

            this.Close();
        }
        private void Form_Load(object sender, EventArgs e)
        {
            ProveedorCEN proveedorCEN = new ProveedorCEN();
            var proveedor = proveedorCEN.ObtenerProveedor(IdProveedor);
            // Lo pinto en el form
            datosLabel.Text = String.Format("{0} - {1}{2}{3}{4}{5} {6}{7}{8} - {9}{10}",
                proveedor.Nombre, proveedor.Email, Environment.NewLine,
                proveedor.Direccion, Environment.NewLine,
                proveedor.CodigoPostal, proveedor.Localidad, Environment.NewLine,
                proveedor.Provincia, proveedor.Pais, Environment.NewLine);

            PedidoCEN pedidoCEN = new PedidoCEN();
            var pedido = pedidoCEN.ObtenerPedido(IdPedido);
            // Pinto la fecha, tipo de pago y el enum
            fechaBox.Text = pedido.Fecha.ToString();
            pagoBox.Text = pedido.TipoPago.ToString();
            string[] estados = { "Pendiente", "Enviado", "Recibido", "Cancelado" };
            for(int i = 0; i < estados.Length; i++)
            {
                if(estados[i].Equals(pedido.Estado.ToString()))
                    estadoCB.SelectedIndex = i;
            }
            // Obtengo el pedido para mostrarlo entero
            LineaPedidoCEN lineaPedidoCEN = new LineaPedidoCEN();
            var l = new List<LineasGV>();
            foreach (LineaPedidoEN linea in lineaPedidoCEN.ObtenerLineasDePedido(pedido.Id))
            {
                var producto = new ProductoCEN().ObtenerProducto(linea.Productos.Id);
                l.Add(new LineasGV()
                {
                    Id = producto.Id,
                    Producto = producto.Nombre,
                    Cantidad = linea.Cantidad
                });
            }
            lineasPedidoGV.DataSource = l;
        }