private void cmdGuardar_Click(object sender, EventArgs e)
        {
            try
            {
                if (!CheckData())
                {
                    MessageBox.Show("Complete los campos faltantes");
                    return;
                }
                PrepareLists();

                //c.Capacitaciones.ToList().ForEach(x => x.CandidatoCedula = c.Cedula);
                //c.ExperienciaLaborales.ToList().ForEach(x => x.CandidatoCedula = c.Cedula);


                if (Editing)
                {
                    var c = Context.Candidatos
                            .Include("PuestoAspira")
                            .FirstOrDefault(x => x.Cedula == Candidato.Cedula);

                    c.PuestoAspira.IsAvailable = true;
                    c.Nombre       = Candidato.Nombre;
                    c.PuestoId     = Candidato.PuestoId;
                    c.Departamento = Candidato.Departamento;

                    //c = Candidato.Adapt<Candidatos>();

                    var caps = Candidato.Capacitaciones.Where(x => x.Id != 0).Select(x => x.Id);
                    c.Capacitaciones = c.Capacitaciones.Where(x => caps.Contains(x.Id)).ToList();
                    c.Capacitaciones.ToList().ForEach(x => {
                        var data      = Candidato.Capacitaciones.First(cc => cc.Id == x.Id);
                        x.Institucion = data.Institucion;
                        x.Nivel       = data.Nivel;
                        x.FechaDesde  = data.FechaDesde;
                        x.FechaHasta  = data.FechaHasta;
                        x.Descripcion = data.Descripcion;
                    });
                    Candidato.Capacitaciones.Where(x => x.Id == 0).ToList()
                    .ForEach(x =>
                    {
                        c.Capacitaciones.Add(x.Adapt <Capacitaciones>());
                    });

                    var exps = Candidato.ExperienciaLaborales.Where(x => x.Id != 0).Select(x => x.Id);
                    c.ExperienciaLaborales = c.ExperienciaLaborales.Where(x => exps.Contains(x.Id)).ToList();
                    c.ExperienciaLaborales.ToList().ForEach(x => {
                        var data        = Candidato.ExperienciaLaborales.First(cc => cc.Id == x.Id);
                        x.Empresa       = data.Empresa;
                        x.FechaDesde    = data.FechaDesde;
                        x.FechaHasta    = data.FechaHasta;
                        x.PuestoOcupado = data.PuestoOcupado;
                        x.Salario       = data.Salario;
                    });

                    Candidato.ExperienciaLaborales.Where(x => x.Id == 0).ToList()
                    .ForEach(x =>
                    {
                        c.ExperienciaLaborales.Add(x.Adapt <ExperienciaLaboral>());
                    });
                    c.Idiomas = Candidato.Idiomas.Adapt <IList <Idiomas> >();
                }
                else
                {
                    var c = Candidato.Adapt <Candidatos>();
                    //c.RecomiendaId = MDIs.MDI_User.IdentificadorEmpleado;
                    Context.Candidatos.Add(c);
                }
                Context.SaveChanges();
                Context.Database.ExecuteSqlCommand($" update [RRHH_DATA].[dbo].[Puestos] set [IsAvailable] = 0 where [Id] = {Candidato.PuestoId} ");
                MessageBox.Show("Saved!!!!!!");
                this.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show($"Error al Guardar Candidato: {ex.Message}");
            }
        }