// // GET: /Actividad/Delete/5 public ActionResult Delete(int id) { if(ModelState.IsValid) { IRepositorio<Actividad> myRepoActividad = new ActividadRepositorio(); String resultado = myRepoActividad.Delete(myRepoActividad.GetById(id)); if (resultado.Equals("true")) return RedirectToAction("Index"); return RedirectToAction("Index"); } return RedirectToAction("Index"); }
// // GET: /Actividad/Details/5 public ActionResult Details(int id) { IRepositorio<Actividad> myRepoActividad = new ActividadRepositorio(); return View(myRepoActividad.GetById(id)); }
// // GET: /Actividad/Edit/5 public ActionResult Edit(int id) { IRepositorio<Actividad> myRepoActividad = new ActividadRepositorio(); Actividad actividad = myRepoActividad.GetById(id); IRepositorio<Materium> repositorioMateria = new MateriumRepositorio(); actividad.Materia = repositorioMateria.GetById(actividad.IdMateria); return View(actividad); }
private void GuardarActMejorHorario(DateTime miFecha, AlumnoMaterium alumnoMaterium, int diasEstudio) { var periodoActual = Helper.CalcularPeriodoActual(); IRepositorio<HorarioPreferencia> repositorioHorarioPreferencia = new HorarioPreferenciaRepositorio(); IRepositorio<AlumnoMaterium> repositorioAlumnoMateria = new AlumnoMateriumRepositorio(); IRepositorio<Materium> repositorioMaterium = new MateriumRepositorio(); IRepositorio<Actividad> repositorioActividad = new ActividadRepositorio(); IRepositorio<ClaseEvaluacion> repositorioClaseEvaluacion = new HorarioClaseRepositorio(); var listMisClasesEvaluacion = repositorioClaseEvaluacion.GetAll().Where(cE => cE.Cedula == alumnoMaterium.Cedula).ToList(); var misActividades = (from a in repositorioActividad.GetAll() where a.Cedula == alumnoMaterium.Cedula select a).ToList(); misActividades.AddRange(listMisClasesEvaluacion.Select(claseEvaluacion => repositorioActividad.GetById(claseEvaluacion.IdActividad))); var horarioDisponible = repositorioHorarioPreferencia.GetAll(). Where(hp => hp.Cedula == alumnoMaterium.Cedula & hp.Tipo.CompareTo("Definitivo") == 0).ToList(); var miHorarioOcupado = (from a in misActividades where a.Cedula == alumnoMaterium.Cedula & a.HoraInicio.Date == miFecha.Date select a).ToList(); foreach (var claseEvaluacion in listMisClasesEvaluacion) { var miActClase = repositorioActividad.GetById(claseEvaluacion.IdActividad); if (miActClase.HoraInicio.Date == miFecha.Date) { miHorarioOcupado.Add(miActClase); } } //Elimino las horas ocupadas de HOY en el arreglo de disponibles foreach (var actividad in miHorarioOcupado) { DateTime horaFin = actividad.HoraFin.Minute > 0 ? actividad.HoraFin.AddHours(1) : actividad.HoraFin; for (int i = actividad.HoraInicio.Hour; i < horaFin.Hour; i++) { var horaOcupada = (from hora in horarioDisponible where hora.HoraInicio.Hour == i select hora); if (horaOcupada.Count() != 0) { horarioDisponible.Remove(horaOcupada.First()); } } } //Ordeno las horas disponibles segun su prioridad var miHorarioDisponible = (from horario in horarioDisponible orderby horario.Preferencia descending select horario).ToList(); //Actualizo para c/hora disponible la fecha que voy a calendarizar foreach (var horarioPreferencia in miHorarioDisponible) { int horaIni = horarioPreferencia.HoraInicio.Hour; int horaFin = horarioPreferencia.HoraFin.Hour; horarioPreferencia.HoraInicio = new DateTime(miFecha.Year, miFecha.Month, miFecha.Day, horaIni, 0, 0); horarioPreferencia.HoraFin = new DateTime(miFecha.Year, miFecha.Month, miFecha.Day, horaFin, 0, 0); } //Calculo cuantas horas se calendarizaran var horaDiaria = Math.Ceiling(alumnoMaterium.HorasPersonales / diasEstudio); var horaDiariaReal = alumnoMaterium.HorasPersonales / diasEstudio; //Busco el mejor horario para calendarizar la actividad bool flag2; HorarioPreferencia preferenciaAux; double mayorPrioridad = 0; do { mayorPrioridad = miHorarioDisponible[0].Preferencia; var mayorPreferencia = new HorarioPreferencia(); preferenciaAux = new HorarioPreferencia { MayorPreferencia = 0 }; foreach (var horarioD in miHorarioDisponible) { if (horarioD.Preferencia.CompareTo(mayorPrioridad) == 0) { mayorPreferencia.Cedula = horarioD.Cedula; mayorPreferencia.HoraInicio = horarioD.HoraInicio; mayorPreferencia.HoraFin = horarioD.HoraFin; mayorPreferencia.Preferencia = horarioD.Preferencia; mayorPreferencia.Tipo = horarioD.Tipo; mayorPreferencia.IdPreferencia = horarioD.IdPreferencia; mayorPreferencia.MayorPreferencia = horarioD.Preferencia; for (int i = 1; i < horaDiaria; i++) { var horaBuscada = (from h in horarioDisponible where h.HoraInicio.CompareTo(horarioD.HoraInicio.AddHours(i)) == 0 select h); if (horaBuscada.Count() != 0) { mayorPreferencia.MayorPreferencia += horaBuscada.First().Preferencia; } else { mayorPreferencia = new HorarioPreferencia(); break; } } if (mayorPreferencia.Cedula != 0) { if (mayorPreferencia.MayorPreferencia > preferenciaAux.MayorPreferencia) { preferenciaAux.Cedula = mayorPreferencia.Cedula; preferenciaAux.HoraInicio = mayorPreferencia.HoraInicio; preferenciaAux.HoraFin = mayorPreferencia.HoraFin; preferenciaAux.Preferencia = mayorPreferencia.Preferencia; preferenciaAux.Tipo = mayorPreferencia.Tipo; preferenciaAux.IdPreferencia = mayorPreferencia.IdPreferencia; preferenciaAux.MayorPreferencia = mayorPreferencia.MayorPreferencia; } } } } if (preferenciaAux.Cedula == 0) { flag2 = true; miHorarioDisponible.RemoveAt(0); } else { flag2 = false; } } while (flag2 && miHorarioDisponible.Count != 0); //Si hay horario disponible se calendariza la actividad if (miHorarioDisponible.Count != 0) { var act = new Actividad { HoraInicio = preferenciaAux.HoraInicio, HoraFin = preferenciaAux.HoraInicio.AddHours(horaDiariaReal), IdMateria = alumnoMaterium.IdMateria, Nombre = "Estudiar " + repositorioMaterium.GetById(alumnoMaterium.IdMateria).Nombre, Tipo = "Inteligente", Periodo = periodoActual, Cedula = alumnoMaterium.Cedula }; repositorioActividad.Save(act); alumnoMaterium.HorasAcumuladas += horaDiariaReal; repositorioAlumnoMateria.Update(alumnoMaterium); } }
public ActionResult LogOn(LogOnModel model, string returnUrl) { if (ModelState.IsValid) { if (MembershipService.ValidateUser(model.UserName, model.Password)) { FormsService.SignIn(model.UserName, model.RememberMe); var roleEstudiante = Roles.GetUsersInRole("Estudiante"); bool flag = false; foreach (var rol in roleEstudiante) { if (rol.CompareTo(model.UserName) == 0) { flag = true; } } if (flag) { IRepositorio<Alumno> repoAlumno = new AlumnoRepositorio(); var miAlumno = repoAlumno.GetByUniqueAtribute(model.UserName); if (miAlumno != null) { Session["cedula"] = miAlumno.Cedula; /* * Si no tengo actividades de clase * invoco al trigger de Alumno */ IRepositorio<Actividad> repositorioActividad = new ActividadRepositorio(); var misActividades = new List<Actividad>(); IRepositorio<ClaseEvaluacion> repositorioClaseE = new HorarioClaseRepositorio(); var listClaseEvaluacion = repositorioClaseE.GetAll().Where(cE => cE.Cedula == miAlumno.Cedula).ToList(); foreach (var claseEvaluacion in listClaseEvaluacion) { var actividad = repositorioActividad.GetById(claseEvaluacion.IdActividad); if (actividad.Tipo.CompareTo("Clase") == 0 && actividad.Periodo.CompareTo((_periodoActual)) == 0) { misActividades.Add(actividad); } } if (misActividades.Count == 0) { repoAlumno.Update(miAlumno); } /* * Si no tengo actividades inteligentes * en el periodo actual, se calculan */ var actInteligentes = repositorioActividad.GetAll().Where(a => a.Cedula == miAlumno.Cedula && a.Tipo.CompareTo("Inteligente") == 0 && a.Periodo.CompareTo(_periodoActual) == 0).ToList(); if (actInteligentes.Count() == 0) { IRepositorio<ClaseEvaluacion> repositorioHorarioClase = new HorarioClaseRepositorio(); var listCronograma = repositorioHorarioClase.GetAll().Where(alum => alum.Cedula == miAlumno.Cedula); var listActividades = repositorioActividad.GetAll().Where(a => a.Periodo.CompareTo(_periodoActual) == 0); var misMaterias = (from d in listCronograma from c in listActividades where c.Tipo.CompareTo("Clase") == 0 && d.IdActividad == c.IdActividad select c.IdMateria).Distinct(); var misEvaluaciones = (from d in listCronograma from c in listActividades where c.Tipo.CompareTo("Evaluacion") == 0 && d.IdActividad == c.IdActividad select c).ToList(); HorasPersonales(misMaterias, miAlumno); IRepositorio<Materium> repositorioMateria = new MateriumRepositorio(); IRepositorio<AlumnoMaterium> repositorioAlumnoMat = new AlumnoMateriumRepositorio(); IRepositorio<PromedioFactor> repositorioPromedioFactor = new PromedioFactorRepositorio(); IList<PromedioFactor> listPromedioFactor = repositorioPromedioFactor.GetAll(); var mayorCredito = (from mat in repositorioMateria.GetAll() select mat.Creditos).Max(); foreach (var miMateria in misMaterias) { var alumnoMateria = repositorioAlumnoMat.GetAll().Where(aM => aM.IdMateria == miMateria && aM.Cedula == miAlumno.Cedula).First(); if (alumnoMateria.Preferencia != 0.00) { var promedio = (from prom in listPromedioFactor where prom.IdMateria == miMateria && prom.Factor.CompareTo("Promedio") == 0 select prom.Promedio).First(); var porcentajeProm = (double)(((20 - promedio) * 100) / 20); var materia = repositorioMateria.GetById(miMateria); var uc = materia.Creditos; var porcentajeUC = (uc * 100) / mayorCredito; var porcentajePref = (alumnoMateria.Preferencia * 100) / 5.0; alumnoMateria.Prioridad = (porcentajePref + porcentajeProm + porcentajeUC) / 3; } else { var promedio = (from prom in listPromedioFactor where prom.IdMateria == miMateria && prom.Factor.CompareTo("Promedio") == 0 select prom.Promedio).First(); var porcentajeProm = (double)(((20 - promedio) * 100) / 20); var materia = repositorioMateria.GetById(miMateria); var uc = materia.Creditos; var porcentajeUC = (uc * 100) / mayorCredito; alumnoMateria.Prioridad = (porcentajeProm + porcentajeUC) / 2; } //Se toma en cuenta las notas obtenidas en las evaluaciones 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 = -alumnoMateria.Prioridad * (miEvaluacion.Ponderacion / 100.00); var pendiente1 = (y2 - y1) / (x2 - x1); var factorM = (miNota * pendiente1) - y2; alumnoMateria.Prioridad += factorM; } } repositorioAlumnoMat.Update(alumnoMateria); } ActividadesInteligentes(miAlumno.Cedula); } if (!String.IsNullOrEmpty(returnUrl)) { return Redirect(returnUrl); } return RedirectToAction("Index", "Home"); } } else { var roleProfesor = Roles.GetUsersInRole("Profesor"); flag = false; foreach (var rol in roleProfesor) { if (rol.CompareTo(model.UserName) == 0) { flag = true; } } if (flag) { IRepositorio<Profesor> repoProfesor = new ProfesorRepositorio(); var miProfesor = repoProfesor.GetByUniqueAtribute(model.UserName); if (miProfesor != null) { Session["cedula"] = miProfesor.Cedula; repoProfesor.Update(miProfesor); if (!String.IsNullOrEmpty(returnUrl)) { return Redirect(returnUrl); } return RedirectToAction("IndexProfesor", "Home"); } } } } ModelState.AddModelError("NCIncorrecto", "El nombre de usuario o la contraseña especificados son incorrectos."); } // Si llegamos a este punto, es que se ha producido un error y volvemos a mostrar el formulario return View(model); }
protected void ActualizarAlumno(int miCedula) { var fechaActual = DateTime.Now; var semestre2 = new DateTime(fechaActual.Year, 03, 01); var verano1 = new DateTime(fechaActual.Year, 07, 01); var verano2 = new DateTime(fechaActual.Year, 10, 01); string periodoActual; if (fechaActual < semestre2) { periodoActual = (fechaActual.Year - 1) + "22"; } else if (fechaActual > verano1 && fechaActual < verano2) { periodoActual = (fechaActual.Year - 1) + "23"; } else { periodoActual = (fechaActual.Year - 1) + "21"; } IRepositorio<Materium> repositorioMateria = new MateriumRepositorio(); var listMaterias = repositorioMateria.GetAll(); IRepositorio<Actividad> repositorioActividad = new ActividadRepositorio(); var listActividades = new List<Actividad>(); IRepositorio<ClaseEvaluacion> repositorioClaseE = new HorarioClaseRepositorio(); var listClaseEvaluacion = repositorioClaseE.GetAll().Where(cE => cE.Cedula == miCedula).ToList(); foreach (var claseEvaluacion in listClaseEvaluacion) { var actividad = repositorioActividad.GetById(claseEvaluacion.IdActividad); if (actividad.Tipo.CompareTo("Clase") == 0 && actividad.Periodo.CompareTo((periodoActual)) == 0 && actividad.HoraInicio >= fechaActual) { listActividades.Add(actividad); } } foreach (var actividad in listActividades) { var materia = (from mat in listMaterias where mat.IdMateria == actividad.IdMateria select mat).First(); actividad.Materia = materia; } IRepositorio<Profesor> repositorioProfesor = new ProfesorRepositorio(); IRepositorio<SlMaterium> repositorioSlMateria = new SlMateriumRepositorio(); var listSlMaterias = repositorioSlMateria.GetAll(); IRepositorio<SlSeccion> repositorioSlSeccion = new SlSeccionRepositorio(); var listSlSecciones = repositorioSlSeccion.GetAll(); IRepositorio<SlClase> repositorioSlClase = new SlClaseRepositorio(); var listSlClase = repositorioSlClase.GetAll(); IRepositorio<SlProfesor> repositorioSlProfesor = new SlProfesorRepositorio(); var listSlProfesor = repositorioSlProfesor.GetAll(); foreach (var actividad in listActividades) { var flag = false; var slMateria = (from mat in listSlMaterias where mat.Nombre.CompareTo(actividad.Materia.Nombre) == 0 select mat).First(); if (slMateria.HorasLab != actividad.Materia.HorasLab) { actividad.Materia.HorasLab = slMateria.HorasLab; flag = true; Trace.Write("Se encontro un cambio en las horas de laboratorio de la materia " + actividad.Materia.Nombre); } if (slMateria.HorasPractica != actividad.Materia.HorasPractica) { actividad.Materia.HorasPractica = slMateria.HorasPractica; flag = true; Trace.Write("Se encontro un cambio en las horas de practica de la materia " + actividad.Materia.Nombre); } if (slMateria.HorasTeoria != actividad.Materia.HorasTeoria) { actividad.Materia.HorasTeoria = slMateria.HorasTeoria; flag = true; Trace.Write("Se encontro un cambio en las horas de teoria de la materia " + actividad.Materia.Nombre); } if (slMateria.Creditos != actividad.Materia.Creditos) { actividad.Materia.Creditos = slMateria.Creditos; flag = true; Trace.Write("Se encontro un cambio en los creditos de la materia " + actividad.Materia.Nombre); } if (actividad.Materia.Descripcion != null) { if (slMateria.Descripcion.CompareTo(actividad.Materia.Descripcion) != 0) { actividad.Materia.Descripcion = slMateria.Descripcion; flag = true; Trace.Write("Se encontro un cambio en la descripcion de la materia " + actividad.Materia.Nombre); } } if (flag) { Trace.WriteIf(repositorioMateria.Update(actividad.Materia).CompareTo("true") == 0, "Se actualizo la materia " + actividad.Materia.Nombre); } flag = false; var slSeccion = (from sec in listSlSecciones where sec.IdMateria == slMateria.IdMateria select sec).First(); if (slSeccion.Seccion.CompareTo(actividad.Seccion) != 0) { actividad.Seccion = slSeccion.Seccion; flag = true; Trace.Write("Se encontro un cambio de seccion en la materia " + actividad.Materia.Nombre); } if (flag) { Trace.WriteIf(repositorioActividad.Update(actividad).CompareTo("true") == 0, "Se actualizo la actividad de la materia " + actividad.Materia.Nombre); } //var listMisSlClase = (from clase in listSlClase // where clase.IdSeccion == slSeccion.IdSeccion // select clase).ToList(); //foreach (var slClase in listMisSlClase) //{ // var actividades = listActividades.Where(a => a.IdMateria == actividad.IdMateria && // a.Seccion == slSeccion.Seccion).ToList(); // foreach (var act in actividades) // { // flag = false; // if (slClase.HoraInicio.Hour.CompareTo(act.HoraInicio.Hour) != 0) // { // act.HoraInicio = new DateTime(act.HoraInicio.Year, act.HoraInicio.Month, act.HoraInicio.Day, // slClase.HoraInicio.Hour, act.HoraInicio.Minute, 0); // flag = true; // Trace.Write("Se encontro un cambio en la hora inicio de la materia " + // actividad.Materia.Nombre); // } // if (slClase.HoraInicio.Minute.CompareTo(act.HoraInicio.Minute) != 0) // { // act.HoraInicio = new DateTime(act.HoraInicio.Year, act.HoraInicio.Month, act.HoraInicio.Day, // act.HoraInicio.Minute, slClase.HoraInicio.Minute , 0); // flag = true; // Trace.Write("Se encontro un cambio en la hora inicio de la materia " + // actividad.Materia.Nombre); // } // if (slClase.HoraFin.Hour.CompareTo(act.HoraFin.Hour) != 0) // { // act.HoraFin = new DateTime(act.HoraFin.Year, act.HoraFin.Month, act.HoraFin.Day, // slClase.HoraFin.Hour, act.HoraFin.Minute, 0); // flag = true; // Trace.Write("Se encontro un cambio en la hora inicio de la materia " + // actividad.Materia.Nombre); // } // if (slClase.HoraFin.Minute.CompareTo(act.HoraFin.Minute) != 0) // { // act.HoraFin = new DateTime(act.HoraFin.Year, act.HoraFin.Month, act.HoraFin.Day, // act.HoraFin.Hour, slClase.HoraFin.Minute, 0); // flag = true; // Trace.Write("Se encontro un cambio en la hora inicio de la materia " + // actividad.Materia.Nombre); // } // if (flag) // { // Trace.WriteIf(repositorioActividad.Update(act).CompareTo("true") == 0, // "Se actualizo la actividad de la materia " + actividad.Materia.Nombre); // } // } //} flag = false; var slProfesor = (from p in listSlProfesor where p.Cedula == slSeccion.Profesor select p).First(); var profesor = repositorioProfesor.GetAll().Where(p => p.Cedula == actividad.Profesor).First(); if (slProfesor.Cedula.CompareTo(profesor.Cedula) != 0) { profesor.Cedula = slProfesor.Cedula; flag = true; Trace.Write("Se encontro un cambio del profesor de la materia " + actividad.Materia.Nombre); } if (slProfesor.Nombre.CompareTo(profesor.Nombre) != 0) { profesor.Nombre = slProfesor.Nombre; flag = true; Trace.Write("Se encontro un cambio en el nombre del profesor de la materia " + actividad.Materia.Nombre); } if (slProfesor.Apellido.CompareTo(profesor.Apellido) != 0) { profesor.Apellido = slProfesor.Apellido; flag = true; Trace.Write("Se encontro un cambio en el apellido del profesor de la materia " + actividad.Materia.Nombre); } if (flag) { Trace.WriteIf(repositorioProfesor.Update(profesor).CompareTo("true") == 0, "Se actualizo el profesor " + profesor.Nombre + " " + profesor.Apellido); } } }
private void Calendarizar(AlumnoMaterium alumnoMaterium, int diasEstudio) { var periodoActual = Helper.CalcularPeriodoActual(); var fechaActual = DateTime.Now; IRepositorio<Materium> repositorioMaterium = new MateriumRepositorio(); IRepositorio<Actividad> repositorioActividad = new ActividadRepositorio(); IList<Actividad> listActividades = repositorioActividad.GetAll(); IRepositorio<ClaseEvaluacion> repositorioClaseEvaluacion = new HorarioClaseRepositorio(); var listMisClasesEvaluacion = repositorioClaseEvaluacion.GetAll().Where(cE => cE.Cedula == alumnoMaterium.Cedula).ToList(); IRepositorio<SlMaterium> repositorioSlMateria = new SlMateriumRepositorio(); IRepositorio<SlSeccion> repositorioSlSeccion = new SlSeccionRepositorio(); var fechaIniSemestre = (from seccion in repositorioSlSeccion.GetAll() .Where( sec => sec.IdMateria == repositorioSlMateria.GetAll().Where( mat => mat.Nombre.CompareTo( repositorioMaterium.GetById(alumnoMaterium.IdMateria).Nombre) == 0).First() .IdMateria) where seccion.Periodo.CompareTo(Convert.ToInt32(periodoActual)) == 0 select seccion.InicioSem).First(); bool flag = true; //if (_fechaActual < fechaIniSemestre.AddDays(5)) //{ // var misActividadesFechaActual = new List<Actividad>(); // foreach (var claseEvaluacion in listMisClasesEvaluacion) // { // var miActClase = repositorioActividad.GetById(claseEvaluacion.IdActividad); // if (miActClase.Tipo.CompareTo("Clase") == 0 && // miActClase.HoraInicio.Date < _fechaActual.Date && // miActClase.IdMateria == alumnoMaterium.IdMateria) // { // misActividadesFechaActual.Add(miActClase); // } // } // if (misActividadesFechaActual.Count > 0) // { // flag = false; // } //} if (flag) { //OJO: VACACIONES var semanasRestantes = (16 - Math.Round((double)((fechaActual - fechaIniSemestre).Days / 7.0))); double horasAjustadas = alumnoMaterium.HorasPersonales * semanasRestantes; var miFecha = fechaActual.AddDays(1); var horasTotales = alumnoMaterium.HorasAcumuladas + horasAjustadas; while (alumnoMaterium.HorasAcumuladas < horasTotales) { if (diasEstudio < 7) { var misActividadesSemana = (from a in listActividades where a.Cedula == alumnoMaterium.Cedula && a.HoraInicio.Date < miFecha.AddDays(7).Date && a.HoraInicio.Date >= miFecha.Date select a).ToList(); foreach (var claseEvaluacion in listMisClasesEvaluacion) { var miActClase = repositorioActividad.GetById(claseEvaluacion.IdActividad); if (miActClase.HoraInicio.Date < miFecha.AddDays(7).Date && miActClase.HoraInicio.Date >= miFecha.Date) { misActividadesSemana.Add(miActClase); } } var horasOcupadas = new double[7]; for (int i = 0; i < 7; i++) { foreach (var actividad in misActividadesSemana) { if (actividad.HoraInicio.Date == miFecha.AddDays(i).Date) { horasOcupadas[i] += (actividad.HoraFin - actividad.HoraInicio).Hours; } } } var mejoresDias = new List<DateTime>(); double aux = 9999; int dia = 0; for (int i = 0; i < diasEstudio; i++) { for (int j = 0; j < 7; j++) { if (horasOcupadas[j] < aux) { aux = horasOcupadas[j]; dia = j; } } horasOcupadas[dia] = 9999; mejoresDias.Add(miFecha.AddDays(dia)); aux = 9999; dia = 0; } foreach (var mejorDia in mejoresDias) { GuardarActMejorHorario(mejorDia, alumnoMaterium, diasEstudio); } miFecha = miFecha.AddDays(7); } else { miFecha = miFecha.AddDays(1); GuardarActMejorHorario(miFecha, alumnoMaterium, diasEstudio); } } } }
public ActionResult Save(Evento changedEvent, FormCollection actionValues) { String actionType = actionValues["!nativeeditor_status"]; Int64 sourceId = Int64.Parse(actionValues["id"]); Int64 targetId = sourceId; int miCedula = (Int32)Session["cedula"]; IRepositorio<Actividad> repositorioActividad = new ActividadRepositorio(); try { switch (actionType) { case "inserted": { var actividad = new Actividad { Nombre = changedEvent.text, HoraInicio = changedEvent.start_date, HoraFin = changedEvent.end_date, Cedula = miCedula, Tipo = changedEvent.tipo, Periodo = Helper.CalcularPeriodoActual() }; repositorioActividad.Save(actividad); } break; case "deleted": { int id = changedEvent.id; var actividad = repositorioActividad.GetById(id); if (actividad != null) { repositorioActividad.Delete(actividad); } } break; default: // "updated" { int id = changedEvent.id; var actividad = repositorioActividad.GetById(id); if (actividad != null) { actividad.HoraInicio = changedEvent.start_date; actividad.HoraFin = changedEvent.end_date; actividad.Nombre = changedEvent.text; repositorioActividad.Update(actividad); } } break; } } catch { actionType = "error"; } return View(new ActividadActionResponseModel(actionType, sourceId, targetId)); }
public ActionResult Nota(ClaseEvaluacion miEvaluacion) { if (ModelState.IsValid) { var miCedula = (int)Session["cedula"]; //Actualizo la evaluacion con la nota respectiva IRepositorio<ClaseEvaluacion> repositorioClaseEvaluacion = new HorarioClaseRepositorio(); repositorioClaseEvaluacion.Update(miEvaluacion); IRepositorio<Actividad> repositorioActividad = new ActividadRepositorio(); var miActividad = repositorioActividad.GetById(miEvaluacion.IdActividad); IRepositorio<AlumnoMaterium> repositorioAlumnoMateria = new AlumnoMateriumRepositorio(); //Elimino todas las actividades inteligentes luego de hoy y resto las horas acumuladas var misActividadesIEliminar = repositorioActividad.GetAll().Where(a => a.Cedula == miCedula && a.Tipo.CompareTo("Inteligente") == 0 && a.HoraInicio >= _fechaHoy).ToList(); var listCronograma = repositorioClaseEvaluacion.GetAll().Where(alum => alum.Cedula == miCedula); var listActividades = repositorioActividad.GetAll().Where(a => a.Periodo.CompareTo(_periodoActual) == 0); var misMaterias = (from d in listCronograma from c in listActividades where c.Tipo.CompareTo("Clase") == 0 && d.IdActividad == c.IdActividad select c.IdMateria).Distinct().ToList(); foreach (var materia in misMaterias) { double cantHoras = 0; foreach (var actividad in misActividadesIEliminar.Where(a => a.IdMateria == materia).ToList()) { cantHoras += (((actividad.HoraFin - actividad.HoraInicio).TotalSeconds) / 3600.00); repositorioActividad.Delete(actividad); } var mat = repositorioAlumnoMateria.GetAll().Where(aM => aM.IdMateria == materia && aM.Cedula == miCedula). First(); mat.HorasAcumuladas -= cantHoras; repositorioAlumnoMateria.Update(mat); } var miMateria = repositorioAlumnoMateria.GetAll().Where(aM => aM.Cedula == miCedula && aM.IdMateria == miActividad.IdMateria).First(); //HORAS DE ESTUDIO const int x1 = 10; const int y1 = 0; const int x2 = 20; var y2 = (miMateria.HorasPersonales * (miActividad.Ponderacion / 100.00)) * -1; var pendiente1 = (y2 - y1) / (x2 - x1); var factorM = (miEvaluacion.Nota * pendiente1) - y2; miMateria.HorasPersonales += factorM; //MATERIAS y2 = -miMateria.Prioridad * (miActividad.Ponderacion / 100.00); pendiente1 = (y2 - y1) / (x2 - x1); factorM = (miEvaluacion.Nota * pendiente1) - y2; miMateria.Prioridad = miMateria.Prioridad + factorM; repositorioAlumnoMateria.Update(miMateria); //BLOQUES DE ESTUDIO const double pendiente2 = 0.1; var factor = (pendiente2 * miEvaluacion.Nota - 1) * (miEvaluacion.Rating / 100.00); IRepositorio<HorarioPreferencia> repositorioHorarioPref = new HorarioPreferenciaRepositorio(); var misPreferencias = repositorioHorarioPref.GetAll().Where(p => p.Cedula == miCedula && p.Tipo.CompareTo("Definitivo") == 0).ToList(); var actividadesIAnteriores = repositorioActividad.GetAll().Where(a => a.Cedula == miCedula && a.Tipo.CompareTo("Inteligente") == 0 && a.IdMateria == miMateria.IdMateria && a.HoraInicio < _fechaHoy).ToList(); var misActividadesIAnteriores = new List<Actividad>(); foreach (var actividadIAnterior in actividadesIAnteriores) { var hI = new DateTime(2012, 01, 01, actividadIAnterior.HoraInicio.Hour, 0, 0); var hF = new DateTime(2012, 01, 01, actividadIAnterior.HoraFin.Hour, 0, 0); var actividad = new Actividad() { Cedula = actividadIAnterior.Cedula, FechaFinRepeticion = actividadIAnterior.FechaFinRepeticion, HoraFin = hF, HoraInicio = hI, IdActividad = actividadIAnterior.IdMateria, IdMateria = actividadIAnterior.IdMateria, IsMyComboDisabled = actividadIAnterior.IsMyComboDisabled, IsRepetible = actividadIAnterior.IsRepetible, Materia = actividadIAnterior.Materia, Nombre = actividadIAnterior.Nombre }; if (!misActividadesIAnteriores.Contains(actividad)) { misActividadesIAnteriores.Add(actividad); } } foreach (var actividadesIAnteriore in misActividadesIAnteriores) { foreach (var horarioPreferencia in misPreferencias) { if (horarioPreferencia.HoraInicio.Hour == actividadesIAnteriore.HoraInicio.Hour) { var hora = horarioPreferencia.HoraInicio; while (hora.Hour <= actividadesIAnteriore.HoraFin.Hour) { horarioPreferencia.Preferencia = horarioPreferencia.Preferencia + factor; repositorioHorarioPref.Update(horarioPreferencia); hora = hora.AddHours(1); } } } } if (misActividadesIEliminar.Count > 0) { //Calculo nuevamente las actividades inteligentes var accountController = new AccountController(); accountController.ActividadesInteligentes(miCedula); } return RedirectToAction("Index"); } return View(miEvaluacion); }
public ActionResult Nota(int id) { var miCedula = (int)Session["cedula"]; IRepositorio<ClaseEvaluacion> repositorioClaseEvaluacion = new HorarioClaseRepositorio(); var miEvaluacion = repositorioClaseEvaluacion.GetAll().Where(cE => cE.IdActividad == id && cE.Cedula == miCedula).First(); IRepositorio<Actividad> repositorioActividad = new ActividadRepositorio(); var miActividad = repositorioActividad.GetById(miEvaluacion.IdActividad); var listCronograma = repositorioClaseEvaluacion.GetAll().Where(alum => alum.Cedula == miCedula); var listActividades = repositorioActividad.GetAll().Where(a => a.Periodo.CompareTo(_periodoActual) == 0); var misActividadesEvaluacion = (from d in listCronograma from c in listActividades where c.Tipo.CompareTo("Evaluacion") == 0 && d.IdActividad == c.IdActividad select c).ToList(); var fechaMin = DateTime.Now; int? idActividad = 0; //Busco una actividad evaluativa de la misma materia anterior a esta foreach (var actividad in misActividadesEvaluacion) { if (actividad.HoraFin < fechaMin && actividad.HoraFin < miActividad.HoraInicio && actividad.IdActividad != miActividad.IdActividad && actividad.IdMateria == miActividad.IdMateria) { fechaMin = actividad.HoraFin; idActividad = actividad.IdActividad; } } List<Actividad> actividadesIAnteriores; if (idActividad != 0) { var actividadAnterior = repositorioActividad.GetById(idActividad); actividadesIAnteriores = repositorioActividad.GetAll().Where(a => a.Cedula == miCedula && a.Tipo.CompareTo("Inteligente") == 0 && a.IdMateria == miActividad.IdMateria && a.HoraInicio < miActividad.HoraInicio && a.HoraInicio > actividadAnterior.HoraInicio).ToList(); } else { actividadesIAnteriores = repositorioActividad.GetAll().Where(a => a.Cedula == miCedula && a.Tipo.CompareTo("Inteligente") == 0 && a.IdMateria == miActividad.IdMateria && a.HoraInicio < miActividad.HoraInicio).ToList(); } double numHoras = 0; foreach (var actividad in actividadesIAnteriores) { numHoras += (((actividad.HoraFin - actividad.HoraInicio).TotalSeconds)/3600.00); } miEvaluacion.CantidadHoras = numHoras; miEvaluacion.Actividad = miActividad; IRepositorio<Materium> repositorioMateria = new MateriumRepositorio(); miEvaluacion.Materium = repositorioMateria.GetById(miActividad.IdMateria); miEvaluacion.Rating = 50; return View(miEvaluacion); }
// // GET: /Actividad/Edit/5 public ActionResult Edit(int id) { IRepositorio<Actividad> repoActividad = new ActividadRepositorio(); Actividad actividad = repoActividad.GetById(id); IRepositorio<Materium> repositorioMateria = new MateriumRepositorio(); if (actividad.Tipo.CompareTo("Extracurricular") != 0) { actividad.Materia = repositorioMateria.GetById(actividad.IdMateria); } var miCedula = (Int32)Session["cedula"]; IRepositorio<ClaseEvaluacion> repositorioClaseEvaluacion = new HorarioClaseRepositorio(); IRepositorio<Actividad> repositorioActividad = new ActividadRepositorio(); var listCronograma = repositorioClaseEvaluacion.GetAll().Where(alum => alum.Cedula == miCedula); var listActividades = repositorioActividad.GetAll().Where(a => a.Periodo.CompareTo(_periodoActual) == 0); var misMaterias = (from d in listCronograma from c in listActividades where c.Tipo.CompareTo("Clase") == 0 && d.IdActividad == c.IdActividad select c.IdMateria).Distinct().ToList(); IList<String> nombresMaterias = misMaterias.Select(mat => repositorioMateria.GetById(mat).Nombre).ToList(); ViewData["Materia.Nombre"] = new SelectList(nombresMaterias); return View(actividad); }
// // GET: /Actividad/Delete/5 public ActionResult Delete(int id) { if (ModelState.IsValid) { IRepositorio<Actividad> myRepoActividad = new ActividadRepositorio(); var actividad = myRepoActividad.GetById(id); String resultado = myRepoActividad.Delete(actividad); if (resultado.Equals("true")) { if (actividad.Tipo.CompareTo("Inteligente") == 0) { var miCedula = (int)Session["cedula"]; IRepositorio<AlumnoMaterium> repositorioAlumnoMateria = new AlumnoMateriumRepositorio(); var alumnoMateria = repositorioAlumnoMateria.GetAll().Where( am => am.Cedula == miCedula && am.IdMateria == actividad.IdMateria).First(); alumnoMateria.HorasAcumuladas -= ((actividad.HoraFin - actividad.HoraInicio).Minutes / 60.00); repositorioAlumnoMateria.Update(alumnoMateria); } return RedirectToAction("Index"); } } return RedirectToAction("Index"); }