Notificaciones


Routes

Method URI Action
GET /notifications index
GET /notifications/{id} show
POST /notifications store
DELETE /notifications/{id} delete
GET /students/{id}/notifications index

Model Attributes

{
  "id": 1,
  "type": 1,                                 // ver referencia de tipos
  "title": "mi titulo",
  "content": "Contenido de mi notificación",
  "attachment": null,                        // (String) Archivo adjunto subido
  "created_at": "2020-04-15 16:54:54",
  "updated_at": "2020-04-15 17:06:31",
  "sender_user_id": 1                        // ID del usuario que envio la notificación
}

Tipos de Notificaciones

Type Value Description
Todos los usuarios 1 Esta notificación sera enviada a todos los usuarios
Todos los administradores 2 Esta notificación sera enviada a todos los administradores
Todos los coordinadores 3 Esta notificación sera enviada a todos los coordinadores
Todos los profesores 4 Esta notificación sera enviada a todos los profesores
Todos los estudiantes 5 Esta notificación sera enviada a todos los estudiantes
Notificación automática 6 Notificación generada automáticamente por el sistema según acciones
Notificación individual 7 Esta notificación sera enviada a un usuario especifico
Estudiantes de una sección 8 Esta notificación fue enviada a estudiantes de una sección
Estudiantes de una materia/seccion 9 Esta notificación fue enviada a estudiantes de una materia/sección

Relations

Solo el remitente puede cargar los receptores, cuando un recepto es el que acciona la ruta show solo podrá cargar el remitente.

  • Pertenece a un remitente BelongsTo sender
  • Pertenece a muchos receptores BelongsToMany receivers

Index

Obtiene las notificaciones recibidas del usuario autenticado

{primary} si se envia ?sent en el query string se obtendra la lista de las notificaciones enviadas por el usuario autenticado

Route GET /notifications

Policies

  • usuario habilitado

Filters extends Query Filters

Filter Description
sent Se obtienen las notificaciones enviadas por el usuario en vez de las recibidas.
type=int Filtra por tipo de notificación
receiver_user=id Obtiene las notificaciones enviadas a el usuario especifico
with=sender El with funciona distinto aqui, solo permite cargar quien envio la notificación.

Response 200

Notificaciones recibidas

// Lista de recibidas
[
  {
    "id": 1,
    "content": "Consectetur perspiciatis natus adipisci recusandae est expedita...",
    "type": 7,
    "attachment": null,
    "created_at": "2020-04-16 12:22:30",
    "updated_at": "2020-04-16 12:22:30",
    "sender_user_id": 1,
    "pivot": {
      "user_id": 2,
      "notification_id": 1,
      "read_at": null, // Si ya se marco como leida presentara un DateTime
      "created_at": "2020-04-16 12:22:30",
      "updated_at": "2020-04-16 12:22:30"
    }
  }
]

Notificaciones enviadas

// Lista de enviadas
[
  {
    "id": 1,
    "content": "Et dolores quia deserunt molestiae. Nesciunt velit similique aut. Aliquam iure dolor ut qui placeat. Voluptatum sit itaque eaque eum doloremque veniam. Sit nihil voluptatum hic fugit.",
    "type": 1,
    "attachment": null,
    "created_at": "2020-04-16 12:29:31",
    "updated_at": "2020-04-16 12:29:31",
    "sender_user_id": 1
  }
]

Store

Dependiendo del tipo de notificacion, esta sera reflejada a los usuarios, el usuario del request sera considerado como el remitente

Route POST /notifications

Policies

  • admins
  • coordinadores
  • profesores

Request Body

{
  "title": "nullable|string",
  "content": "required|string",
  "type": "required|integer|in:{types}",
  "attachment": "nullable|file",                // Optional Attachment
  "receiver_user_id": "integer|exists:users,id" // Solo requerido y utilizado cuando type=7
}

Delete

Cuando se elimina una notificación esta desaparece de todos sus receptores relacionados

Route DELETE /notifications/{id}

Policies

-Usuario que envío la notificación


Marcar Como Leída

Esta acción solo funcionará si el usuario que la acciona es un remitente de la notificación especificada.

Route PATCH /notifications/{id}/mark-as-read

Policies

  • Usuario que recibe la notificación

Notificaciones de estudiantes

Route GET /students/{id}/notifications

Policies

  • admins
  • coordinador que coordine la especialidad del estudiante
  • estudiante relacionado

Filters extends QueryFilters

Filter Description
type=int Filtra por tipo de notificación
with=sender Solo se permite cargar quien envío la notificación.