public static List <HistorialCalificacionSemestral> seleccionarHistorial(calificaciones_semestrales calificacion_semestral) { // Código necesario para los métodos que // utilicen la base de datos CBTis123_Entities dbContext = Vinculo_DB.generarContexto(); List <HistorialCalificacionSemestral> listaHistorial = new List <HistorialCalificacionSemestral>(); try { historial_calificaciones_semestrales historialBruto = dbContext. historial_calificaciones_semestrales. SingleOrDefault( h => h.idCalificacion_Semestral == calificacion_semestral.idCalificacion_Semestral ); if (historialBruto != null) { string s1 = historialBruto.cambios; string[] s2 = s1.Split(new string[] { separadorRegistro }, StringSplitOptions.RemoveEmptyEntries); string[][] valoresFinales = new string[s2.Length][]; for (int i = 0; i < s2.Length; i++) { string s = s2[i]; valoresFinales[i] = s.Split(new string[] { separadorCampo }, StringSplitOptions.None); } foreach (string[] sArr in valoresFinales) { HistorialCalificacionSemestral h = new HistorialCalificacionSemestral(); int posicion = 0; h.nombreDeCampo = sArr[posicion++]; h.valorAnterior = sArr[posicion++]; h.valorNuevo = sArr[posicion++]; h.fuenteDeCambio = sArr[posicion++]; h.fecha = sArr[posicion++]; int idUsuario = Convert.ToInt32(sArr[posicion++]); usuarios u = dbContext.usuarios.SingleOrDefault(u1 => u1.idUsuario == idUsuario); h.usuarioAutor = u; listaHistorial.Add(h); } } } catch (Exception e) { ControladorVisual.mostrarMensaje(ControladorExcepciones.crearResultadoOperacionException(e)); } return(listaHistorial); }
public static IList <estudiantes> seleccionarEstudiantesRecursamiento(IList <calificaciones_semestrales>[] arrListasCalificaciones) { // Creamos la lista que contendrá los estudiantes que existen en todas las listas... IList <estudiantes> listaEstudiantes = new List <estudiantes>(); IList <calificaciones_semestrales> listaBase = arrListasCalificaciones[0]; foreach (calificaciones_semestrales cs in listaBase) { bool flag = true; foreach (IList <calificaciones_semestrales> lista in arrListasCalificaciones) { calificaciones_semestrales csI = lista.FirstOrDefault(cs1 => cs1.nControl == cs.nControl); flag = csI != null; if (!flag) { break; } } if (flag) { listaEstudiantes.Add(cs.estudiantes); } } return(listaEstudiantes); }
public static List <calificaciones_semestrales> crearListaCalificaciones(string[][] tabla, int idCatedra = -1, catedras catedra = null) { // Código necesario para los métodos que // utilicen la base de datos CBTis123_Entities dbContext = Vinculo_DB.generarContexto(); List <calificaciones_semestrales> listaCalificaciones = new List <calificaciones_semestrales>(); foreach (string[] row in tabla) { if (row.Length < 13) { continue; } calificaciones_semestrales c = new calificaciones_semestrales(); string ncontrol = row[1]; string nombres = row[2]; // ASISTENCIAS if (row[6] != null && row[6] != "") { c.asistenciasParcial1 = Convert.ToInt32(row[6]); } else { c.asistenciasParcial1 = null; } if (row[7] != null && row[7] != "") { c.asistenciasParcial2 = Convert.ToInt32(row[7]); } else { c.asistenciasParcial2 = null; } if (row[8] != null && row[8] != "") { c.asistenciasParcial3 = Convert.ToInt32(row[8]); } else { c.asistenciasParcial3 = null; } // CALIFICACIONES PARCIALES if (row[3] != null && row[3] != "") { c.calificacionParcial1 = Convert.ToDouble(row[3]); } else { c.calificacionParcial1 = null; } if (row[4] != null && row[4] != "") { c.calificacionParcial2 = Convert.ToDouble(row[4]); } else { c.calificacionParcial2 = null; } if (row[5] != null && row[5] != "") { c.calificacionParcial3 = Convert.ToDouble(row[5]); } else { c.calificacionParcial3 = null; } estudiantes estudianteDeCalificacion = dbContext.estudiantes.SingleOrDefault(e => e.ncontrol == ncontrol); if (estudianteDeCalificacion == null) { estudianteDeCalificacion = new estudiantes() { idEstudiante = -1, nombrecompleto = nombres, nombres = nombres, ncontrol = ncontrol }; } c.estudiantes = estudianteDeCalificacion; c.idEstudiante = c.estudiantes.idEstudiante; c.firmado = Convert.ToBoolean(row[12]); c.idCalificacion_Semestral = -1; c.recursamiento = false; c.tipoDeAcreditacion = row[11]; c.catedras = catedra; c.idCatedra = idCatedra; listaCalificaciones.Add(c); } return(listaCalificaciones); }
public static void inicializarCalificaciones(catedras catedra) { // Código necesario para los métodos que // utilicen la base de datos CBTis123_Entities dbContext = Vinculo_DB.generarContexto(); try { // Primero, obtenemos todos los estudiantes // que pertenecen al grupo de la cátedra List <grupos_estudiantes> listaEstudiantesFK = dbContext. grupos_estudiantes. Where( ge => ge.idGrupo == catedra.idGrupo ).ToList(); List <estudiantes> listaEstudiantes = new List <estudiantes>(); foreach (grupos_estudiantes ge in listaEstudiantesFK) { listaEstudiantes.Add(ge.estudiantes); } // Ahora, obtendremos todas las calificaciones // que ya existen en la base de datos. List <calificaciones_semestrales> listaCalificaciones = new List <calificaciones_semestrales>(); listaCalificaciones = dbContext.calificaciones_semestrales.Where(c => c.idCatedra == catedra.idCatedra).ToList(); // Ya que tenemos las calificaciones, iteramos // sobre la lista para saber qué alumnos tienen // ya un registro. Si no tienen registro, lo agregamos // Eliminación de los alumnos que ya tienen calificación foreach (calificaciones_semestrales c in listaCalificaciones) { listaEstudiantes.RemoveAll(e => e.idEstudiante == c.idEstudiante); } // De los estudiantes que restan, agregamos una calificación por default foreach (estudiantes e in listaEstudiantes) { calificaciones_semestrales c = new calificaciones_semestrales { firmado = false, idCatedra = catedra.idCatedra, idEstudiante = e.idEstudiante, recursamiento = false, verificado = true }; dbContext.calificaciones_semestrales.Add(c); } // Si hubo estudiantes sin calificación, guardamos los cambios if (listaEstudiantes.Count > 0) { dbContext.SaveChanges(); } } catch (Exception e) { ControladorVisual.mostrarMensaje(ControladorExcepciones.crearResultadoOperacionException(e)); } }
public static ResultadoOperacion actualizarCalificacionesDesdeSiseems(IList <calificaciones_semestrales> listaCalificaciones, string clase = "Desconocida") { // Código necesario para los métodos que // utilicen la base de datos CBTis123_Entities dbContext = Vinculo_DB.generarContexto(); bool cambios = false; try { // Iteramos sobre las calificaciones que nos pasaron para registrar a los estudiantes foreach (calificaciones_semestrales c in listaCalificaciones) { // Si su estudiante no existe, lo agregamos a la base de datos if (c.idEstudiante == -1) { estudiantes estudianteC = c.estudiantes; estudianteC.idEstudiante = 0; //estudianteC.ncontrol = estudianteC.ncontrol.Substring(0, 18); //estudianteC.nombrecompleto = estudianteC.nombrecompleto.Substring(0, 60); //estudianteC.nombres = estudianteC.nombres.Substring(0, 30); estudianteC.curp = ""; estudianteC.apellido1 = ""; estudianteC.apellido2 = ""; estudianteC.nss = ""; estudianteC.verificado = false; c.estudiantes = dbContext.estudiantes.Add(estudianteC); cambios = true; } } // Si hubo cambios en la base de datos los guardamos if (cambios) { dbContext.SaveChanges(); } cambios = false; // Iteramos sobre las calificaciones que nos pasaron // y si no existe alguna, creamos una temporal antes de // que registremos los verdaderos valores foreach (calificaciones_semestrales c in listaCalificaciones) { calificaciones_semestrales cUpdated = dbContext.calificaciones_semestrales.SingleOrDefault( c1 => c1.idCatedra == c.idCatedra && c1.idEstudiante == c.idEstudiante ); if (cUpdated == null) { cUpdated = new calificaciones_semestrales() { firmado = false, idCatedra = c.idCatedra, idEstudiante = c.idEstudiante, recursamiento = true }; dbContext.calificaciones_semestrales.Add(cUpdated); cambios = true; } } if (cambios) { dbContext.SaveChanges(); } // Finalmente registramos el bonche de calificaciones return(actualizarCalificaciones(listaCalificaciones, "Importación de SISEEMS")); } catch (Exception e) { return(ControladorExcepciones.crearResultadoOperacionException(e)); } }
// UPDATES public static ResultadoOperacion actualizarCalificaciones(IList <calificaciones_semestrales> listaCalificaciones, string razon) { // Código necesario para los métodos que // utilicen la base de datos CBTis123_Entities dbContext = Vinculo_DB.generarContexto(); // Setteamos variables necesarias para el método int calificacionesModificadas = 0; ResultadoOperacion innerRO = null; bool cambios = false; try { // Iteramos sobre la lista que nos pasaron foreach (calificaciones_semestrales c in listaCalificaciones) { // Creamos un StringBuilder para guardar cualquier cambio StringBuilder logCambios = new StringBuilder(); // Obtenemos las calificaciones que hay en la DB calificaciones_semestrales cUpdated = dbContext.calificaciones_semestrales.SingleOrDefault( c1 => c1.idCatedra == c.idCatedra && c1.idEstudiante == c.idEstudiante ); // Si hay algún cambio en cualquiera de los campos, // se agregará el registro al StringBuilder, y se // encenderá la bandera de que hubo cambio // PRIMERO, las asistencias if (ControladorMiscelaneo.compararNullableDouble(cUpdated.asistenciasParcial1, c.asistenciasParcial1) != 0) { logCambios.Append( crearLogCambios( "Asistencias parcial 1", cUpdated.asistenciasParcial1.ToString(), c.asistenciasParcial1.ToString(), razon, ControladorSesion.usuarioActivo.idUsuario ) ); cUpdated.asistenciasParcial1 = c.asistenciasParcial1; cambios = true; } if (ControladorMiscelaneo.compararNullableDouble(cUpdated.asistenciasParcial2, c.asistenciasParcial2) != 0) { logCambios.Append( crearLogCambios( "Asistencias parcial 2", cUpdated.asistenciasParcial2.ToString(), c.asistenciasParcial2.ToString(), razon, ControladorSesion.usuarioActivo.idUsuario ) ); cUpdated.asistenciasParcial2 = c.asistenciasParcial2; cambios = true; } if (ControladorMiscelaneo.compararNullableDouble(cUpdated.asistenciasParcial3, c.asistenciasParcial3) != 0) { logCambios.Append( crearLogCambios( "Asistencias parcial 3", cUpdated.asistenciasParcial3.ToString(), c.asistenciasParcial3.ToString(), razon, ControladorSesion.usuarioActivo.idUsuario ) ); cUpdated.asistenciasParcial3 = c.asistenciasParcial3; cambios = true; } // SEGUNDO, las calificaciones if (ControladorMiscelaneo.compararNullableDouble(cUpdated.calificacionParcial1, c.calificacionParcial1) != 0) { logCambios.Append( crearLogCambios( "Calificación parcial 1", cUpdated.calificacionParcial1.ToString(), c.calificacionParcial1.ToString(), razon, ControladorSesion.usuarioActivo.idUsuario ) ); cUpdated.calificacionParcial1 = c.calificacionParcial1; cambios = true; } if (ControladorMiscelaneo.compararNullableDouble(cUpdated.calificacionParcial2, c.calificacionParcial2) != 0) { logCambios.Append( crearLogCambios( "Calificación parcial 2", cUpdated.calificacionParcial2.ToString(), c.calificacionParcial2.ToString(), razon, ControladorSesion.usuarioActivo.idUsuario ) ); cUpdated.calificacionParcial2 = c.calificacionParcial2; cambios = true; } if (ControladorMiscelaneo.compararNullableDouble(cUpdated.calificacionParcial3, c.calificacionParcial3) != 0) { logCambios.Append( crearLogCambios( "Calificación parcial 3", cUpdated.calificacionParcial3.ToString(), c.calificacionParcial3.ToString(), razon, ControladorSesion.usuarioActivo.idUsuario ) ); cUpdated.calificacionParcial3 = c.calificacionParcial3; cambios = true; } //TERCERO, otros datos que se pueden modificar en el DGV if (cUpdated.firmado != c.firmado) { logCambios.Append( crearLogCambios( "Firmado", cUpdated.firmado.ToString(), c.firmado.ToString(), razon, ControladorSesion.usuarioActivo.idUsuario ) ); cUpdated.firmado = c.firmado; cambios = true; } if (cUpdated.tipoDeAcreditacion != c.tipoDeAcreditacion) { logCambios.Append( crearLogCambios( "Tipo de acreditación", cUpdated.tipoDeAcreditacion, c.tipoDeAcreditacion, razon, ControladorSesion.usuarioActivo.idUsuario ) ); cUpdated.tipoDeAcreditacion = c.tipoDeAcreditacion; cambios = true; } if (cUpdated.recursamiento != c.recursamiento) { logCambios.Append( crearLogCambios( "Firmado", cUpdated.recursamiento.ToString(), c.recursamiento.ToString(), razon, ControladorSesion.usuarioActivo.idUsuario ) ); cUpdated.recursamiento = c.recursamiento; cambios = true; } if (cUpdated.verificado != c.verificado) { logCambios.Append( crearLogCambios( "Tipo de acreditación", cUpdated.verificado.ToString(), c.verificado.ToString(), razon, ControladorSesion.usuarioActivo.idUsuario ) ); cUpdated.verificado = c.verificado; cambios = true; } // Ahora, para guardar en el historial, // comprobamos que exista. Si no existe, // lo creamos y agregmos los cambios del StringBuilder. // Si ya existe, simplemente agregamos los // cambios al final de la cadena. historial_calificaciones_semestrales historial = dbContext.historial_calificaciones_semestrales.SingleOrDefault(h => h.idCalificacion_Semestral == cUpdated.idCalificacion_Semestral); if (historial == null) { historial = new historial_calificaciones_semestrales() { idCalificacion_Semestral = cUpdated.idCalificacion_Semestral, cambios = logCambios.ToString() }; dbContext.historial_calificaciones_semestrales.Add(historial); } else { historial.cambios += logCambios.ToString(); } } // Si hubo cambios, se guardan if (cambios) { calificacionesModificadas = dbContext.SaveChanges(); } } catch (Exception e) { innerRO = ControladorExcepciones.crearResultadoOperacionException(e); } int listaCalificacionesCount = listaCalificaciones.Count; return (!cambios ? new ResultadoOperacion( EstadoOperacion.NingunResultado, "No se guardó ninguna calificación - " + razon, null, innerRO) : calificacionesModificadas > 0 ? new ResultadoOperacion( EstadoOperacion.Correcto, "Calificaciones actualizadas - " + razon, null, innerRO) : new ResultadoOperacion( EstadoOperacion.ErrorAplicacion, "No se han actualizado las calificaciones - " + razon, "CalAct " + calificacionesModificadas.ToString(), innerRO)); }
// Métodos visuales private void configurarDGVCalificaciones(BindingList <calificaciones_semestrales> listaCalificacionesBinding) { cmdImportar.Enabled = listaCalificacionesBinding != null; // Si la colección es originalmente nula, o vacía, salimos. if (listaCalificacionesBinding == null || listaCalificacionesBinding.Count < 1) { dgvCalificaciones.DataSource = null; dgvCalificaciones.Columns["tipoDeAcreditacion1"].Visible = false; configurarBotones(false); return; } // Ordenamos la binding list... listaCalificacionesBinding = new BindingList <calificaciones_semestrales>( listaCalificacionesBinding. OrderBy( c => c.estudiantes.ToString()). ToList() ); // Agregamos todos los datos al dgv dgvCalificaciones.DataSource = listaCalificacionesBinding; // Ahora, obtenemos la colección de columnas... DataGridViewColumnCollection columnas = dgvCalificaciones.Columns; // Iteramos sobre todas las columnas para hacerlas invisibles foreach (DataGridViewColumn c in columnas) { c.Visible = false; } // Itero sobre las filas para agregar algunas cosas foreach (DataGridViewRow row in dgvCalificaciones.Rows) { calificaciones_semestrales cActual = (calificaciones_semestrales)row.DataBoundItem; // Primero, el número de lista row.HeaderCell.Value = String.Format("{0}", row.Index + 1); // Segundo, el color de fondo para mostrar a los de recursamiento if (cActual.recursamiento) { row.DefaultCellStyle.BackColor = Color.LightGreen; } // Tercero, seleccionamos el tipo de acreditación // A NP NA RV R DataGridViewCell cell = row.Cells["tipoDeAcreditacion1"]; cell.Value = cActual.tipoDeAcreditacion; } // Muestro únicamente las que me interesan columnas["nControl"].Visible = true; columnas["calificacionParcial1"].Visible = true; columnas["calificacionParcial2"].Visible = true; columnas["calificacionParcial3"].Visible = true; columnas["asistenciasParcial1"].Visible = true; columnas["asistenciasParcial2"].Visible = true; columnas["asistenciasParcial3"].Visible = true; columnas["tipoDeAcreditacion"].Visible = false; columnas["tipoDeAcreditacion1"].Visible = true; //columnas["recursamiento"].Visible = true; columnas["firmado"].Visible = true; columnas["estudiantes"].Visible = true; columnas["promedio"].Visible = true; columnas["asistenciasTotales"].Visible = true; //columnas["verificado"].Visible = true; // Cambio el título columnas["nControl"].HeaderText = "Núm. control"; columnas["calificacionParcial1"].HeaderText = "Cal. P1"; columnas["calificacionParcial2"].HeaderText = "Cal. P2"; columnas["calificacionParcial3"].HeaderText = "Cal. P3"; columnas["asistenciasParcial1"].HeaderText = "Asis. P1"; columnas["asistenciasParcial2"].HeaderText = "Asis. P2"; columnas["asistenciasParcial3"].HeaderText = "Asis. P3"; columnas["tipoDeAcreditacion"].HeaderText = "Tipo de Acreditación"; columnas["tipoDeAcreditacion1"].HeaderText = "Tipo de Acreditación"; columnas["recursamiento"].HeaderText = "Recursamiento"; columnas["firmado"].HeaderText = "Firmado"; columnas["estudiantes"].HeaderText = "Estudiante"; columnas["promedio"].HeaderText = "Promedio"; columnas["asistenciasTotales"].HeaderText = "Asistencias totales"; columnas["verificado"].HeaderText = "Verificado"; // Las muestro en un orden particular int intOrden = 0; columnas["nControl"].DisplayIndex = intOrden++; columnas["estudiantes"].DisplayIndex = intOrden++; columnas["calificacionParcial1"].DisplayIndex = intOrden++; columnas["calificacionParcial2"].DisplayIndex = intOrden++; columnas["calificacionParcial3"].DisplayIndex = intOrden++; columnas["asistenciasParcial1"].DisplayIndex = intOrden++; columnas["asistenciasParcial2"].DisplayIndex = intOrden++; columnas["asistenciasParcial3"].DisplayIndex = intOrden++; columnas["promedio"].DisplayIndex = intOrden++; columnas["asistenciasTotales"].DisplayIndex = intOrden++; columnas["tipoDeAcreditacion"].DisplayIndex = intOrden++; columnas["tipoDeAcreditacion1"].DisplayIndex = intOrden++; columnas["firmado"].DisplayIndex = intOrden++; columnas["recursamiento"].DisplayIndex = intOrden++; columnas["verificado"].DisplayIndex = intOrden++; // Limito la edición de los campos columnas["nControl"].ReadOnly = true; columnas["estudiantes"].ReadOnly = true; columnas["recursamiento"].ReadOnly = true; columnas["verificado"].ReadOnly = true; // Y finalmente, le doy formato a las columnas de calificaciones, // para que sólo acepten dos decimales, y otras cosas más... columnas["calificacionParcial1"].DefaultCellStyle.Format = "N2"; columnas["calificacionParcial2"].DefaultCellStyle.Format = "N2"; columnas["calificacionParcial3"].DefaultCellStyle.Format = "N2"; columnas["promedio"].DefaultCellStyle.Format = "N2"; columnas["recursamiento"].DefaultCellStyle.ForeColor = Color.LightGray; columnas["nControl"].Width = 100; columnas["estudiantes"].Width = 220; columnas["tipoDeAcreditacion1"].Width = 100; columnas["firmado"].Width = 40; // Botones que sólo funcionan si hay DataSource configurarBotones(true); }
private void configurarDGVCalificacionesSiseems(BindingList <calificaciones_semestrales> listaCalificacionesBinding) { // Si la colección es originalmente nula, o vacía, salimos. if (listaCalificacionesBinding == null || listaCalificacionesBinding.Count < 1) { dgvCalificacionesSiseems.DataSource = null; dgvCalificacionesSiseems.Columns["tipoDeAcreditacion1"].Visible = false; dgvCalificacionesSiseems.Columns["actualizar"].Visible = false; return; } // Ordenamos la binding list... listaCalificacionesBinding = new BindingList <calificaciones_semestrales>( listaCalificacionesBinding. OrderBy( c => c.estudiantes.apellido1 + c.estudiantes.apellido2 + c.estudiantes.nombres). ToList() ); // Agregamos todos los datos al dgv dgvCalificacionesSiseems.DataSource = listaCalificacionesBinding; // Ahora, obtenemos la colección de columnas... DataGridViewColumnCollection columnas = dgvCalificacionesSiseems.Columns; // Iteramos sobre todas las columnas para hacerlas invisibles // y de sólo lectura foreach (DataGridViewColumn c in columnas) { c.Visible = false; c.ReadOnly = true; } // Volvemos editable la columna de actualizar columnas["actualizar"].ReadOnly = false; // Itero sobre las filas para agregar algunas cosas int i = 0; foreach (DataGridViewRow row in dgvCalificacionesSiseems.Rows) { // Primero, el número de lista row.HeaderCell.Value = String.Format("{0}", row.Index + 1); calificaciones_semestrales cFila = ((calificaciones_semestrales)row.DataBoundItem); // Segundo, el color de fondo para mostrar a los de recursamiento // (Probablemente en este DGV nunca se muestren) if (cFila.recursamiento) { row.DefaultCellStyle.BackColor = Color.LightGreen; } // Tercero, seleccionamos el tipo de acreditación // A NP NA RV R DataGridViewComboBoxCell cell = (DataGridViewComboBoxCell)row.Cells["tipoDeAcreditacion1"]; cell.Value = listaCalificacionesBinding[i].tipoDeAcreditacion; i++; // ESTO ES ADICIONAL PARA RESALTAR LAS DIFERENCIAS calificaciones_semestrales cEquivalente = calificacionesActuales.SingleOrDefault(c => c.idEstudiante == cFila.idEstudiante); // -- Ya existen, pero las calificaciones son diferentes (LIGHT BLUE) // -- Además de que se pone como default el valor TRUE para actualizar // -- y los botones se desactivarán if (cEquivalente != null) { encontrados++; bool flag = false; if (ControladorMiscelaneo.compararNullableDouble(cFila.calificacionParcial1, cEquivalente.calificacionParcial1) != 0) { flag = true; row.Cells["calificacionParcial1"].Style.BackColor = colorDiferenciasResaltado; } if (ControladorMiscelaneo.compararNullableDouble(cFila.calificacionParcial2, cEquivalente.calificacionParcial2) != 0) { flag = true; row.Cells["calificacionParcial2"].Style.BackColor = colorDiferenciasResaltado; } if (ControladorMiscelaneo.compararNullableDouble(cFila.calificacionParcial3, cEquivalente.calificacionParcial3) != 0) { flag = true; row.Cells["calificacionParcial3"].Style.BackColor = colorDiferenciasResaltado; } if (ControladorMiscelaneo.compararNullableDouble(cFila.asistenciasParcial1, cEquivalente.asistenciasParcial1) != 0) { flag = true; row.Cells["asistenciasParcial1"].Style.BackColor = colorDiferenciasResaltado; } if (ControladorMiscelaneo.compararNullableDouble(cFila.asistenciasParcial2, cEquivalente.asistenciasParcial2) != 0) { flag = true; row.Cells["asistenciasParcial2"].Style.BackColor = colorDiferenciasResaltado; } if (ControladorMiscelaneo.compararNullableDouble(cFila.asistenciasParcial3, cEquivalente.asistenciasParcial3) != 0) { flag = true; row.Cells["asistenciasParcial3"].Style.BackColor = colorDiferenciasResaltado; } if (cFila.tipoDeAcreditacion != cEquivalente.tipoDeAcreditacion) { flag = true; row.Cells["tipoDeAcreditacion"].Style.BackColor = colorDiferenciasResaltado; } if (cFila.firmado != cEquivalente.firmado) { flag = true; row.Cells["firmado"].Style.BackColor = colorDiferenciasResaltado; } if (flag) { diferencias++; row.DefaultCellStyle.BackColor = colorDiferencias; row.Cells["actualizar"].Value = true; cmdGuardarDiferencias.Enabled = true; cmdSeleccionarNinguno.Enabled = true; cmdSeleccionarTodos.Enabled = true; } // -- Si no, entonces no se pondrá color, y se hará inactualizable // -- tal registro, y los botones se desactivarán else { row.Cells["actualizar"].Value = false; row.Cells["actualizar"].ReadOnly = true; cmdGuardarDiferencias.Enabled = true; cmdSeleccionarNinguno.Enabled = true; cmdSeleccionarTodos.Enabled = true; } } // -- No existe en nuestro registro (LIGHT RED) else { if (cFila.idEstudiante != -1) { noEncontradosGrupo++; row.DefaultCellStyle.BackColor = colorNoEncontradosGrupo; } else { noEncontradosDB++; row.DefaultCellStyle.BackColor = colorNoEncontradosDB; } row.Cells["recursamiento"].Value = false; row.Cells["actualizar"].Value = true; row.Cells["verificado"].Value = false; } } // Muestro únicamente las que me interesan columnas["actualizar"].Visible = true; columnas["nControl"].Visible = true; columnas["calificacionParcial1"].Visible = true; columnas["calificacionParcial2"].Visible = true; columnas["calificacionParcial3"].Visible = true; columnas["asistenciasParcial1"].Visible = true; columnas["asistenciasParcial2"].Visible = true; columnas["asistenciasParcial3"].Visible = true; columnas["tipoDeAcreditacion"].Visible = false; columnas["tipoDeAcreditacion1"].Visible = true; columnas["firmado"].Visible = true; columnas["estudiantes"].Visible = true; columnas["promedio"].Visible = true; columnas["asistenciasTotales"].Visible = true; // Cambio el título columnas["nControl"].HeaderText = "Núm. control"; columnas["calificacionParcial1"].HeaderText = "Cal. P1"; columnas["calificacionParcial2"].HeaderText = "Cal. P2"; columnas["calificacionParcial3"].HeaderText = "Cal. P3"; columnas["asistenciasParcial1"].HeaderText = "Asis. P1"; columnas["asistenciasParcial2"].HeaderText = "Asis. P2"; columnas["asistenciasParcial3"].HeaderText = "Asis. P3"; columnas["tipoDeAcreditacion"].HeaderText = "Tipo de Acreditación"; columnas["tipoDeAcreditacion1"].HeaderText = "Tipo de Acreditación (Combo)"; columnas["firmado"].HeaderText = "Firmado"; columnas["estudiantes"].HeaderText = "Estudiante"; columnas["promedio"].HeaderText = "Promedio"; columnas["asistenciasTotales"].HeaderText = "Asistencias totales"; // Las muestro en un orden particular int intOrden = 0; columnas["actualizar"].DisplayIndex = intOrden++; columnas["nControl"].DisplayIndex = intOrden++; columnas["estudiantes"].DisplayIndex = intOrden++; columnas["calificacionParcial1"].DisplayIndex = intOrden++; columnas["calificacionParcial2"].DisplayIndex = intOrden++; columnas["calificacionParcial3"].DisplayIndex = intOrden++; columnas["asistenciasParcial1"].DisplayIndex = intOrden++; columnas["asistenciasParcial2"].DisplayIndex = intOrden++; columnas["asistenciasParcial3"].DisplayIndex = intOrden++; columnas["promedio"].DisplayIndex = intOrden++; columnas["asistenciasTotales"].DisplayIndex = intOrden++; columnas["tipoDeAcreditacion"].DisplayIndex = intOrden++; columnas["tipoDeAcreditacion1"].DisplayIndex = intOrden++; columnas["firmado"].DisplayIndex = intOrden++; // Y finalmente, le doy formato a las columnas de calificaciones, // para que sólo acepten dos decimales, y otras cosas más... columnas["calificacionParcial1"].DefaultCellStyle.Format = "N2"; columnas["calificacionParcial2"].DefaultCellStyle.Format = "N2"; columnas["calificacionParcial3"].DefaultCellStyle.Format = "N2"; columnas["promedio"].DefaultCellStyle.Format = "N2"; // Construcción del resumen lblEncontrados.Text = "Se encontraron " + encontrados + " alumno(s) pertenecientes al grupo."; lblDiferencias.Text = diferencias + " alumnos tienen diferencias en sus calificaciones."; lblNoEncontradosGrupo.Text = noEncontradosGrupo + " alumnos no pertenecen al grupo."; lblNoEncontradosDB.Text = noEncontradosDB + " alumnos no se encuentran en la base de datos."; // Si las diferencias y los alumnos no pertenecientes son 0 // entonces deshabilitamos el botón de guardar diferencias }
// Métodos de inicialización public FrmHistorialDeCambios(calificaciones_semestrales calificacion) { InitializeComponent(); this.calificacion = calificacion; }