Source: modelos/modelo.js

/**
  Modelo de la aplicación.
  Se responsabiliza del mantenimiento y gestión de los datos.
  Utiliza el Servicio de Rest.
**/

// Servicios
import { Rest } from '../servicios/rest.js'

/**
  Modelo de la aplicación.
  Se responsabiliza del mantenimiento y gestión de los datos.
  Utiliza el Servicio de Rest.
**/
export class Modelo {
  /**
    Devuelve la lista de alumnos de un profesor.
    La lista está formada por los alumnos que están asignados a los módulos a los que el profesor está asignado.
    @return {Promise} Devuelve la promesa asociada a la petición.
  **/
  getAlumnosProfesor () {
    return Rest.get('alumno', ['profesor'])
  }

  /**
    Devuelve la lista de tareas de un alumno.
    @param alumno {Alumno} Datos del alumno.
    @return {Promise} Devuelve la promesa asociada a la petición.
  **/
  getTareasAlumno (alumno) {
    const queryParams = new Map()
    queryParams.set('id', alumno.id)
    return Rest.get('tarea', ['alumno'], queryParams)
  }

  /**
    Devuelve la lista de actividades definidas.
    @param idCurso {Number} Identificador del curso.
    @return {Promise} Devuelve la promesa asociada a la petición.
  **/
  getActividades (idCurso) {
    return Rest.get('actividad', [idCurso])
  }

  /**
    Devuelve la lista de calificaciones definidas.
    @return {Promise} Devuelve la promesa asociada a la petición.
  **/
  getCalificaciones () {
    return Rest.get('calificacion')
  }

  /**
    Devuelve la lista de periodos definidos.
    @return {Promise} Devuelve la promesa asociada a la petición.
  **/
  getPeriodos () {
    return Rest.get('periodo')
  }

  /**
    Crea una tarea.
    @param tarea {Tarea} Datos de la tarea.
    @return {Promise} Devuelve la promesa asociada a la petición.
  **/
  crearTarea (tarea) {
    return Rest.post('tarea', [], tarea)
  }

  /**
    Devuelve los datos de una tarea.
    @param idTarea {Number} Identificador de la tarea.
    @return {Promise} Devuelve la promesa asociada a la petición.
  **/
  getTarea (idTarea) {
    return Rest.get('tarea', [idTarea])
  }

  /**
    Modifica una tarea.
    @param tarea {Tarea} Datos de la tarea.
    @return {Promise} Devuelve la promesa asociada a la petición.
  **/
  modificarTarea (tarea) {
    return Rest.put('tarea', [], tarea)
  }

  /**
    Borrar una tarea.
    @param tarea {Tarea} Datos de la tarea.
    @return {Promise} Devuelve la promesa asociada a la petición.
  **/
  borrarTarea (tarea) {
    return Rest.delete('tarea', [tarea.id])
  }

  /**
    Devuelve la información del informe de evaluación de un alumno.
    @param alumno {Alumno} Datos del alumno.
    @param periodo {Number} Identificador del periodo para el que se solicita el informe.
    @return {Promise} Devuelve la promesa asociada a la petición.
  **/
  getInformeAlumno (alumno, periodo) {
    const queryParams = new Map()
    queryParams.set('id_alumno', alumno.id)
    queryParams.set('id_periodo', periodo)
    return Rest.get('informe', [], queryParams)
  }

  /**
    Devuelve la lista de ciclos definidos.
    @return {Promise} Devuelve la promesa asociada a la petición.
  **/
    getCursos () {
      return Rest.get('curso')
    }
    /**
    Devuelve la lista de actividades del alumno con su nota media.
    @return {Promise} Devuelve la promesa asociada a la petición.
  **/
    getActividadNotas (id,periodo) {
      const queryParams = new Map()
      queryParams.set('id_alumno', id)
      queryParams.set('periodo', periodo)
      return Rest.get('actividad', ['actividadNota'], queryParams)
    }
    /**
    Devuelve la lista de módulos del alumno con su nota media.
    @return {Promise} Devuelve la promesa asociada a la petición.
  **/
    getModulosNotas (id,periodo) {
      const queryParams = new Map()
      queryParams.set('id_alumno', id)
      queryParams.set('periodo', periodo)
      return Rest.get('modulo', ['moduloNota'], queryParams)
    }

    getEmpresas(){
        return Rest.get('empresa')
    }

    /**
     * Crea una empresa.
     * @param {Empresa} empresa - Datos de la empresa.
     * @return {Promise} - Devuelve la promesa asociada a la petición.
     */
    crearEmpresa(empresa) {
      return Rest.post('empresa', [], empresa);
    }

    /**
     * Borra una empresa por su ID.
     * @param {number} id - ID de la empresa a borrar.
     * @return {Promise} - Devuelve la promesa asociada a la petición.
     */
    borrarEmpresa(id) {
      return Rest.delete('empresa', [id]);
    }

    /**
     * Obtiene los datos de una empresa por su ID.
     * @param {number} id - ID de la empresa.
     * @return {Promise} - Devuelve la promesa asociada a la petición.
     */
    getEmpresaById(id) {
      return Rest.get('empresa', [id]);
    }

    /**
     * Edita una empresa.
     * @param {Empresa} datosdelaempresa - Datos actualizados de la empresa.
     * @return {Promise} - Devuelve la promesa asociada a la petición.
     */
    editarEmpresa(datosdelaempresa) {
      return Rest.put('empresa', [], datosdelaempresa);
    }

      /**
   Devuelve la lista de alumnos por curso.
   La lista está formada por los alumnos que están asignados a un curso.
   @return {Promise} Devuelve la promesa asociada a la petición.
   **/
  getAlumnosByCurso (curso) {
    const queryParams = new Map()
    queryParams.set('curso', curso)
    return Rest.get('gestionalumnos', [], queryParams)
  }

  /**
   Borrar un alumno.
   @param alumnoId {Number} Identificador del alumno.
   @return {Promise} Devuelve la promesa asociada a la petición.
   **/
  borrarAlumno (alumnoId) {
    return Rest.delete('gestionalumnos', [alumnoId])
  }

  /**
   * Realiza el alta de un alumno.
   * @param alumno {} Datos del alumno.
   * @returns {Promise} Devuelve la promesa asociada a la petición.
   */
  altaAlumno (alumno) {
    return Rest.post('gestionalumnos', [], alumno)
  }

  /**
   * Modifica un alumno.
   * @param alumno {} Datos del alumno.
   * @returns {Promise} Devuelve la promesa asociada a la petición.
   */
  modificarAlumno (alumno) {
    return Rest.put('gestionalumnos', [], alumno)
  }

  /**
   * Peticion que realiza una inserccion de un convenio.
   * @param datos - {Object} Datos del convenio.
   * @returns {Promise} Devuelve la promesa asociada a la petición.
   */
  insertarConvenio (datos) {
    return Rest.post('convenio', [], datos, false)
  }

  /**
   * Peticion que devuelve los datos de un ciclo por su id.
   * @param id - {Number} Identificador del ciclo.
   * @returns {Promise} Devuelve la promesa asociada a la petición.
   */
  recibirDatosCiclo () {
    return Rest.get('ciclo')
  }

  /**
   * Peticion que devuelve los datos de las empresas.
   * @returns {Promise} Devuelve la promesa asociada a la petición.
   */
  recibirDatosEmpresa () {
    return Rest.get('empresa')
  }

  /**
   * Peticion que devuelve los datos de los convenios.
   * @returns {Promise} Devuelve la promesa asociada a la petición.
   */
  recibirDatosConvenios () {
    return Rest.get('convenio')
  }

  /**
   * Peticion que edita los datos de un convenio por su id.
   * @param id - {Number} Identificador del convenio.
   * @returns {Promise} Devuelve la promesa asociada a la petición.
   */
  editarConvenio (id, datos) {
    return Rest.put('convenio', [id], datos)
  }

  /**
   * Peticion que devuelve los datos de un convenio por su id.
   * @param id - {Number} Identificador del convenio.
   * @returns {Promise} Devuelve la promesa asociada a la petición.
   */
  getConvenioById (id) {
    return Rest.get('convenio', [id])
  }

  /**
   * Peticion que borra un convenio por su id.
   * @param id - {Number} Identificador del convenio.
   * @returns {Promise} Devuelve la promesa asociada a la petición.
   */
  borrarConvenioById (id) {
    return Rest.delete('convenio', [id])
  }

  /**
   Devuelve la lista de profesores por curso.
   La lista está formada por los profesores que están asignados a un curso.
   @return {Promise} Devuelve la promesa asociada a la petición.
   **/
  getProfesores () {
    return Rest.get('gestionprofesores')
  }

  /**
   Borrar un profesor.
   @param profesorId {Number} Identificador del profesor.
   @return {Promise} Devuelve la promesa asociada a la petición.
   **/
  borrarProfesor (profesorId) {
    return Rest.delete('gestionprofesores', [profesorId])
  }

  /**
   * Realiza el alta de un profesor.
   * @param profesor {} Datos del profesor.
   * @returns {Promise} Devuelve la promesa asociada a la petición.
   */
  altaProfesor (profesor) {
    return Rest.post('gestionprofesores', [], profesor)
  }

  /**
   * Modifica un profesor.
   * @param profesor {} Datos del profesor.
   * @returns {Promise} Devuelve la promesa asociada a la petición.
   */
  modificarProfesor (profesor) {
    return Rest.put('gestionprofesores', [], profesor)
  }
}