Introduccion#
El proyecto se encuentra en: - https://ada.uprrp.edu/~diego.estrada1/CCOM/4027/db/
El codigo para el proyecto se encuentra en: - https://codeberg.org/stau/aecc-db/
Descripcion general#
Este sistema organiza la informacion relacionada a las transacciones de la Asociacion de Estudiantes de Ciencia de Computos (AECC) de la Universidad de Puerto Rico, Recinto de Rio Piedras. Este sistema tiene 4 tipos de datos fundamentales para su uso:
- productos
- transacciones
- miembros de la AECC
- actividades hechas por la AECC
Un concepto implicito con el uso de este sistema es que todas estas transacciones ocurren desde la perspectiva de la cuenta de banco de la AECC. Entonces, por ejemplo, una transaccion registrada como debito, es un gasto de dinero por parte de la AECC.
Productos#
Un producto es una entidad que tiene un costo, en centavos USD, y una descripcion. Por ejemplo, un producto podria ser: la membresia de la AECC, tendra un costo de 500 centavos y descripcion como "Membresia anual de la AECC."
Transacciones#
Una transaccion tiene 3 partes importantes:
- el iniciador de la transaccion
- el registrador de la transaccion
- la metadata de la transaccion
Iniciador#
El iniciador es la persona que inicie la compra o adquiere el producto. Con el sistema actual, el iniciador tiene que ser miembro de la AECC. Esto se puede resolver creando un miembro "dummy" para registrar transacciones con entidades que no sean miembros de la AECC.
Registrador#
El registrador es la persona que monitorea la compra. Este tiene la responsabilidad de verificar que el monto de ingreso o de gasto de la cuenta de la AECC sea pagado por completo. Es por esto que se requiere que esta persona sea miembro de la directiva de la AECC, sin excepciones. Ademas, se esta contemplando restringir los registradores de compra a solo:
- Tesorero
- Vice-presidente
- Presidente
Metadata#
En la metadata de la transaccion hay informacion como:
- el producto
- la cantidad que se compro
- si la transaccion fue un gasto o un ingreso
Miembro de la AECC#
Un miembro de la AECC puede verificar el estado de su cuenta, si esta activa o no simplemente visitando el area de "Members" de la pagina de inicio. Alli, tambien se pueden crear miembros nuevos. En el futuro, la AECC piensa tener esta area publica para que miembros de la AECC puedan verificar si tienen que pagar la subscripcion o no. Ademas, la AECC piensa implementar una manera de "log-in", que manejaria quienes tienen permiso para crear cuentas nuevas. Implicitamente, se registra una compra cada vez que se crea una cuenta nueva, por lo tanto, esto va a ser monitoreado por un integrante de la directiva de la AECC.
Actividades de la AECC#
En el area de "Activities" en la pagina de inicio se pueden ver las actividades que la AECC ha hecho. En el futuro, pensamos tener un area de "activity-transactions" que nos deja ver todas las transacciones asociadas a una actividad. Esto nos seria muy util para encontrar cuanto se gasta o gana por actividad.
Proposito del sistema#
Anterior a la implementacion de este sistema, la AECC mantenia los records de transacciones a mano y por google sheets. Esto no es muy eficiente y es muy tedioso. Ademas, como estudiantes de ciencia de computos, tenemos el conocimiento para resolver un problema justo como este.
- Alcance del sistema
Sistema actual (si fuera el caso)#
- No hay un sistema actual.
Requisitos#
- Funcionales
- El sistema debe crear, editar y borrar las transacciones de la AECC.
- El sistema debe calcular cuando un usuario debe pagar la membresia.
- No funcionales
- El sistema debe ser facil de usar, ya que ese es uno de los problemas que encontramos con google sheets.
- El sitema debe manejar la data de manera segura.
- Rendimiento
API Endpoints#
/api/v1/create/#
https://ada.uprrp.edu/~diego.estrada1/CCOM/4027/db/api/v1/create/
- permiso: ninguno[2][3]
- metodo:
POST - parametros:
| Campo | Tipo | Descripcion |
|---|---|---|
t |
String |
Tabla en la que quieras crear una tupla.[4] |
cents |
int |
Cantidad de centavos para un product. |
description |
String |
Descripcion para un product. |
- respuestas:
- Exito:
- 201: La tupla se inserto exitosamente.
- Devuelve los valores de la tupla en la tabla.
- 201: La tupla se inserto exitosamente.
- Fallo:
- 200: Error con el lenguaje de PHP.[5]
- 400: Error con los parametros que se enviaron.
- 500: Error insertando la tupla en la tabla.
- Exito:
/api/v1/read/#
https://ada.uprrp.edu/~diego.estrada1/CCOM/4027/db/api/v1/read/
- permiso: ninguno[2][3]
- metodo:
POST - parametros:
| Campo | Tipo | Descripcion |
|---|---|---|
t |
String |
Tabla en la que quieras buscar.[4] |
id |
int |
ID de la tupla que quieras buscar.[4] |
q |
String |
Texto que quieras buscar en atributos FULLTEXT. |
- respuestas:
- Exito:
- 201: Se hizo la busqueda adecuadamente.
- Devuelve los valores de las tuplas que se encontraron.
- 201: Se hizo la busqueda adecuadamente.
- Fallo:
- 200: Error con el lenguaje de PHP.[5]
- 400: Error con los parametros que se enviaron.
- 500: Error buscando tuplas en la tabla.
- Exito:
/api/v1/update/#
- method:
POST[1]
/api/v1/delete/#
- method:
POST[1]
Footer#
- [1]: Por restricciones de ADA, no se pueden hacer requests de
PUToDELETE. Por lo tanto, en este proyecto solo se utilizaranGETyDELETE. - [2]: Por restricciones de tiempo el API esta abierto a quien sea.
- [3]: En el futuro, el permiso sera:
Treasurer,President,VicePresident. - [4]: Las tablas disponibles son:
board_membermemberactivity_transactionactivitytransactionloggerinitiatorproduct
- [5]: Cuando ocurre un error con PHP, la respuesta vuelve como 200 y no hay manera de cambiar eso.
- [6]: Como esta pagina es un "single page application", este request se ve
mejor por
POSTpara no afectar el URL de la pagina. Sin embargo, deberia ser porGET.