---
# System prepended metadata

title: MAK 'Autorización de creación de misiones'
tags: [mak, misiones, autorización]

---

---
title: MAK 'Autorización de creación de misiones'
---

Mak - autorización de creación de misiones
---


## INTRO

Este módulo permitirá autorizar la creación de misiones.


### USO:

Este módulo se usará cuando creamos misiones desde la herramienta de `generar_misiones` y tenemos configurado el setting `authorization` con el valor `mi=true`   

Para que funcione correctamente también se deben configurar los usuarios que  autorizarán la creación de misiones, para ello hacemos uso del setting `authorization_role_business` 

### Flujo de Prueba
 - Config. setting `authorization`
 - Generar misiones
 - Ver el registro en la vista de autorización
 - Aceptar|Rechazar la mission como usuario involucrado
 - Procesar generación de misiones
 - Misiones generadas


### Setting authorization_role_business

Lista los roles de negocio, los cuales se usaran para consultar la lista de usuarios disponibles para autorizar

e.g 
```json=4
key: authorization_role_business,
value = ["supervisor", "gerente"]
```



### Mockup
Diseño General de la vista de autorización.

![](https://i.imgur.com/PGQDINh.png)



Actividades
---


#### Módulo de autorización de creación
- [ ] Maquetación de vista de autorizaciones
    - [ ] Listado
    - [ ] Filtros
    - [ ] Status
    - [ ] Progreso de autorización
    - [ ] Invocar acción para procesar la creación de misiones cuando el registro este al 100% autorizado
- [ ] Creación de consultas en GraphQL
- [ ] Autorizar creación de misiones como usuario (Calificar: Click manita arriba/abajo)
- [ ] Crear filtros por status
- [ ] Filtrar por fecha (Range)
- [ ] Consultar lista de autorizaciones

    
    
#### Tabla intermedia autorización

- [ ] Diseñar tabla intermedia para almacenar registros de autorización:
    Uso: Si setting `authorization` es true (value=mi) entonces crear un registro en esta tabla

 ```json
 - authorization
      - id
      - involved: Involved[]
      - target_id: uuid (uuu-iiii-dddd)
      - target_type: string (MI, FR, ROUTE)
      - tenant_id: integer
      - status: integer

  - Involved = {
      user_id: integer,
      status: integer
    } 
    
    - status: 
        - -1: Rechazado 
        - 0: Pendiente
        - 1: Aceptado
```

#### Modificaciones a Generator de Misiones 

- [ ] Agregar nuevo campo published a actions_generator
    - published
        - -1: Rechazado 
        - 0: Pendiente
        - 1: Aceptado

- [ ] Extraer una lista de usuarios a autorizar a partir del setting `authorization_role_business`

- [ ] Agregar [input type=select] de usuarios al formulario de captura datos de misiones

- [ ] Crear un setting para autorización
    Uso:
    1. Si authorized es true en el `setting` mostrar lista de role-system en generador de misiones
    2. Este setting determinará si se manda o no a generar las misiones

    Reglas:
    - Si el setting de autorización el true
        - Mostrar el campo de autorización en el generador de misiones (revisar mock)
    - Si setting de auth es false entonces
        - action importer por default se manda a 1
    
    
    Setting de authorization
       
    ```json=1
        name: authorization,
        value: {
          "mi": {
            "title": "Misiones",
            "value": true
          },
          "fr": {
            "title": "Focos Rojos",
            "value": false
          },
          "routes": {
            "title": "rutas",
            "value": false
          }
        }
    ```

    
### Backend

- [ ] Crear endpoint de votaciones
- [ ] Crear endpoint de disparar generación de misiones







###### tags: `autorización` `misiones` `mak` 

