public ActionResult Index() { var user = Membership.GetUser(); if (user != null) { IRepositorio<Alumno> repositorioAlumno = new AlumnoRepositorio(); var alumno = repositorioAlumno.GetByUniqueAtribute(user.UserName); IRepositorio<Profesor> repositorioProfesor = new ProfesorRepositorio(); var profesor = repositorioProfesor.GetByUniqueAtribute(user.UserName); if (alumno != null || profesor != null) { Session["cedula"] = (alumno != null ? alumno.Cedula : profesor.Cedula); } } var miCedula = (Int32)Session["cedula"]; IRepositorio<Materium> repositorioMaterium = new MateriumRepositorio(); IRepositorio<AlumnoMaterium> repositorioAlumnoMat = new AlumnoMateriumRepositorio(); var materias = (from alumnoMat in repositorioAlumnoMat.GetAll() where alumnoMat.Cedula == miCedula select alumnoMat).ToList(); var misMaterias = materias.Select(alumnoMaterium => repositorioMaterium.GetById(alumnoMaterium.IdMateria)).ToList(); return View(misMaterias); }
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); }
public ActionResult Register(Alumno alumno) { if (ModelState.IsValid) { if (alumno.Password == alumno.ConfirmPassword) { IRepositorio<Profesor> repositorioProfesor = new ProfesorRepositorio(); var miProfesor = repositorioProfesor.GetByUniqueAtribute(alumno.Username); IRepositorio<Alumno> repositorioAlumno = new AlumnoRepositorio(); var miAlumno = repositorioAlumno.GetByUniqueAtribute(alumno.Username); if (miProfesor == null && miAlumno == null) { MembershipCreateStatus createStatus = MembershipService.CreateUser(alumno.Username, alumno.Password, alumno.CorreoUcab); if (createStatus == MembershipCreateStatus.Success) { if (Roles.RoleExists("Estudiante")) { Roles.AddUserToRole(alumno.Username, "Estudiante"); } else { Roles.CreateRole("Estudiante"); Roles.AddUserToRole(alumno.Username, "Estudiante"); } alumno.CreationDate = DateTime.Today; alumno.Sexo = alumno.Sexo == "Masculino" ? "M" : "F"; string resultado = repositorioAlumno.Save(alumno); if (resultado.Equals("true")) { 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 misMaterias = (from d in listCronograma from c in listActividades where c.Tipo.CompareTo("Clase") == 0 && d.IdActividad == c.IdActividad select c.IdMateria).Distinct().ToList(); HorasPersonales(misMaterias, alumno); Session["cedula"] = repositorioAlumno.GetByUniqueAtribute(alumno.Username).Cedula; return RedirectToAction("Configuration", alumno); } 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(alumno); }
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); }
// ************************************** // URL: /Account/LogOn // ************************************** public ActionResult LogOn() { var user = Membership.GetUser(); if (user != null) { IRepositorio<Alumno> repositorioAlumno = new AlumnoRepositorio(); var alumno = repositorioAlumno.GetByUniqueAtribute(user.UserName); IRepositorio<Profesor> repositorioProfesor = new ProfesorRepositorio(); var profesor = repositorioProfesor.GetByUniqueAtribute(user.UserName); if (alumno != null || profesor != null) { Session["cedula"] = (alumno != null ? alumno.Cedula : profesor.Cedula); } else { LogOff(); } if (Roles.IsUserInRole("Profesor")) { return RedirectToAction("IndexProfesor", "Home"); } else { return RedirectToAction("Index", "Home"); } } return View(); }