private void btnGuardar_Click(object sender, EventArgs e)
        {
            if (verificarCampos())
            {
                if (tabTipo.SelectedTab == tabApoderado)
                {
                    if (dgvBebes.RowCount == 0)
                    {
                        frmMensaje mensaje = new frmMensaje("Debe registrar un bebe para poder Registrar Apoderado", "", "Confirmar");   if (mensaje.ShowDialog() == DialogResult.OK)
                        {
                        }
                        ;
                        return;
                    }
                    apoderado.nombre   = txtNombreCliente.Text;
                    apoderado.dni      = txtDNI.Text;
                    apoderado.email    = txtCorreo.Text;
                    apoderado.telefono = txtTelef.Text;

                    apoderado.aseguradora = txtAseguradora.Text;
                    apoderado.numSeguro   = txtNumAseguradora.Text;

                    if (rbFemenino.Checked == true)
                    {
                        apoderado.sexo = 'F';
                    }
                    else
                    {
                        apoderado.sexo = 'M';
                    }
                    apoderado.contactos = contactos.ToArray();
                    apoderado.bebes     = bebes.ToArray();
                    if (estadoObjCliente == Estado.Nuevo)
                    {
                        if (!Program.dbController.verificarDNI(txtDNI.Text))
                        {
                            frmMensaje msj = new frmMensaje("El Dni ya existe en la base de datos", "Error de Dni", ""); if (msj.ShowDialog() == DialogResult.OK)
                            {
                            }
                            return;
                        }
                        string cod = Program.dbController.insertarApoderado(apoderado, ((Service.sede)cboSedes.SelectedItem).distrito);
                        Console.WriteLine(cod);
                        frmMensaje mensaje = new frmMensaje("Se ha registrado un nuevo Apoderado", "Mensaje de confirmación", "Confirmar"); if (mensaje.ShowDialog() == DialogResult.OK)
                        {
                        }
                        ;
                    }
                    else
                    {
                        Program.dbController.actualizarApoderado(apoderado);
                        frmMensaje mensaje = new frmMensaje("Se han actualizado los datos", "Mensaje de confirmación", "Confirmar"); if (mensaje.ShowDialog() == DialogResult.OK)
                        {
                        }
                        ;
                    }
                }
                else
                {
                    if (dgvGestaciones.RowCount == 0)
                    {
                        frmMensaje mensaje = new frmMensaje("Debe registrar una gestacion para poder Registrar Gestante", "", ""); if (mensaje.ShowDialog() == DialogResult.OK)
                        {
                        }
                        return;
                    }
                    if (udNumEmbarazos.Value < udNumPartos.Value)
                    {
                        frmMensaje mensaje = new frmMensaje("Numero de Partos no puede se mayor que el Numero de Embarazos", "", ""); if (mensaje.ShowDialog() == DialogResult.OK)
                        {
                        }
                        return;
                    }
                    gestante.nombre   = txtNombreCliente.Text;
                    gestante.dni      = txtDNI.Text;
                    gestante.email    = txtCorreo.Text;
                    gestante.telefono = txtTelef.Text;

                    gestante.aseguradora = txtAseguradora.Text;
                    gestante.numSeguro   = txtNumAseguradora.Text;

                    if (rbFemenino.Checked == true)
                    {
                        gestante.sexo = 'F';
                    }
                    else
                    {
                        gestante.sexo = 'M';
                    }
                    gestante.contactos          = contactos.ToArray();
                    gestante.numPartos          = (int)udNumPartos.Value;
                    gestante.cantEmbar          = (int)udNumEmbarazos.Value;
                    gestante.fechaNaci          = dtpFechaNacimiento.Value;
                    gestante.fechaNaciSpecified = true;

                    //condiciones
                    for (int i = 0; i < dgvCondiciones.Rows.Count; i++)
                    {
                        if (dgvCondiciones.Rows[i].Cells[1].Value == null)
                        {
                        }
                        else if ((bool)dgvCondiciones.Rows[i].Cells[1].Value == true)
                        {
                            Service.condicionMedica cond = new Service.condicionMedica();
                            cond = (Service.condicionMedica)dgvCondiciones.Rows[i].DataBoundItem;
                            condiciones.Add(cond);
                        }
                    }
                    gestante.condMedicas = condiciones.ToArray <Service.condicionMedica>();

                    //si hay pareja
                    if (!txtDNIPareja.Text.Equals(""))
                    {
                        Service.pareja pareja = new Service.pareja();
                        pareja.nombre = txtNombrePareja.Text;
                        pareja.dni    = txtDNIPareja.Text;
                        if (rbFemeninoPareja.Checked == true)
                        {
                            pareja.sexo = 'F';
                        }
                        else
                        {
                            pareja.sexo = 'M';
                        }
                        gestante.pareja = pareja;
                    }

                    gestante.gestaciones   = gestaciones.ToArray();
                    gestante.observMedicas = txtObservaciones.Text;

                    if (estadoObjCliente == Estado.Nuevo)
                    {
                        if (!Program.dbController.verificarDNI(txtDNI.Text) || !Program.dbController.verificarDNI(txtDNIPareja.Text))
                        {
                            frmMensaje msj = new frmMensaje("El Dni ya existe en la base de datos", "Error de Dni", ""); if (msj.ShowDialog() == DialogResult.OK)
                            {
                            }
                            return;
                        }
                        string     cod     = Program.dbController.insertarGestante(gestante, ((Service.sede)cboSedes.SelectedItem).distrito);
                        frmMensaje mensaje = new frmMensaje("Cliente apoderado registrado", "Mensaje de confirmación", ""); if (mensaje.ShowDialog() == DialogResult.OK)
                        {
                        }
                    }
                    else
                    {
                        Program.dbController.actualizarGestante(gestante);
                        frmMensaje mensaje = new frmMensaje("Cliente apoderado actualizado", "Mensaje de confirmación", ""); if (mensaje.ShowDialog() == DialogResult.OK)
                        {
                        }
                    }
                }
                estadoComponentes(Estado.Inicial);
                limpiarComponentes();
            }
        }
        private void btnBuscar_Click(object sender, EventArgs e)
        {
            frmBuscarCliente formCliente = new frmBuscarCliente(true);

            if (formCliente.ShowDialog() == DialogResult.OK)
            {
                cliente               = formCliente.ClienteSeleccionado;
                lblCodigo.Text        = cliente.codigo;
                txtNombreCliente.Text = cliente.nombre;
                txtDNI.Text           = cliente.dni;
                txtCorreo.Text        = cliente.email;
                txtTelef.Text         = cliente.telefono;
                if (cliente.sexo == 'F')
                {
                    rbFemenino.Checked = true;
                }
                else
                {
                    rbMasculino.Checked = true;
                }
                txtAseguradora.Text    = cliente.aseguradora;
                txtNumAseguradora.Text = cliente.numSeguro;
                dgvContactos.RowCount  = 0;
                //rprobando cambios a rama
                if (cliente.contactos != null)
                {
                    foreach (Service.contactoEmergencia contacto in cliente.contactos)
                    {
                        Object[] filaContacto = new Object[2];
                        filaContacto[0] = contacto.nombre;
                        filaContacto[1] = contacto.telefono;
                        dgvContactos.Rows.Add(filaContacto);
                    }
                }

                if (cliente is Service.apoderado)
                {
                    apoderado           = (Service.apoderado)cliente;
                    tabTipo.SelectedTab = tabApoderado;
                    dgvBebes.RowCount   = 0;
                    //bebes = new BindingList<Service.bebe>();
                    if (apoderado.bebes != null)
                    {
                        foreach (Service.bebe bebe in apoderado.bebes)
                        {
                            Object[] filaBebe = new Object[4];
                            filaBebe[0] = bebe.dni;
                            filaBebe[1] = bebe.nombre;
                            filaBebe[2] = bebe.relacion;
                            filaBebe[3] = bebe.fechaNaci.ToShortDateString();
                            dgvBebes.Rows.Add(filaBebe);
                        }
                    }
                }
                else
                {
                    tabTipo.SelectedTab                = tabGestante;
                    gestante                           = (Service.gestante)cliente;
                    udNumPartos.Value                  = gestante.numPartos;
                    udNumEmbarazos.Value               = gestante.cantEmbar;
                    dtpFechaNacimiento.Value           = gestante.fechaNaci;
                    dgvCondiciones.AutoGenerateColumns = false;
                    dgvCondiciones.DataSource          = gestante.condMedicas;
                    for (int i = 0; i < dgvCondiciones.RowCount; i++)
                    {
                        dgvCondiciones.Rows[i].Cells[1].Value = true;
                    }
                    txtObservaciones.Text = gestante.observMedicas;
                    if (gestante.pareja != null)
                    {
                        Service.pareja pareja = gestante.pareja;
                        txtDNIPareja.Text    = pareja.dni;
                        txtNombrePareja.Text = pareja.nombre;
                        if (pareja.sexo == 'F')
                        {
                            rbFemenino.Checked = true;
                        }
                        else
                        {
                            rbMasculino.Checked = true;
                        }
                    }

                    dgvGestaciones.AutoGenerateColumns = false;
                    gestaciones = new BindingList <Service.gestacion>();
                    if (gestante.gestaciones != null)
                    {
                        foreach (Service.gestacion gest in gestante.gestaciones)
                        {
                            Object[] filaGestacion = new Object[2];
                            filaGestacion[0] = gest.clinica;
                            filaGestacion[1] = gest.fecha_probable_parto;
                            gestaciones.Add(gest);
                            dgvGestaciones.Rows.Add(filaGestacion);
                        }
                    }
                }
                estadoComponentes(Estado.Buscar);
            }
        }