EthicApp-Development / ethicapp-main

EthicApp's main repository containing backend and frontend applications
MIT License
1 stars 0 forks source link

[api-v2] Flujos de creación de actividad y fases en sesión #325

Closed claudio-alvarez closed 1 week ago

claudio-alvarez commented 1 month ago

Descripción general

Necesitamos implementar los flujos básicos de creación de actividades y fases en la API v2. El funcionamiento de esto (con endpoints necesarios entremedio) sería el siguiente:

El User de tipo Profesor crea una sesión (Session) y es su dueño.

POST /api/v2/sessions

Solamente el User de tipo Profesor que es el dueño de la sesión puede crear una actividad (Activity) dentro de la sesión (Session).

Se crea automáticamente la primera actividad, al invocar:

POST /api/v2/sessions

La actividad (Activity) queda vinculada al diseño (Design) en que se basa. Debe ir el ID del diseño (Design) en un objeto en el cuerpo de la petición POST.

La llamada a POST /sessions debe retornar el objeto de la sesión creada. El objeto de Session debería contener la Activity creada en forma automática. Ambos objetos contienen los IDs de los objetos junto con sus demás atributos.

Una vez que una actividad (Activity) es creada en una sesión (Session), se puede crear la primera fase (Phase) de la Activity de acuerdo a lo que especifica el diseño (Design).

Solamente el User de tipo Profesor que es el dueño de la sesión puede crear la siguiente fase (Phase) asociada a una actividad (Activity), de acuerdo al diseño (Design) en la sesión:

1. POST /api/v2/activities/:id/init_next_phase # Inicia la siguiente fase descrita en el Design
2. GET /api/v2/activities/:id/phases # Lista todas las fases en la actividad
3. PUT /api/v2/phases/:id # Permite modificar una fase

La siguiente fase (1) es creada según lo que especifica el diseño (Design) asociado a la actividad (Activity). Es necesario validar que una fase sólo pueda iniciarse una sola vez.

Entendamos que el diseño (Design) es la "receta" que describe cómo debe configurarse la siguiente fase (Phase) de la actividad (Activity).

Una vez que se crea la fase (Phase) de una actividad (Activity) en una sesión (Session), es posible crear una pregunta (Question) asociada a la fase (Phase).

POST /api/v2/phases/:id/questions # Crear una pregunta en la fase
GET /api/v2/phases/:id/questions # Obtener las preguntas en la fase

Solamente el profesor que es el dueño de la sesión puede crear una pregunta (Question) asociada a una fase (Phase) en una actividad (Activity) en una sesión (Session).

POST /api/v2/questions/id:/responses # Permite crear una respuesta a una pregunta
PUT /api/v2/questions/id:/responses # Permite actualizar una respuesta - sólo su dueño lo puede hacer
GET /api/v2/questions/id:/responses # Permite obtener todas las respuestas a la pregunta - sólo el profesor dueño de la sesión en donde existe la Question lo puede invocar

¿Cuándo se usaría?

Es funcionalidad básica de EthicApp que se utilizaría cada vez que se inicia una sesión (y actividad) en el sistema.