/// <summary> /// Anota el alumno a la materia provista mediante su ID provista, verifica que no se repita ni que el horario ya este ocupado /// </summary> /// <param name="id">Id de la materia</param> /// <param name="usuarioProvisto">Usuario de la sesion</param> /// <returns></returns> public static string AnotarAlumnoACurso(int id, User usuarioProvisto) { SqlUserData sqlUser = new SqlUserData(); SqlAlumnoData sqlAlumno = new SqlAlumnoData(); SqlProfesorData sqlProfesor = new SqlProfesorData(); SqlMateriaData sqlMateria = new SqlMateriaData(); string mensaje = ""; ///GUARDO EN USUARIO LA INFORMACIO DEL USUARIO GUARDADO EN SESSION var usuario = sqlUser.EncontrarUsuario(usuarioProvisto); /// A PARTIR DE LA ID DEL USUARIO BUSCO EL ALUMNO QUE COINCIDA var alumno = sqlAlumno.Obtener(usuario.Id); ///BUSCO LA MATERIA QUE COINCIDA CON LA ID RECIBIDA var materia = sqlMateria.Obtener(id); if (alumno != null && materia != null && usuario != null) { if (materia.CupoUtilizado < materia.CupoMaximoAlumnos) { if (alumno.ListaMaterias != "") { /// BUSCA COINCIDENCIA DE ID DE MATERIA DENTRO DE LA LISTA MATERIAS DEL ALUMNOS, DEVUELVE TRUE SI ENCONTRO QUE LA MATERIA YA ESTABA EN LA LISTA if (alumno.ListaMaterias.Split(',').Contains(materia.Id.ToString())) { return(mensaje = $"Ya estas anotado a la materia {materia.Nombre}!"); } else { ///VERIFICAR QUE NO ESTE INSCRIPTO EN OTRAS MATERIAS MISMO HORARIO foreach (var item in alumno.ListaMaterias.Split(',')) { /// SI LA MATERIA CONCIDE EN HORARIO CON ALGUNA MATERIA EN LA LISTA NO SE PUEDE ANOTAR if (sqlMateria.Obtener(int.Parse(item)).Horario == materia.Horario) { return(mensaje = $"El horario de esta materia coincide con otra en la que estas anotado!"); } } } /// SI LA MATERIA NO SE REPITE Y NO SE SUPERPONE CON OTRA, SE AGREGA UNA COMTA AL STRING alumno.ListaMaterias += ","; } /// Y SE AGREGA LA MATERIA A LA LISTA alumno.ListaMaterias = alumno.ListaMaterias + materia.Id; materia.CupoUtilizado++; sqlMateria.Actualizar(materia); sqlAlumno.Actualizar(alumno); mensaje = $"Anotado en la materia {materia.Nombre} con exito!"; } else { mensaje = $"Ya no hay cupo disponible para la materia {materia.Nombre}"; } } else { mensaje = "ERROR no se pudo realizar la accion"; } return(mensaje); }
/// <summary> /// Obtiene materia de la base de datos de acuerdo a la id provista /// </summary> /// <param name="id">Id de la materia</param> /// <returns>Materia encontrada, sino null</returns> static public Materia ObtenerMateria(int id) { SqlMateriaData sqlMateria = new SqlMateriaData(); return(sqlMateria.Obtener(id)); }