// // GET: /Requisito/Delete/5 public ActionResult Delete(int idPadre, int idHijo) { IRepositorio<Requisito> myRepoRequisito = new RequisitoRepositorio(); IList<Requisito> todosRequisitos = myRepoRequisito.GetAll(); Requisito requisitoBuscado = null; foreach (var requisito in todosRequisitos) { if (requisito.IdMateriaPadre == idPadre && requisito.IdMateriaHijo == idHijo) { requisitoBuscado = requisito; } } if(ModelState.IsValid) { String resultado = myRepoRequisito.Delete(requisitoBuscado); if (resultado.Equals("true")) return RedirectToAction("Index"); } return RedirectToAction("Index"); }
// // GET: /Requisito/Edit/5 public ActionResult Edit(int idPadre, int idHijo) { IRepositorio<Requisito> myRepoRequisito = new RequisitoRepositorio(); IList<Requisito> todosRequisitos = myRepoRequisito.GetAll(); Requisito requisitoBuscado = null; IRepositorio<Materium> repositorioMateria = new MateriumRepositorio(); foreach (var requisito in todosRequisitos) { if (requisito.IdMateriaPadre == idPadre && requisito.IdMateriaHijo == idHijo) { requisitoBuscado = requisito; requisitoBuscado.MateriaHijo = repositorioMateria.GetById(requisito.IdMateriaHijo); requisitoBuscado.MateriaPadre = repositorioMateria.GetById(requisito.IdMateriaPadre); } } return View(requisitoBuscado); }
// // GET: /Requisito/ public ActionResult Index() { IRepositorio<Materium> repositorioMateria = new MateriumRepositorio(); IRepositorio<Requisito> myRepoRequisito = new RequisitoRepositorio(); IList<Requisito> listaRequisitos = myRepoRequisito.GetAll(); foreach (var requisito in listaRequisitos) { requisito.MateriaHijo = repositorioMateria.GetById(requisito.IdMateriaHijo); requisito.MateriaPadre = repositorioMateria.GetById(requisito.IdMateriaPadre); } return View(listaRequisitos); }
private void HorasPersonales(IEnumerable<int?> misMaterias, Alumno alumno) { var miEdad = (int)((_fechaActual - alumno.FechaNac).Days / 365.25); IRepositorio<DatosSociales> repositorioDatosSociales = new DatosSocialesRepositorio(); var misDatosSociales = repositorioDatosSociales.GetByUniqueAtribute(alumno.Cedula.ToString()); IRepositorio<PromedioFactor> repositorioPromedioFactor = new PromedioFactorRepositorio(); var promedioFactor = repositorioPromedioFactor.GetAll(); IRepositorio<Materium> repositorioMaterium = new MateriumRepositorio(); // Se obtienen las horas base y se customiza segun los parametros del estudiante. foreach (int idMateria in misMaterias) { double horasBase = repositorioMaterium.GetById(idMateria).HorasBase; double promHistorico = 0; decimal nota = 0; int cantPersonalizacion = 0; // Personaliza segun la edad var fEdad = (from factor in promedioFactor where factor.Factor.CompareTo("Edad") == 0 && factor.Clasificacion.CompareTo(miEdad.ToString()) == 0 && factor.IdMateria == idMateria select factor); if (fEdad.Count() > 0) { cantPersonalizacion++; nota = fEdad.First().Promedio; promHistorico = promHistorico + (double)nota; } //Personaliza segun Trabajo cantPersonalizacion++; if (misDatosSociales.Trabaja.CompareTo("Si") == 0) { nota = (from factor in promedioFactor where factor.Factor.CompareTo("Trabajo") == 0 && factor.Clasificacion.CompareTo(misDatosSociales.RelacionTrabCarr) == 0 && factor.IdMateria == idMateria select factor.Promedio).First(); } else { nota = (from factor in promedioFactor where factor.Factor.CompareTo("Trabajo") == 0 && factor.Clasificacion.CompareTo("No Trabaja") == 0 && factor.IdMateria == idMateria select factor.Promedio).First(); } promHistorico = promHistorico + Convert.ToDouble(nota); //Personaliza segun la materia cantPersonalizacion++; nota = (from factor in promedioFactor where factor.Factor.CompareTo("Promedio") == 0 && factor.IdMateria == idMateria select factor.Promedio).First(); promHistorico = promHistorico + Convert.ToDouble(nota); //Personaliza segun el record de las materias que prelan esta materia IRepositorio<Requisito> repositorioRequisito = new RequisitoRepositorio(); var misRequisitos = (from r in repositorioRequisito.GetAll() where r.IdMateriaHijo == idMateria select r.IdMateriaPadre).ToList(); var prom = 0.0; if (misRequisitos.Count > 0) { IRepositorio<SlRecordAcademico> repositorioSlRecord = new SlRecordAcademicoRepositorio(); IRepositorio<SlSeccion> repositorioSlSeccion = new SlSeccionRepositorio(); IRepositorio<SlMaterium> repositorioSlMateria = new SlMateriumRepositorio(); var anioPerdiodo = Convert.ToInt32(_periodoActual.Substring(0, 4)); var periodo = Convert.ToInt32(_periodoActual.Substring(4)); if (periodo > 21) { periodo--; } else { anioPerdiodo--; } var periodoAnterior = Convert.ToInt32(anioPerdiodo.ToString() + periodo.ToString()); var sum = 0; foreach (var requisito in misRequisitos) { var materia = repositorioMaterium.GetById(requisito); var slMateria = repositorioSlMateria.GetAll().Where(m => m.Nombre.CompareTo(materia.Nombre) == 0).First(); var slSeccion = repositorioSlSeccion.GetAll().Where(s => s.IdMateria == slMateria.IdMateria && s.Periodo.CompareTo(periodoAnterior) == 0).ToList(); var n = (from record in repositorioSlRecord.GetAll() from seccion in slSeccion where record.Cedula == alumno.Cedula && record.IdSeccion == seccion.IdSeccion select record.Nota); if (n.Count() > 0) { sum++; prom += Convert.ToDouble(n.First()); } } if (prom > 0.0) { cantPersonalizacion++; promHistorico += (prom / sum); } } promHistorico = promHistorico / cantPersonalizacion; /* * Segun el promedio obtenido segun las caracteristicas * personales del alumno se le aumentan o disminuyen las * horas de estudio segun una regla. */ const double pendiente = -0.075; var factorM = (promHistorico * pendiente) + 1.75; var horasPersonalizadas = horasBase * factorM; var misHorasPersonales = new AlumnoMaterium() { IdMateria = idMateria, Cedula = alumno.Cedula, HorasPersonales = horasPersonalizadas }; //Segun las notas obtenidas en las evaluaciones anteriores se afecta las horas personales IRepositorio<ClaseEvaluacion> repositorioHorarioClase = new HorarioClaseRepositorio(); var listCronograma = repositorioHorarioClase.GetAll().Where(alum => alum.Cedula == alumno.Cedula).ToList(); IRepositorio<Actividad> repositorioActividad = new ActividadRepositorio(); var listActividades = repositorioActividad.GetAll().Where(a => a.Periodo.CompareTo(_periodoActual) == 0).ToList(); var misEvaluaciones = (from d in listCronograma from c in listActividades where c.Tipo.CompareTo("Evaluacion") == 0 && d.IdActividad == c.IdActividad select c).ToList(); foreach (var miEvaluacion in misEvaluaciones) { var miNota = (from cE in listCronograma where cE.IdActividad == miEvaluacion.IdActividad select cE.Nota).First(); if (miNota != 0.0) { const int x1 = 10; const int y1 = 0; const int x2 = 20; var y2 = (misHorasPersonales.HorasPersonales * (miEvaluacion.Ponderacion / 100.00)) * -1; var pendiente1 = (y2 - y1) / (x2 - x1); var factorMat = (miNota * pendiente1) - y2; misHorasPersonales.HorasPersonales += factorMat; } } if (prom > 0.00) { if (prom < 4) { misHorasPersonales.Preferencia = 5; } else if (prom < 8) { misHorasPersonales.Preferencia = 4; } else if (prom < 12) { misHorasPersonales.Preferencia = 3; } else if (prom < 16) { misHorasPersonales.Preferencia = 2; } else if (prom <= 20) { misHorasPersonales.Preferencia = 1; } } IRepositorio<AlumnoMaterium> repositorioAlumnoMateria = new AlumnoMateriumRepositorio(); repositorioAlumnoMateria.Update(misHorasPersonales); } }