private void ObtenerTesistas() { using (HabProfDBContainer cxt = new Aplicativo.HabProfDBContainer()) { Estado_tesina et_vencida = cxt.Estados_tesinas.FirstOrDefault(eett => eett.estado_tesina_estado == "Vencida"); Estado_tesina et_lista = cxt.Estados_tesinas.FirstOrDefault(eett => eett.estado_tesina_estado == "Lista para presentar"); Estado_tesina et_aprobada = cxt.Estados_tesinas.FirstOrDefault(eett => eett.estado_tesina_estado == "Aprobada"); Estado_tesina et_desaprobada = cxt.Estados_tesinas.FirstOrDefault(eett => eett.estado_tesina_estado == "Desaprobada"); List <Tesina> tesinas = cxt.Tesinas.Where(tt => tt.estado_tesis_id != et_lista.estado_tesina_id && tt.estado_tesis_id != et_aprobada.estado_tesina_id && tt.estado_tesis_id != et_desaprobada.estado_tesina_id ).ToList(); var tesistas_con_tesinas_de_mas_de_dos_años_de_antiguedad = (from tesina in tesinas where tesina.Historial_estados.Min(he => he.historial_tesina_fecha) <= DateTime.Today.AddYears(-2) select tesina.Tesista).ToList(); var tesistas = ( from t in tesistas_con_tesinas_de_mas_de_dos_años_de_antiguedad where t.tesista_baja_definitiva == null select new { tesista_id = t.tesista_id, persona_nomyap = t.Persona.persona_nomyap, persona_dni = t.Persona.persona_dni, persona_email = t.Persona.persona_email, tesista_legajo = t.tesista_legajo, tesista_sede = t.tesista_sede, fecha_baja = t.tesista_fecha_baja }).ToList(); var tesistas_estado_activo_inactivo = (from t in tesistas select new { tesista_id = t.tesista_id, persona_nomyap = t.persona_nomyap, persona_dni = t.persona_dni, persona_email = t.persona_email, tesista_legajo = t.tesista_legajo, tesista_sede = t.tesista_sede }).OrderBy(t => t.persona_nomyap).ToList(); if (tesistas.Count() > 0) { gv_tesistas.DataSource = tesistas_estado_activo_inactivo; gv_tesistas.DataBind(); lbl_sin_tesistas.Visible = false; } else { lbl_sin_tesistas.Visible = true; gv_tesistas.DataSource = null; gv_tesistas.DataBind(); } } }
private void CargarTesinas() { using (HabProfDBContainer cxt = new HabProfDBContainer()) { List <string> id_tesinas = hidden_tesinas_seleccionadas.Value.Split(',').ToList(); List <int> items_seleccionados = new List <int>(); foreach (string id in id_tesinas) { int id_tesina; if (int.TryParse(id, out id_tesina)) { items_seleccionados.Add(id_tesina); } } Estado_tesina et = cxt.Estados_tesinas.FirstOrDefault(eett => eett.estado_tesina_estado == "Lista para presentar"); var tesinas = (from t in cxt.Tesinas where t.estado_tesis_id == et.estado_tesina_id && t.Tesista.tesista_baja_definitiva == null select t).ToList(); var tesinas_sin_baja = (from t in tesinas select new item_tesina { tesina_id = t.tesina_id, tesina_tema = t.tesina_tema, tesina_descripcion = t.tesina_descripcion, tesina_director = t.Director.Persona.persona_nomyap, tesina_tesista = t.Tesista.Persona.persona_nomyap, seleccionada = (items_seleccionados.IndexOf(t.tesina_id) > -1) }).ToList(); if (tesinas_sin_baja.Count() > 0) { gv_seleccionar_tesinas.DataSource = tesinas_sin_baja; gv_seleccionar_tesinas.DataBind(); } else { gv_seleccionar_tesinas.DataSource = null; gv_seleccionar_tesinas.DataBind(); } } }
public List <Tesina> Obtener_tesinas_por_notificar() { List <Tesina> ret = new List <Tesina>(); Verificar_y_marcar_tesinas_vencidas(); using (HabProfDBContainer cxt = new HabProfDBContainer()) { Estado_tesina et_vencida = cxt.Estados_tesinas.FirstOrDefault(eett => eett.estado_tesina_estado == "Vencida"); Estado_tesina et_lista = cxt.Estados_tesinas.FirstOrDefault(eett => eett.estado_tesina_estado == "Lista para presentar"); Estado_tesina et_aprobada = cxt.Estados_tesinas.FirstOrDefault(eett => eett.estado_tesina_estado == "Aprobada"); Estado_tesina et_desaprobada = cxt.Estados_tesinas.FirstOrDefault(eett => eett.estado_tesina_estado == "Desaprobada"); DateTime fecha_actual = DateTime.Today; List <Tesina> tesinas = cxt.Tesinas.Include("Estado").Include("Tesista").Include("Tesista.Persona").Where(tt => tt.estado_tesis_id != et_vencida.estado_tesina_id && tt.estado_tesis_id != et_lista.estado_tesina_id && tt.estado_tesis_id != et_aprobada.estado_tesina_id && tt.estado_tesis_id != et_desaprobada.estado_tesina_id ).ToList(); foreach (Tesina tesina in tesinas) { //multiplo de avisos automáticos int multiplo = 0; //al salir de aca el multiplo es uno mas que el necesario es decir, el multiplo por el periodo entre avisos nos da la fecha del proximo envio while (tesina.tesina_plan_fch_presentacion.AddMonths(tesina.tesina_plan_aviso_meses * multiplo) <= fecha_actual) { multiplo++; } //descuento uno para obtener la fecha en la que se tuvo que haber enviado la ultima vez multiplo--; //si multiplo es mayor que cero quiere decir que deberia de enviar el aviso, si es que no se envió todavia if (multiplo > 0) { //busco en el periodo (fecha_presentacion + (multiplo * periodo_aviso)) y fecha_actual si se realizaron envios, de no ser asi tengo que realizar el envio DateTime desde = tesina.tesina_plan_fch_presentacion.AddMonths(multiplo * tesina.tesina_plan_aviso_meses); DateTime hasta = fecha_actual; List <Envio_mail> envios_automaticos = cxt.Envio_mails.Where(eemm => eemm.persona_id == tesina.Tesista.Persona.persona_id && eemm.envio_tipo == "notificacion_recordatorio_automatico").ToList(); bool enviar = (from ea in envios_automaticos where ea.envio_fecha_hora.Date >= desde && ea.envio_fecha_hora.Date <= hasta select ea).Count() == 0; if (enviar) { ret.Add(tesina); } } } } return(ret); }
/// <summary> /// Verifico y marco como vencidas las tesinas que no esten en estado vencida, lista para presentar, aprobadas o desaprobadas. /// Ver el tema de si vencer o no las que se presentaron para corregir y estan en poder del director o administrador /// </summary> public void Verificar_y_marcar_tesinas_vencidas() { using (HabProfDBContainer cxt = new Aplicativo.HabProfDBContainer()) { Estado_tesina et_vencida = cxt.Estados_tesinas.FirstOrDefault(eett => eett.estado_tesina_estado == "Vencida"); Estado_tesina et_lista = cxt.Estados_tesinas.FirstOrDefault(eett => eett.estado_tesina_estado == "Lista para presentar"); Estado_tesina et_aprobada = cxt.Estados_tesinas.FirstOrDefault(eett => eett.estado_tesina_estado == "Aprobada"); Estado_tesina et_desaprobada = cxt.Estados_tesinas.FirstOrDefault(eett => eett.estado_tesina_estado == "Desaprobada"); List <Tesina> tesinas = cxt.Tesinas.Where(tt => tt.estado_tesis_id != et_vencida.estado_tesina_id && tt.estado_tesis_id != et_lista.estado_tesina_id && tt.estado_tesis_id != et_aprobada.estado_tesina_id && tt.estado_tesis_id != et_desaprobada.estado_tesina_id ).ToList(); foreach (Tesina tesina in tesinas) { DateTime fecha_vencimiento = tesina.tesina_plan_fch_presentacion.AddMonths(tesina.tesina_plan_duracion_meses); if (fecha_vencimiento < DateTime.Today) { tesina.Historial_estados.Add(new Historial_estado() { estado_tesina_id = et_vencida.estado_tesina_id, historial_tesina_fecha = fecha_vencimiento, historial_tesina_descripcion = "Se venció el plazo para presentar una tesina lista para evaluar" }); tesina.estado_tesis_id = et_vencida.estado_tesina_id; Envio_mail em_director = new Envio_mail() { persona_id = tesina.Director.Persona.persona_id, envio_email_destino = tesina.Director.Persona.persona_email, envio_fecha_hora = DateTime.Now, envio_respuesta_clave = "no se usa", envio_tipo = MiEmail.tipo_mail.notificacion_tesina_vencida.ToString() }; cxt.Envio_mails.Add(em_director); Envio_mail em_tesista = new Envio_mail() { persona_id = tesina.Tesista.Persona.persona_id, envio_email_destino = tesina.Tesista.Persona.persona_email, envio_fecha_hora = DateTime.Now, envio_respuesta_clave = "no se usa", envio_tipo = MiEmail.tipo_mail.notificacion_tesina_vencida.ToString() }; cxt.Envio_mails.Add(em_tesista); MiEmail me_director = new MiEmail(em_director, tesina); MiEmail me_tesista = new MiEmail(em_tesista, tesina); me_director.Enviar_mail(); me_tesista.Enviar_mail(); if (tesina.Codirector != null) { Envio_mail em_codirector = new Envio_mail() { persona_id = tesina.Codirector.Persona.persona_id, envio_email_destino = tesina.Codirector.Persona.persona_email, envio_fecha_hora = DateTime.Now, envio_respuesta_clave = "no se usa", envio_tipo = MiEmail.tipo_mail.notificacion_tesina_vencida.ToString() }; cxt.Envio_mails.Add(em_codirector); MiEmail me_codirector = new MiEmail(em_codirector, tesina); me_codirector.Enviar_mail(); } cxt.SaveChanges(); } } } }
protected void btn_prorrogar_Click(object sender, EventArgs e) { int tesina_id = Convert.ToInt32(hidden_tesina_id.Value); using (HabProfDBContainer cxt = new HabProfDBContainer()) { Tesina t = cxt.Tesinas.FirstOrDefault(tt => tt.tesina_id == tesina_id); Estado_tesina et = cxt.Estados_tesinas.FirstOrDefault(ee => ee.estado_tesina_estado == "Prorrogar"); Historial_estado he = new Historial_estado() { estado_tesina_id = et.estado_tesina_id, tesina_id = tesina_id, historial_tesina_fecha = DateTime.Now, historial_tesina_descripcion = "Se otorgo la prorroga solicitada" }; t.estado_tesis_id = et.estado_tesina_id; t.tesina_plan_fch_presentacion = Convert.ToDateTime(tb_fecha_inicio.Value); t.tesina_plan_duracion_meses = Convert.ToInt16(tb_duracion.Value); t.tesina_plan_aviso_meses = Convert.ToInt16(tb_notificacion.Value); cxt.Historial_estados.Add(he); Envio_mail em_director = new Envio_mail() { persona_id = t.Director.Persona.persona_id, envio_email_destino = t.Director.Persona.persona_email, envio_fecha_hora = DateTime.Now, envio_respuesta_clave = "no se usa", envio_tipo = MiEmail.tipo_mail.notificacion_tesina_prorrogada.ToString() }; cxt.Envio_mails.Add(em_director); Envio_mail em_tesista = new Envio_mail() { persona_id = t.Tesista.Persona.persona_id, envio_email_destino = t.Tesista.Persona.persona_email, envio_fecha_hora = DateTime.Now, envio_respuesta_clave = "no se usa", envio_tipo = MiEmail.tipo_mail.notificacion_tesina_prorrogada.ToString() }; cxt.Envio_mails.Add(em_tesista); MiEmail me_director = new MiEmail(em_director, t); MiEmail me_tesista = new MiEmail(em_tesista, t); me_director.Enviar_mail(); me_tesista.Enviar_mail(); if (t.Codirector != null) { Envio_mail em_codirector = new Envio_mail() { persona_id = t.Codirector.Persona.persona_id, envio_email_destino = t.Codirector.Persona.persona_email, envio_fecha_hora = DateTime.Now, envio_respuesta_clave = "no se usa", envio_tipo = MiEmail.tipo_mail.notificacion_tesina_prorrogada.ToString() }; cxt.Envio_mails.Add(em_codirector); MiEmail me_codirector = new MiEmail(em_codirector, t); me_codirector.Enviar_mail(); } cxt.SaveChanges(); tb_fecha_inicio.Value = ""; tb_duracion.Value = ""; tb_notificacion.Value = ""; ObtenerTesinas(); } }
protected void btn_pasar_a_lista_para_presentar_Click(object sender, EventArgs e) { int tesina_id = Convert.ToInt32(hidden_tesina_id.Value); using (HabProfDBContainer cxt = new HabProfDBContainer()) { Tesina t = cxt.Tesinas.FirstOrDefault(tt => tt.tesina_id == tesina_id); Estado_tesina et = cxt.Estados_tesinas.FirstOrDefault(ee => ee.estado_tesina_estado == "Lista para presentar"); string descripcion = "Esta lista para presentar"; Historial_estado he = new Historial_estado() { estado_tesina_id = et.estado_tesina_id, tesina_id = tesina_id, historial_tesina_fecha = DateTime.Now, historial_tesina_descripcion = descripcion }; t.estado_tesis_id = et.estado_tesina_id; cxt.Historial_estados.Add(he); #region envio de mails Envio_mail em_director = new Envio_mail() { persona_id = t.Director.Persona.persona_id, envio_email_destino = t.Director.Persona.persona_email, envio_fecha_hora = DateTime.Now, envio_respuesta_clave = "no se usa", envio_tipo = MiEmail.tipo_mail.notificacion_tesina_lista_para_presentar.ToString() }; cxt.Envio_mails.Add(em_director); MiEmail me_director = new MiEmail(em_director, t); me_director.Enviar_mail(); if (t.Codirector != null) { Envio_mail em_codirector = new Envio_mail() { persona_id = t.Codirector.Persona.persona_id, envio_email_destino = t.Codirector.Persona.persona_email, envio_fecha_hora = DateTime.Now, envio_respuesta_clave = "no se usa", envio_tipo = MiEmail.tipo_mail.notificacion_tesina_lista_para_presentar.ToString() }; cxt.Envio_mails.Add(em_codirector); MiEmail me_codirector = new MiEmail(em_codirector, t); me_codirector.Enviar_mail(); } Envio_mail em_tesista = new Envio_mail() { persona_id = t.Tesista.Persona.persona_id, envio_email_destino = t.Tesista.Persona.persona_email, envio_fecha_hora = DateTime.Now, envio_respuesta_clave = "no se usa", envio_tipo = MiEmail.tipo_mail.notificacion_tesina_lista_para_presentar_tesista.ToString() }; cxt.Envio_mails.Add(em_tesista); MiEmail me_tesista = new MiEmail(em_tesista, t); me_tesista.Enviar_mail(); List <Persona> administradores = t.Tesista.Persona.Licenciatura.Personas.Where(pp => pp.Administrador != null).ToList(); //tomo el primer administrador para asociar el envio de correo pero el mail al cual mando es el mail asociado a la licenciatura Envio_mail em_admin = new Envio_mail() { persona_id = administradores[0].persona_id, envio_email_destino = t.Tesista.Persona.Licenciatura.licenciatura_email, envio_fecha_hora = DateTime.Now, envio_respuesta_clave = "no se usa", envio_tipo = MiEmail.tipo_mail.notificacion_tesina_lista_para_presentar.ToString() }; cxt.Envio_mails.Add(em_admin); MiEmail me_admin = new MiEmail(em_admin, t); me_admin.Enviar_mail(); #endregion cxt.SaveChanges(); ObtenerTesinas(); } }
protected void btn_enviar_a_corregir_Click(object sender, EventArgs e) { int tesina_id = Convert.ToInt32(hidden_tesina_id.Value); using (HabProfDBContainer cxt = new HabProfDBContainer()) { Tesina t = cxt.Tesinas.FirstOrDefault(tt => tt.tesina_id == tesina_id); Estado_tesina et = cxt.Estados_tesinas.FirstOrDefault(ee => ee.estado_tesina_estado == "Observada"); string descripcion = string.Empty; descripcion = descripcion + (opcion_1.Checked ? opcion_1.Text : ""); descripcion = descripcion + (opcion_2.Checked ? opcion_2.Text : ""); descripcion = descripcion + (opcion_3.Checked ? opcion_3.Text : ""); Historial_estado he = new Historial_estado() { estado_tesina_id = et.estado_tesina_id, tesina_id = tesina_id, historial_tesina_fecha = DateTime.Now, historial_tesina_descripcion = descripcion//tb_descripcion_rechazo.Value }; t.estado_tesis_id = et.estado_tesina_id; cxt.Historial_estados.Add(he); Envio_mail em_director = new Envio_mail() { persona_id = t.Director.Persona.persona_id, envio_email_destino = t.Director.Persona.persona_email, envio_fecha_hora = DateTime.Now, envio_respuesta_clave = "no se usa", envio_tipo = MiEmail.tipo_mail.notificacion_correcciones_tesina.ToString() }; cxt.Envio_mails.Add(em_director); Envio_mail em_tesista = new Envio_mail() { persona_id = t.Tesista.Persona.persona_id, envio_email_destino = t.Tesista.Persona.persona_email, envio_fecha_hora = DateTime.Now, envio_respuesta_clave = "no se usa", envio_tipo = MiEmail.tipo_mail.notificacion_correcciones_tesina.ToString() }; cxt.Envio_mails.Add(em_tesista); MiEmail me_director = new MiEmail(em_director, t); MiEmail me_tesista = new MiEmail(em_tesista, t); me_director.Enviar_mail(); me_tesista.Enviar_mail(); if (t.Codirector != null) { Envio_mail em_codirector = new Envio_mail() { persona_id = t.Codirector.Persona.persona_id, envio_email_destino = t.Codirector.Persona.persona_email, envio_fecha_hora = DateTime.Now, envio_respuesta_clave = "no se usa", envio_tipo = MiEmail.tipo_mail.notificacion_correcciones_tesina.ToString() }; cxt.Envio_mails.Add(em_codirector); MiEmail me_codirector = new MiEmail(em_codirector, t); me_codirector.Enviar_mail(); } cxt.SaveChanges(); //tb_descripcion_rechazo.Value = ""; ObtenerTesinas(); } }
protected void btn_subir_archivo_Click(object sender, EventArgs e) { if (file_tesis.HasFile) { try { string directorio = Server.MapPath("~/Archivos/Tesinas/" + hidden_tesina_id.Value + "/"); if (!Directory.Exists(directorio)) { Directory.CreateDirectory(directorio); } string extencion_origen = Path.GetExtension(file_tesis.FileName); string path_save_file = directorio + "presentado" + extencion_origen; file_tesis.SaveAs(path_save_file); using (HabProfDBContainer cxt = new HabProfDBContainer()) { int tesina_id = Convert.ToInt32(hidden_tesina_id.Value); Tesina t = cxt.Tesinas.FirstOrDefault(tt => tt.tesina_id == tesina_id); Estado_tesina et = cxt.Estados_tesinas.FirstOrDefault(ee => ee.estado_tesina_estado == "Entregada"); Historial_estado he = new Historial_estado() { estado_tesina_id = et.estado_tesina_id, tesina_id = tesina_id, historial_tesina_fecha = DateTime.Now, historial_tesina_descripcion = "Se entregó satisfactoriamente la tesina para ser evaluada por el director." }; t.estado_tesis_id = et.estado_tesina_id; cxt.Historial_estados.Add(he); Envio_mail em_director = new Envio_mail() { persona_id = t.Director.Persona.persona_id, envio_email_destino = t.Director.Persona.persona_email, envio_fecha_hora = DateTime.Now, envio_respuesta_clave = "Archivos/Tesinas/" + hidden_tesina_id.Value + "/presentado" + extencion_origen, envio_tipo = MiEmail.tipo_mail.notificacion_entrega_archivo_tesina.ToString() }; cxt.Envio_mails.Add(em_director); Envio_mail em_tesista = new Envio_mail() { persona_id = t.Tesista.Persona.persona_id, envio_email_destino = t.Tesista.Persona.persona_email, envio_fecha_hora = DateTime.Now, envio_respuesta_clave = "Archivos/Tesinas/" + hidden_tesina_id.Value + "/presentado" + extencion_origen, envio_tipo = MiEmail.tipo_mail.notificacion_entrega_archivo_tesina.ToString() }; cxt.Envio_mails.Add(em_tesista); MiEmail me_director = new MiEmail(em_director, t); MiEmail me_tesista = new MiEmail(em_tesista, t); me_director.Enviar_mail(); me_tesista.Enviar_mail(); if (t.Codirector != null) { Envio_mail em_codirector = new Envio_mail() { persona_id = t.Codirector.Persona.persona_id, envio_email_destino = t.Codirector.Persona.persona_email, envio_fecha_hora = DateTime.Now, envio_respuesta_clave = "Archivos/Tesinas/" + hidden_tesina_id.Value + "/presentado" + extencion_origen, envio_tipo = MiEmail.tipo_mail.notificacion_entrega_archivo_tesina.ToString() }; cxt.Envio_mails.Add(em_codirector); MiEmail me_codirector = new MiEmail(em_codirector, t); me_codirector.Enviar_mail(); } cxt.SaveChanges(); ObtenerTesinas(); } } catch (Exception ex) { // status_label.Text = "Ocurrio un error y no se pudo subir el archivo. Error: " + ex.Message; // div_status_file.Attributes.Add("class", "alert alert-danger"); } } else { //status_label.Text = "Debe seleccionar un archivo!"; //div_status_file.Attributes.Add("class", "alert alert-danger"); } }
protected void btn_imprimir_directores_Click(object sender, EventArgs e) { int id_mesa = Convert.ToInt32(((Button)sender).CommandArgument); bool mesa_cerrada = false; using (HabProfDBContainer cxt = new HabProfDBContainer()) { Mesa mesa = cxt.Mesas.FirstOrDefault(pp => pp.mesa_id == id_mesa); if (mesa.mesa_estado == "Cerrada") { Estado_tesina aprobada = cxt.Estados_tesinas.FirstOrDefault(eett => eett.estado_tesina_estado == "Aprobada"); Reportes.reporte_director ds = new Reportes.reporte_director(); foreach (Tesina tesina in mesa.Tesinas) { if (tesina.estado_tesis_id == aprobada.estado_tesina_id) { Reportes.reporte_director.DetalleRow md = ds.Detalle.NewDetalleRow(); md.director_nombre = tesina.Director.Persona.persona_nomyap; md.director_dni = tesina.Director.Persona.persona_dni.ToString(); md.tema_tesina = tesina.tesina_tema; md.tesina_calificacion = tesina.tesina_calificacion_director.ToString(); md.tesina_calificacion_letra = Calificacion_a_texto(tesina.tesina_calificacion ?? 0); md.tesista_nombre = tesina.Tesista.Persona.persona_nomyap; md.tesina_fecha_evaluacion = mesa.mesa_fecha.ToShortDateString(); md.licenciatura_nombre = tesina.Tesista.Persona.Licenciatura.licenciatura_nombre; md.anteco = ""; ds.Detalle.Rows.Add(md); if (tesina.Codirector != null) { Reportes.reporte_director.DetalleRow md_co = ds.Detalle.NewDetalleRow(); md_co.director_nombre = tesina.Codirector.Persona.persona_nomyap; md_co.director_dni = tesina.Codirector.Persona.persona_dni.ToString(); md_co.tema_tesina = tesina.tesina_tema; md_co.tesina_calificacion = tesina.tesina_calificacion_codirector.ToString(); md_co.tesina_calificacion_letra = Calificacion_a_texto(tesina.tesina_calificacion_codirector ?? 0); md_co.tesista_nombre = tesina.Tesista.Persona.persona_nomyap; md_co.tesina_fecha_evaluacion = mesa.mesa_fecha.ToShortDateString(); md_co.licenciatura_nombre = tesina.Tesista.Persona.Licenciatura.licenciatura_nombre; md_co.anteco = "co-"; ds.Detalle.Rows.Add(md_co); } } } mesa_cerrada = true; Session["ds_directores"] = ds; } } if (mesa_cerrada) { RenderReport_directores(); } else { MessageBox.Show(this, "No se pueden imprimir los certificados mientras la mesa no este cerrada.", MessageBox.Tipo_MessageBox.Warning); } }
protected void btn_guardar_cerrar_mesa_Click(object sender, EventArgs e) { Validate("cerrar"); if (IsValid) { using (HabProfDBContainer cxt = new HabProfDBContainer()) { int mesa_id = Convert.ToInt32(hidden_cerrar_mesa_id.Value); Mesa mesa = cxt.Mesas.FirstOrDefault(mm => mm.mesa_id == mesa_id); mesa.mesa_estado = "Cerrada"; foreach (GridViewRow fila in gv_cerrar_mesa_tesinas.Rows) { TextBox calificacion_tesina = ((TextBox)fila.Cells[3].Controls[1]); TextBox calificacion_director_tesina = ((TextBox)fila.Cells[4].Controls[1]); TextBox calificacion_codirector_tesina = ((TextBox)fila.Cells[5].Controls[1]); //DropDownList estado_final_tesina = ((DropDownList)fila.Cells[5].Controls[1]); int tesina_id = Convert.ToInt32(calificacion_tesina.AccessKey); Tesina t = cxt.Tesinas.FirstOrDefault(tt => tt.tesina_id == tesina_id); t.tesina_calificacion = Convert.ToInt16(calificacion_tesina.Text); t.tesina_calificacion_director = Convert.ToInt16(calificacion_director_tesina.Text); if (t.Codirector != null) { t.tesina_calificacion_codirector = Convert.ToInt16(calificacion_codirector_tesina.Text); } string estado_final = t.tesina_calificacion >= 6 ? "Aprobada" : "Desaprobada"; Estado_tesina et = cxt.Estados_tesinas.FirstOrDefault(eett => eett.estado_tesina_estado == estado_final); t.estado_tesis_id = et.estado_tesina_id; foreach (Jurado jurado in mesa.Jueces) { t.Jueces.Add(jurado); } Historial_estado he = new Historial_estado() { estado_tesina_id = et.estado_tesina_id, historial_tesina_descripcion = "Estado final de la evaluación", historial_tesina_fecha = DateTime.Now, tesina_id = t.tesina_id }; cxt.Historial_estados.Add(he); } cxt.SaveChanges(); ObtenerMesas(); MessageBox.Show(this, "Se cerró correctamente la mesa.", MessageBox.Tipo_MessageBox.Success); } } else { string script = "<script language=\"javascript\" type=\"text/javascript\">$(document).ready(function() { $('#panel_cerrar_mesa').modal('show')});</script>"; ScriptManager.RegisterStartupScript(Page, this.GetType(), "ShowPopUp", script, false); } }