public ActionResult Create(Actividad Actividad) { IRepositorio<Materium> repositorioMateria = new MateriumRepositorio(); IList<Materium> listaMaterias = repositorioMateria.GetAll(); foreach (var materia in listaMaterias) if (materia.Nombre == Actividad.Materia.Nombre) Actividad.IdMateria = materia.IdMateria; if(ModelState.IsValid) { if (Actividad.HoraInicio > Actividad.HoraFin) { ModelState.AddModelError("FechaInvalida", "La fecha/hora de inicio no puede ser mayor a la fecha/hora fin."); return View(Actividad); } IRepositorio<Actividad> myRepoActividad = new ActividadRepositorio(); String resultado = myRepoActividad.Save(Actividad); if(resultado.Equals("true")) return RedirectToAction("Index"); } return View(Actividad); }
public ActionResult Delete(int id, Actividad Actividad) { return RedirectToAction("Index"); }
public ActionResult Edit(Actividad Actividad) { if(ModelState.IsValid) { IRepositorio<Actividad> myRepoActividad = new ActividadRepositorio(); String resultado = myRepoActividad.Update(Actividad); if (resultado.Equals("true")) return RedirectToAction("Index"); } 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); } }
private void LeerCronogramas(Materium materia) { IRepositorio<Actividad> repositorioActividad = new ActividadRepositorio(); var miCedula = (Int32)Session["cedula"]; var wordApplication = new Microsoft.Office.Interop.Word.Application { Visible = false }; var nameAndLocation = "~/UploadedFiles/" + Path.GetFileName(materia.File.FileName); materia.File.SaveAs(Server.MapPath(nameAndLocation)); object filePath = Server.MapPath(nameAndLocation); object missing = Missing.Value; object readOnly = false; object isVisible = false; Document reportDoc = wordApplication.Documents.Open( ref filePath, ref missing, readOnly, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref isVisible); IRepositorio<ClaseEvaluacion> repositorioClaseEvaluacion = new HorarioClaseRepositorio(); var listActividad = repositorioActividad.GetAll().Where(a => a.Tipo.CompareTo("Clase") == 0).ToList(); var listActividades = (from a in listActividad where a.Periodo.CompareTo(_periodoActual) == 0 && a.Seccion.CompareTo(materia.Seccion) == 0 && a.Profesor == miCedula select a).ToList(); reportDoc.Activate(); for (int j = 1; j <= reportDoc.Tables.Count; j++) { Table tbl = reportDoc.Tables[j]; if (tbl.Rows[1].Cells[1].Range.Text.Contains("Actividad Evaluativa") && tbl.Rows[1].Cells[2].Range.Text.Contains("Porcentaje") && tbl.Rows[1].Cells[3].Range.Text.Contains("Fecha")) { for (int i = 2; i <= tbl.Rows.Count; i++) { var actividadEvaluativa = tbl.Rows[i].Cells[1].Range.Text; var porcentaje = tbl.Rows[i].Cells[2].Range.Text; var fecha = tbl.Rows[i].Cells[3].Range.Text; var f = Convert.ToDateTime(fecha.Substring(0, fecha.Length - 2)); var actividad = new Actividad { Nombre = actividadEvaluativa.Substring(0, actividadEvaluativa.Length - 2), IdMateria = materia.IdMateria, Periodo = _periodoActual, Ponderacion = Convert.ToInt32(porcentaje.Substring(0, porcentaje.Length - 2)), Profesor = miCedula, Seccion = materia.Seccion, Tipo = "Evaluacion" }; var act = (from a in listActividad where a.Periodo.CompareTo(_periodoActual) == 0 & a.HoraFin.Date.CompareTo(f.Date) == 0 & a.IdMateria == materia.IdMateria && a.Profesor == miCedula select a).ToList(); if (act.Count() != 0) { var acti = act.First(); actividad.HoraInicio = acti.HoraInicio; actividad.HoraFin = acti.HoraFin; } else { actividad.HoraInicio = new DateTime(f.Year, f.Month, f.Day, 7, 0, 0); actividad.HoraFin = new DateTime(f.Year, f.Month, f.Day, 9, 0, 0); } repositorioActividad.Save(actividad); if (listActividades.Count() > 0) { var alumnosInscritos = repositorioClaseEvaluacion.GetAll().Where( cE => cE.IdActividad == listActividades.First().IdActividad).ToList(); foreach (var alumnosInscrito in alumnosInscritos) { var claseEvaluacion = new ClaseEvaluacion { Cedula = alumnosInscrito.Cedula, IdActividad = actividad.IdActividad }; repositorioClaseEvaluacion.Save(claseEvaluacion); } } } } } reportDoc.Close(); wordApplication.Quit(); }
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 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 Edit(Actividad Actividad) { if (ModelState.IsValid) { IRepositorio<Actividad> myRepoActividad = new ActividadRepositorio(); String resultado = myRepoActividad.Update(Actividad); if (resultado.Equals("true")) return RedirectToAction("Index"); } 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(); IRepositorio<Materium> repositorioMateria = new MateriumRepositorio(); IList<String> nombresMaterias = misMaterias.Select(mat => repositorioMateria.GetById(mat).Nombre).ToList(); ViewData["Materia.Nombre"] = new SelectList(nombresMaterias); return View(Actividad); }
public ActionResult CreateProfesor(Actividad actividad) { actividad.Tipo = "Evaluacion"; if (actividad.HoraInicio > actividad.HoraFin) { ModelState.AddModelError("FechaInvalida", "La fecha/hora de inicio no puede ser mayor a la fecha/hora fin."); return View(actividad); } IRepositorio<Actividad> myRepoActividad = new ActividadRepositorio(); String resultado = myRepoActividad.Save(actividad); var miCedula = (Int32)Session["cedula"]; IRepositorio<Actividad> repositorioActividad = new ActividadRepositorio(); IList<Actividad> listaActividad = repositorioActividad.GetAll(); IRepositorio<Materium> repositorioMateria = new MateriumRepositorio(); var misMaterias = (from alumnoMat in listaActividad where alumnoMat.Profesor == miCedula select alumnoMat.IdMateria).Distinct().ToList(); IList<String> nombresMaterias = misMaterias.Select(mat => repositorioMateria.GetById(mat).Nombre).ToList(); ViewData["Materia.Nombre"] = new SelectList(nombresMaterias); return View(actividad); }
public ActionResult CreateProfesor() { var actividad = new Actividad { IsMyComboDisabled = true, IsRepetible = false }; var miCedula = (Int32)Session["cedula"]; IRepositorio<Actividad> repositorioActividad = new ActividadRepositorio(); IList<Actividad> listaActividad = repositorioActividad.GetAll(); var misMaterias = (from alumnoMat in listaActividad where alumnoMat.Profesor == miCedula select alumnoMat.IdMateria).Distinct().ToList(); IRepositorio<Materium> repositorioMateria = new MateriumRepositorio(); IList<String> nombresMaterias = misMaterias.Select(mat => repositorioMateria.GetById(mat).Nombre).ToList(); ViewData["Materia.Nombre"] = new SelectList(nombresMaterias); return View(actividad); }
public ActionResult Create(Actividad Actividad) { IRepositorio<Materium> repositorioMateria = new MateriumRepositorio(); if (ModelState.IsValid) { IList<Materium> listaMaterias = repositorioMateria.GetAll(); if (Actividad.IsRepetible) { if (Actividad.FechaFinRepeticion == new DateTime(0001, 01, 01, 0, 0, 0)) { ModelState.AddModelError("Repetible", "Debes indicar hasta cuando se debe repetir la actividad"); return View(Actividad); } if (Actividad.FechaFinRepeticion <= DateTime.Now) { ModelState.AddModelError("Repetible", "La fecha final de repeticion debe ser mayor al dia de hoy."); return View(Actividad); } if (Actividad.Tipo.CompareTo("Clase") == 0 || Actividad.Tipo.CompareTo("Estudio") == 0) { ModelState.AddModelError("Repetible", "Las Evaluaciones ni las actividades de estudios se pueden repetir"); return View(Actividad); } } if (Actividad.Tipo.CompareTo("Extracurricular") != 0) { foreach (var materia in listaMaterias) if (materia.Nombre == Actividad.Materia.Nombre) Actividad.IdMateria = materia.IdMateria; } if (Actividad.HoraInicio > Actividad.HoraFin) { ModelState.AddModelError("FechaInvalida", "La fecha/hora de inicio no puede ser mayor a la fecha/hora fin."); return View(Actividad); } IRepositorio<Actividad> myRepoActividad = new ActividadRepositorio(); String resultado = myRepoActividad.Save(Actividad); if (Actividad.IsRepetible) { while (Actividad.HoraInicio < Actividad.FechaFinRepeticion) { Actividad.HoraInicio = Actividad.HoraInicio.AddDays(7); Actividad.HoraFin = Actividad.HoraFin.AddDays(7); myRepoActividad.Save(Actividad); } } } else { Actividad.IsMyComboDisabled = Actividad.Tipo.CompareTo("Extracurricular") == 0; } var miCedula = (Int32)Session["cedula"]; IRepositorio<AlumnoMaterium> repositorioAlumnoMateria = new AlumnoMateriumRepositorio(); IList<AlumnoMaterium> listaAlumnoMaterium = repositorioAlumnoMateria.GetAll(); var misMaterias = (from alumnoMat in listaAlumnoMaterium where alumnoMat.Cedula == miCedula select alumnoMat).ToList(); IList<String> nombresMaterias = misMaterias.Select(mat => repositorioMateria.GetById(mat.IdMateria).Nombre).ToList(); ViewData["Materia.Nombre"] = new SelectList(nombresMaterias); return View(Actividad); }
public virtual bool Equals(Actividad obj) { if (obj == null) return false; if (Equals(HoraFin, obj.HoraFin) == false) return false; if (Equals(HoraInicio, obj.HoraInicio) == false) return false; if (Equals(IdActividad, obj.IdActividad) == false) return false; if (Equals(IdMateria, obj.IdMateria) == false) return false; if (Equals(Periodo, obj.Periodo) == false) return false; if (Equals(Ponderacion, obj.Ponderacion) == false) return false; return true; }