AECC database project.
at master 186 lines 6.5 kB view raw view rendered
1# Introduccion 2 3El proyecto se encuentra en: 4 - https://ada.uprrp.edu/~diego.estrada1/CCOM/4027/db/ 5 6El codigo para el proyecto se encuentra en: 7 - https://codeberg.org/stau/aecc-db/ 8 9## Descripcion general 10 11Este sistema organiza la informacion relacionada a las transacciones de la 12Asociacion de Estudiantes de Ciencia de Computos (AECC) de la Universidad de 13Puerto Rico, Recinto de Rio Piedras. Este sistema tiene 4 tipos de datos 14fundamentales para su uso: 15- productos 16- transacciones 17- miembros de la AECC 18- actividades hechas por la AECC 19 20Un concepto implicito con el uso de este sistema es que todas estas 21transacciones ocurren desde la perspectiva de la cuenta de banco de la AECC. 22Entonces, por ejemplo, una transaccion registrada como debito, es un gasto de 23dinero por parte de la AECC. 24 25### Productos 26 27Un producto es una entidad que tiene un costo, en centavos USD, y una 28descripcion. Por ejemplo, un producto podria ser: la membresia de la AECC, 29tendra un costo de 500 centavos y descripcion como "Membresia anual de la AECC." 30 31### Transacciones 32 33Una transaccion tiene 3 partes importantes: 34- el iniciador de la transaccion 35- el registrador de la transaccion 36- la metadata de la transaccion 37 38#### Iniciador 39 40El iniciador es la persona que inicie la compra o adquiere el producto. Con el 41sistema actual, el iniciador tiene que ser miembro de la AECC. Esto se puede 42resolver creando un miembro "dummy" para registrar transacciones con entidades 43que no sean miembros de la AECC. 44 45#### Registrador 46 47El registrador es la persona que monitorea la compra. Este tiene la 48responsabilidad de verificar que el monto de ingreso o de gasto de la cuenta de 49la AECC sea pagado por completo. Es por esto que se requiere que esta persona 50sea miembro de la directiva de la AECC, sin excepciones. Ademas, se esta 51contemplando restringir los registradores de compra a solo: 52- Tesorero 53- Vice-presidente 54- Presidente 55 56#### Metadata 57 58En la metadata de la transaccion hay informacion como: 59- el producto 60- la cantidad que se compro 61- si la transaccion fue un gasto o un ingreso 62 63### Miembro de la AECC 64 65Un miembro de la AECC puede verificar el estado de su cuenta, si esta activa o 66no simplemente visitando el area de "Members" de la pagina de inicio. Alli, 67tambien se pueden crear miembros nuevos. En el futuro, la AECC piensa tener esta 68area publica para que miembros de la AECC puedan verificar si tienen que pagar 69la subscripcion o no. Ademas, la AECC piensa implementar una manera de "log-in", 70que manejaria quienes tienen permiso para crear cuentas nuevas. Implicitamente, 71se registra una compra cada vez que se crea una cuenta nueva, por lo tanto, esto 72va a ser monitoreado por un integrante de la directiva de la AECC. 73 74### Actividades de la AECC 75 76En el area de "Activities" en la pagina de inicio se pueden ver las actividades 77que la AECC ha hecho. En el futuro, pensamos tener un area de 78"activity-transactions" que nos deja ver todas las transacciones asociadas a una 79actividad. Esto nos seria muy util para encontrar cuanto se gasta o gana por 80actividad. 81 82## Proposito del sistema 83 84Anterior a la implementacion de este sistema, la AECC mantenia los records de 85transacciones a mano y por google sheets. Esto no es muy eficiente y es muy 86tedioso. Ademas, como estudiantes de ciencia de computos, tenemos el 87conocimiento para resolver un problema justo como este. 88 893. Alcance del sistema 90 91### Sistema actual (si fuera el caso) 92 93- No hay un sistema actual. 94 95### Requisitos 961. Funcionales 97 - El sistema debe crear, editar y borrar las transacciones de la AECC. 98 - El sistema debe calcular cuando un usuario debe pagar la membresia. 992. No funcionales 100 - El sistema debe ser facil de usar, ya que ese es uno de los problemas que 101 encontramos con google sheets. 102 - El sitema debe manejar la data de manera segura. 103 - Rendimiento 104 105## API Endpoints 106 107### /api/v1/create/ 108 109```txt 110https://ada.uprrp.edu/~diego.estrada1/CCOM/4027/db/api/v1/create/ 111``` 112 113- permiso: ninguno[2][3] 114- metodo: `POST` 115- parametros: 116 117| Campo | Tipo | Descripcion | 118|---------------|----------|---------------------------------------------------| 119| `t` | `String` | Tabla en la que quieras crear una tupla.[4] | 120| `cents` | `int` | Cantidad de centavos para un `product`. | 121| `description` | `String` | Descripcion para un `product`. | 122 123- respuestas: 124 - Exito: 125 - 201: La tupla se inserto exitosamente. 126 - Devuelve los valores de la tupla en la tabla. 127 - Fallo: 128 - 200: Error con el lenguaje de PHP.[5] 129 - 400: Error con los parametros que se enviaron. 130 - 500: Error insertando la tupla en la tabla. 131 132 133### /api/v1/read/ 134 135```txt 136https://ada.uprrp.edu/~diego.estrada1/CCOM/4027/db/api/v1/read/ 137``` 138 139- permiso: ninguno[2][3] 140- metodo: `POST` 141- parametros: 142 143| Campo | Tipo | Descripcion | 144|---------------|----------|---------------------------------------------------| 145| `t` | `String` | Tabla en la que quieras buscar.[4] | 146| `id` | `int` | ID de la tupla que quieras buscar.[4] | 147| `q` | `String` | Texto que quieras buscar en atributos FULLTEXT. | 148 149- respuestas: 150 - Exito: 151 - 201: Se hizo la busqueda adecuadamente. 152 - Devuelve los valores de las tuplas que se encontraron. 153 - Fallo: 154 - 200: Error con el lenguaje de PHP.[5] 155 - 400: Error con los parametros que se enviaron. 156 - 500: Error buscando tuplas en la tabla. 157 158### /api/v1/update/ 159 160- method: `POST`[1] 161 162### /api/v1/delete/ 163 164- method: `POST`[1] 165 166# Footer 167 168- [1]: Por restricciones de ADA, no se pueden hacer requests de `PUT` o 169 `DELETE`. Por lo tanto, en este proyecto solo se utilizaran `GET` y 170 `DELETE`. 171- [2]: Por restricciones de tiempo el API esta abierto a quien sea. 172- [3]: En el futuro, el permiso sera: `Treasurer`, `President`, `VicePresident`. 173- [4]: Las tablas disponibles son: 174 - `board_member` 175 - `member` 176 - `activity_transaction` 177 - `activity` 178 - `transaction` 179 - `logger` 180 - `initiator` 181 - `product` 182- [5]: Cuando ocurre un error con PHP, la respuesta vuelve como 200 y no hay 183 manera de cambiar eso. 184- [6]: Como esta pagina es un "single page application", este request se ve 185 mejor por `POST` para no afectar el URL de la pagina. Sin embargo, deberia 186 ser por `GET`.