public void eliminaCalificaciones(bd_simaEntitie db, string id_docente, string programa, string grupo, string materia) { var calificacion = (from c in db.calificaciones_periodo where (c.grupo == grupo && c.programa == programa && c.asignatura == materia && c.id_docente == id_docente) select c); if (calificacion.Count() > 0) { calificaciones_periodo califi = calificacion.First(); List <Notas> notas = (from n in db.Notas where (n.id_calificaciones_periodo == califi.id) select n).ToList(); foreach (Notas nota in notas) { db.Notas.Remove(nota); } db.calificaciones_periodo.Remove(califi); db.SaveChanges(); } }
public String guardar(bd_simaEntitie db, FormCollection datos_notas) { Sesion sesion = new Sesion(); String guardado = "OK"; String asignatura = sesion.getMateria_nota(); String programa = sesion.getPrgrama_notas(); String grupo = sesion.getGrupo_nota(); String id_docente = sesion.getIdUsuario(); try { using (var transaccion = new TransactionScope()) { using (var contestTransaccion = new bd_simaEntitie()) { // se comprueba que las columnas contenca una nota y las filas un estuniente como minimo // se bene de restar los datos difrente a los de la tabla que vengan (datos_notas.AllKeys.ToList().Count()-1) if ((datos_notas.GetValues(0).Count() - 1 > 2) && (datos_notas.AllKeys.ToList().Count() - 1 > 2)) { List <String> cabezaTabla = datos_notas.GetValues(0).ToList(); // no se permite q el nombre de las actividades sean las misma if (cabezaTabla.Distinct().Count() == cabezaTabla.Count()) { eliminaCalificaciones(db, id_docente, programa, grupo, asignatura); calificaciones_periodo calificacion = new calificaciones_periodo { asignatura = asignatura, corte = 1, fecha_registro = DateTime.Now, grupo = grupo, id_docente = id_docente, periodo = MConfiguracionApp.getPeridoActual(db), programa = programa }; db.calificaciones_periodo.Add(calificacion); db.SaveChanges(); List <String> claves = datos_notas.AllKeys.ToList(); // cabeceras tabla int n = datos_notas.GetValues(0).Count(); double valorNota = 0; NumberFormatInfo provider = new NumberFormatInfo(); provider.NumberDecimalSeparator = ","; /// se recorren las filas de la tabla // si se envian otros valores en el formulario, se debe de restar en el (claves.Count()-n) del primer for // siempre se suma -1 porque la ultima fila siempre esta vacia // se inicia en 1 porque la primera fila es la que contiene el nombre de las actividades for (int i = 1; i < claves.Count() - 1; i++) { List <String> dato = datos_notas.GetValues(claves[i]).ToList(); guardado = validaFila(cabezaTabla.Count(), dato, provider); if (guardado.Equals("OK")) { /// se recorren las columnas, las dos primeras columnas no se toman /// //se suma -1 porque la ultma columna siempre esta vacia for (int j = 2; j < n - 1; j++) { valorNota = Convert.ToDouble(dato[j], provider); Notas nota = new Notas { id_calificaciones_periodo = calificacion.id, id_estudiante = dato[0], tipo = cabezaTabla[j], valor = valorNota }; db.Notas.Add(nota); db.SaveChanges(); } } else { break; } } if (guardado.Equals("OK")) { MAlerta alerta = new MAlerta { creador = "SIMA", eliminada = 0, fecha_creada = DateTime.Now, mensaje = "Actualización de calificaciones del estudiante ", perfil_ver = "Administrador", tipo_alerta = "Notas", titulo = "CALIFICACIONES " + asignatura, vista = 0 }; alerta.crearAlerta(db, alerta); transaccion.Complete(); } } else { guardado = "El nombre de las actividades no pueden ser el mismo."; } } else { guardado = "Se debe de registrar como minimo una nota y un estunate antes de guardar."; } } } } catch (Exception) { guardado = "Error al guardar"; } return(guardado); }