private void btnAceptar_Click(object sender, EventArgs e)
 {
     if (!CamposFaltantes)
     {
         Interface = new InterfaceUsuario(this);
         if (Interface.RegistrarMaterial(ObtenerRegistro))
         {
             string Mensaje = "";
             if (!ActualizarProMat(out Mensaje))
             {
                 MessageBox.Show("Material registrado con éxito", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Information);
             }
             else
             {
                 Validar.MensajeErrorOK("El material se registró sin embargo hubo un problema al asociar los productos, favor de cambiar los parámetros modificando el material en su opción correspondiente\n\n" + Mensaje);
             }
             Close();
         }
         else
         {
             RegistroMaterial[] temp = Interface.BuscarUnMaterial(new RegistroMaterial(ObtenerRegistro.Clave, "", -1, -1));
             if (temp?[0]?.Clave == ObtenerRegistro.Clave)
             {
                 Validar.MensajeErrorOK("El número clave ya ha sido usado anteriormente y no puede repetirse");
             }
             else
             {
                 temp = Interface.BuscarUnMaterial(new RegistroMaterial(-1, tbNombre.Text, -1, -1));
                 bool Existe = false;
                 for (int i = 0; i < temp?.Length && !Existe; i++)
                 {
                     if (temp?[i]?.Nombre == tbNombre.Text)
                     {
                         Existe = true;
                     }
                 }
                 if (temp?[0]?.Nombre == ObtenerRegistro.Nombre)
                 {
                     Validar.MensajeErrorOK("El nombre ya ha sido usado anteriormente y no puede repetirse");
                 }
                 else
                 {
                     Validar.MensajeErrorBaseDeDatos();
                 }
             }
         }
     }
 }
        private void LlenarData(Búsqueda Tipo)
        {
            int Col = 0, Ren = 0;

            if (dgvMateriales.SelectedCells.Count > 0)
            {
                DataGridViewCell Cell = dgvMateriales.SelectedCells[0];
                Col = Cell.ColumnIndex;
                Ren = Cell.RowIndex;
            }
            dgvMateriales.Rows.Clear();
            RegistroMaterial[] temp = null;
            if (Tipo == Búsqueda.Total)
            {
                temp = Interface.ObtenerMateriales();
            }
            else
            {
                if (Tipo == Búsqueda.Clave)
                {
                    temp = Interface.BuscarUnMaterial(new RegistroMaterial(Convert.ToInt32(tbClave.Text), "", -1, -1));
                }
                else
                if (Tipo == Búsqueda.Personalizada)
                {
                    temp = Interface.BuscarUnMaterial(new RegistroMaterial(-1, tbNombre.Text, string.IsNullOrWhiteSpace(tbPrecio.Text) ? -1 : Convert.ToInt32(tbPrecio.Text), -1));
                }
            }
            dgvMateriales.RowCount = temp?.Length ?? 0;
            if (temp != null)
            {
                for (int i = 0; i < temp.Length; i++)
                {
                    dgvMateriales.Rows[i].DefaultCellStyle.BackColor = temp[i].Activo == 1 ? Color.LightGreen : Color.LightSalmon;
                    dgvMateriales[0, i].Value = temp[i].Clave;
                    dgvMateriales[1, i].Value = temp[i].Nombre;
                    dgvMateriales[2, i].Value = "$" + temp[i].Precio.ToString("N2");
                }
            }
            if (dgvMateriales.SelectedCells.Count > 0)
            {
                dgvMateriales.CurrentCell = dgvMateriales[Col > dgvMateriales.ColumnCount ? 0 : Col, Ren > dgvMateriales.RowCount ? 0 : Ren];
                dgvMateriales.Focus();
            }
        }
        public RegistroMaterial PedirMaterial(out bool Cancelado)
        {
            InterfaceUsuario Interface = new InterfaceUsuario(this);

            Validacion = new Validar(this);
            pbIcono.BackgroundImage = Properties.Resources.IconoMaterial;
            tbNumEmpleado.MaxLength = 8;
            lblInfo.Text            = "Ingrese clave del material a eliminar";
            Text = lblPedir.Text = lblTitulo.Text = "#material";
            AlinearCentroHorizontal(lblInfo, lblPedir);
            bool Cerrado = true;

            tbNumEmpleado.KeyPress += delegate(object sender, KeyPressEventArgs e)
            {
                if (e.KeyChar == 13 || e.KeyChar == Convert.ToChar(Keys.Escape))
                {
                    if (!Validacion.ValidarTextBox(tbNumEmpleado))
                    {
                        Close();
                        Cerrado = false;
                    }
                    if (e.KeyChar == Convert.ToChar(Keys.Escape))
                    {
                        Close();
                        Cerrado = true;
                    }
                }
                else
                {
                    if (!char.IsDigit(e.KeyChar) && e.KeyChar != '\b')
                    {
                        e.Handled = true;
                    }
                }
            };
            ShowDialog();
            Cancelado = Cerrado;
            RegistroMaterial [] temp = null;
            if (!Cerrado)
            {
                temp = Interface.BuscarUnMaterial(new RegistroMaterial(Convert.ToInt32(tbNumEmpleado.Text == "" ? "-2" : tbNumEmpleado.Text), "", -1, -1));
            }
            return(temp?[0] ?? null);
        }
 protected override void InitializeComponent3()
 {
     base.InitializeComponent3();
     Interface = new InterfaceUsuario(this);
     RegistroProducto[] Productos = Interface.ObtenerProductos();
     tbClave.Enabled = true;
     tbClave.Text    = Productos?.Length > 0 ? (Productos?[Productos.Length - 1]?.Clave + 1)?.ToString() : "0";
     RegistroMaterial[] Materiales = Interface.BuscarUnMaterial(new RegistroMaterial(-1, "", -1, -1));
     for (int i = 0; i < Materiales?.Length; i++)
     {
         if (Materiales[i].Activo == 1)
         {
             int j = dgvMateriales.RowCount;
             dgvMateriales.RowCount   += 1;
             dgvMateriales[0, j].Value = Materiales[i].Clave;
             dgvMateriales[2, j].Value = Materiales[i].Nombre;
             dgvMateriales[3, j].Value = Materiales[i].Precio;
         }
     }
 }
 private void btnActualizar_Click(object sender, EventArgs e)
 {
     if (!CamposFaltantes)
     {
         Interface = new InterfaceUsuario(this);
         RegistroMaterial Modificar = ObtenerRegistro;
         Modificar.Clave = Convert.ToInt32(tbClave.Text);
         if (Interface.ActualizarMaterial(Modificar))
         {
             RegistroMaterial[] temp = Interface.BuscarUnMaterial(new RegistroMaterial(-1, tbNombre.Text, -1, -1));
             bool Repetido           = false;
             for (int i = 0; i < temp.Length && !Repetido; i++)
             {
                 if (temp[i].Clave != Modificar.Clave && tbNombre.Text.ToUpper() == temp[i].Nombre.ToUpper())
                 {
                     Repetido = true;
                 }
             }
             if (!Repetido)
             {
                 string Mensaje = "";
                 if (!ActualizarProMat(out Mensaje))
                 {
                     MessageBox.Show("Material actualizado con éxito", "AVISO", MessageBoxButtons.OK, MessageBoxIcon.Information);
                 }
                 else
                 {
                     Validar.MensajeErrorBaseDeDatos();
                 }
                 LlamarEventoCerrar();
                 Close();
             }
             else
             {
                 Validar.MensajeErrorOK("El nombre de " + tbNombre.Text + " ya se encuentra registrado en la base de datos como otro material");
             }
         }
     }
 }