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); }
public ActionResult RegisterProfesor(Profesor profesor) { if (ModelState.IsValid) { if (profesor.Password == profesor.ConfirmPassword) { IRepositorio<Profesor> repositorioProfesor = new ProfesorRepositorio(); var miProfesor = repositorioProfesor.GetByUniqueAtribute(profesor.Username); IRepositorio<Alumno> repositorioAlumno = new AlumnoRepositorio(); var miAlumno = repositorioAlumno.GetByUniqueAtribute(profesor.Username); if (miProfesor == null && miAlumno == null) { MembershipCreateStatus createStatus = MembershipService.CreateUser(profesor.Username, profesor.Password, profesor.Nombre.Substring(0, 1) + profesor.Apellido + "@ucab.edu.ve"); if (createStatus == MembershipCreateStatus.Success) { if (Roles.RoleExists("Profesor")) { Roles.AddUserToRole(profesor.Username, "Profesor"); } else { Roles.CreateRole("Profesor"); Roles.AddUserToRole(profesor.Username, "Profesor"); } profesor.CreationDate = DateTime.Today; var prof = repositorioProfesor.GetById(profesor.Cedula); var flag = prof == null ? repositorioProfesor.Save(profesor) : repositorioProfesor.Update(profesor); if (flag.CompareTo("true") == 0) { Session["cedula"] = profesor.Cedula; IRepositorio<Actividad> repositorioActividad = new ActividadRepositorio(); var listActividades = repositorioActividad.GetAll().Where(a => a.Profesor == profesor.Cedula && a.Periodo.CompareTo(_periodoActual) == 0 && a.Tipo.CompareTo("Clase") == 0).ToList(); var misMaterias = new List<Materium>(); IRepositorio<Materium> repositorioMateria = new MateriumRepositorio(); foreach (var actividad in listActividades) { var materia = repositorioMateria.GetById(actividad.IdMateria); materia.Seccion = actividad.Seccion; if (!misMaterias.Contains(materia)) { misMaterias.Add(materia); } } profesor.Materiums = misMaterias; FormsService.SignIn(profesor.Username, false /* createPersistentCookie */); return View("ConfigurationProfesor", profesor); } else { ModelState.AddModelError("saveAlumno", "Oops! Ha ocurrido un error inesperado, vuelva a intentarlo."); } } else { ModelState.AddModelError("passOrUsername", AccountValidation.ErrorCodeToString(createStatus)); } } else { ModelState.AddModelError("passOrUsername", "Oops!! El nombre de usuario ya existe, por favor intente con otro."); } } else { ModelState.AddModelError("contrasenia", "Las contraseñas no coinciden."); } } return View(profesor); }
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); } } }