public virtual bool Equals(ClaseEvaluacion obj) { if (obj == null) return false; if (Equals(IdActividad, obj.IdActividad) == false) return false; if (Equals(Cedula, obj.Cedula) == false) return false; if (Equals(Nota, obj.Nota) == false) return false; return true; }
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); }