Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .env
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# MONGODB_URI=mongodb+srv://cristianpedrazar:bHlQOi3rHR5jxsjv@reservaeci.yd050.mongodb.net/ReservaECI?retryWrites=true&w=majority&appName=ReservaECI

MONGODB_URI=mongodb+srv://cris:parcial2@partial2.bekuctq.mongodb.net/?retryWrites=true&w=majority&appName=elysium

MONGODB_DATABASE=ReservaECIHades
# MONGODB_DATABASE=ReservaECILimbo
3 changes: 3 additions & 0 deletions .github/workflows/maven.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
name: CI/CD Pipeline Production

on:
push:
branches:
- main
pull_request:
branches:
- main
Expand Down
129 changes: 129 additions & 0 deletions components.puml
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
@startuml Elysium System Component Diagram

!define RECTANGLE class

skinparam componentStyle uml2
skinparam component {
BackgroundColor White
BorderColor Black
ArrowColor Black
}

package "Elysium Frontend" <<Rectangle>> {
[<<component>>\nReact Application] as ReactApp
[<<component>>\nAPI Service] as ApiService
[<<component>>\nAuthentication Module] as AuthModule
[<<component>>\nReservas Module] as ReservasModule
[<<component>>\nUsuarios Module] as UsuariosModule
[<<component>>\nSalones Module] as SalonesModule
[<<component>>\nState Management] as StateManagement
}

package "Elysium Backend" <<Rectangle>> {
package "API Layer" {
[<<component>>\nAuthController] as AuthController
[<<component>>\nUsuarioController] as UsuarioController
[<<component>>\nReservaController] as ReservaController
}

package "Service Layer" {
[<<component>>\nUsuarioService] as UsuarioService
[<<component>>\nReservaService] as ReservaService
[<<component>>\nCustomUserDetailsService] as UserDetailsService
}

package "Repository Layer" {
[<<component>>\nUsuarioRepository] as UsuarioRepository
[<<component>>\nSalonRepository] as SalonRepository
[<<component>>\nReservaRepository] as ReservaRepository
}

package "Security" {
[<<component>>\nSecurityConfig] as SecurityConfig
[<<component>>\nJwtRequestFilter] as JwtFilter
[<<component>>\nJwtUtil] as JwtUtil
}

package "Domain Model" {
[<<component>>\nUsuario] as Usuario
[<<component>>\nSalon] as Salon
[<<component>>\nReserva] as Reserva
[<<component>>\nDTOs] as DTOs
}

package "Configuration" {
[<<component>>\nMongoConfig] as MongoConfig
}
}

cloud "External Systems" {
database "MongoDB Atlas" as MongoDB {
[ReservasECIHades DB] as DB
}
}

' Frontend internal relationships
ReactApp --> ApiService : uses
ReactApp --> AuthModule : uses
ReactApp --> ReservasModule : uses
ReactApp --> UsuariosModule : uses
ReactApp --> SalonesModule : uses
AuthModule --> ApiService : uses
ReservasModule --> ApiService : uses
UsuariosModule --> ApiService : uses
SalonesModule --> ApiService : uses
ReactApp --> StateManagement : uses

' Backend controller to service relationships
AuthController --> UserDetailsService : uses
AuthController --> JwtUtil : uses
UsuarioController --> UsuarioService : uses
ReservaController --> ReservaService : uses

' Security relationships
SecurityConfig --> JwtFilter : configures
JwtFilter --> UserDetailsService : validates with
JwtFilter --> JwtUtil : validates tokens with

' Service to repository relationships
UsuarioService --> UsuarioRepository : uses
UsuarioService --> ReservaService : uses
ReservaService --> ReservaRepository : uses
UserDetailsService --> UsuarioRepository : uses

' Repository to model relationships
UsuarioRepository --> Usuario : manages
SalonRepository --> Salon : manages
ReservaRepository --> Reserva : manages
UsuarioService --> DTOs : transforms

' Database connections
MongoConfig --> DB : configures
UsuarioRepository --> DB : persists to
SalonRepository --> DB : persists to
ReservaRepository --> DB : persists to

' Frontend-Backend communication
ApiService -0)- AuthController : HTTP/POST /api/login
ApiService -0)- AuthController : HTTP/POST /api/register
ApiService -0)- UsuarioController : HTTP/GET /api/usuarios
ApiService -0)- UsuarioController : HTTP/POST /api/usuarios
ApiService -0)- UsuarioController : HTTP/POST /api/usuarios/{id}/reservas
ApiService -0)- UsuarioController : HTTP/POST /api/usuarios/salones/{id}
ApiService -0)- UsuarioController : HTTP/GET /api/usuarios/{id}/reservas

' Interfaces
interface " " as AuthInterface
interface " " as UserInterface
interface " " as ReservaInterface

AuthController -- AuthInterface
ApiService )-- AuthInterface

UsuarioController -- UserInterface
ApiService )-- UserInterface

ReservaController -- ReservaInterface
ApiService )-- ReservaInterface

@enduml
150 changes: 150 additions & 0 deletions src/components.puml
Original file line number Diff line number Diff line change
@@ -0,0 +1,150 @@

@startuml Elysium System Component Diagram
!theme cerulean-outline
!define FONTAWESOME https://raw.githubusercontent.com/tupadr3/plantuml-icon-font-sprites/master/font-awesome-5
!include FONTAWESOME/users.puml
!include FONTAWESOME/database.puml
!include FONTAWESOME/server.puml
!include FONTAWESOME/cogs.puml

skinparam componentStyle rectangle
skinparam backgroundColor transparent
skinparam defaultTextAlignment center
skinparam wrapWidth 200
skinparam maxMessageSize 150

skinparam component {
BackgroundColor #f5f5f5
BorderColor #3498db
ArrowColor #2c3e50
FontColor #2c3e50
BorderThickness 2
FontSize 14
}
!define RECTANGLE class

skinparam componentStyle uml2
skinparam component {
BackgroundColor White
BorderColor Black
ArrowColor Black
}

package "Elysium Frontend" <<Rectangle>> {
[<<component>>\nReact Application] as ReactApp
[<<component>>\nAPI Service] as ApiService
[<<component>>\nAuthentication Module] as AuthModule
[<<component>>\nReservas Module] as ReservasModule
[<<component>>\nUsuarios Module] as UsuariosModule
[<<component>>\nSalones Module] as SalonesModule
[<<component>>\nState Management] as StateManagement
}

package "Elysium Backend" <<Rectangle>> {
package "API Layer" {
[<<component>>\nAuthController] as AuthController
[<<component>>\nUsuarioController] as UsuarioController
[<<component>>\nReservaController] as ReservaController
}

package "Service Layer" {
[<<component>>\nUsuarioService] as UsuarioService
[<<component>>\nReservaService] as ReservaService
[<<component>>\nCustomUserDetailsService] as UserDetailsService
}

package "Repository Layer" {
[<<component>>\nUsuarioRepository] as UsuarioRepository
[<<component>>\nSalonRepository] as SalonRepository
[<<component>>\nReservaRepository] as ReservaRepository
}

package "Security" {
[<<component>>\nSecurityConfig] as SecurityConfig
[<<component>>\nJwtRequestFilter] as JwtFilter
[<<component>>\nJwtUtil] as JwtUtil
}

package "Domain Model" {
[<<component>>\nUsuario] as Usuario
[<<component>>\nSalon] as Salon
[<<component>>\nReserva] as Reserva
[<<component>>\nDTOs] as DTOs
}

package "Configuration" {
[<<component>>\nMongoConfig] as MongoConfig
}
}

cloud "External Systems" {
database "MongoDB Atlas" as MongoDB {
[ReservasECIHades DB] as DB
}
}

' Frontend internal relationships
ReactApp --> ApiService : uses
ReactApp --> AuthModule : uses
ReactApp --> ReservasModule : uses
ReactApp --> UsuariosModule : uses
ReactApp --> SalonesModule : uses
AuthModule --> ApiService : uses
ReservasModule --> ApiService : uses
UsuariosModule --> ApiService : uses
SalonesModule --> ApiService : uses
ReactApp --> StateManagement : uses

' Backend controller to service relationships
AuthController --> UserDetailsService : uses
AuthController --> JwtUtil : uses
UsuarioController --> UsuarioService : uses
ReservaController --> ReservaService : uses

' Security relationships
SecurityConfig --> JwtFilter : configures
JwtFilter --> UserDetailsService : validates with
JwtFilter --> JwtUtil : validates tokens with

' Service to repository relationships
UsuarioService --> UsuarioRepository : uses
UsuarioService --> ReservaService : uses
ReservaService --> ReservaRepository : uses
UserDetailsService --> UsuarioRepository : uses

' Repository to model relationships
UsuarioRepository --> Usuario : manages
SalonRepository --> Salon : manages
ReservaRepository --> Reserva : manages
UsuarioService --> DTOs : transforms

' Database connections
MongoConfig --> DB : configures
UsuarioRepository --> DB : persists to
SalonRepository --> DB : persists to
ReservaRepository --> DB : persists to

' Frontend-Backend communication
ApiService -0)- AuthController : HTTP/POST /api/login
ApiService -0)- AuthController : HTTP/POST /api/register
ApiService -0)- UsuarioController : HTTP/GET /api/usuarios
ApiService -0)- UsuarioController : HTTP/POST /api/usuarios
ApiService -0)- UsuarioController : HTTP/POST /api/usuarios/{id}/reservas
ApiService -0)- UsuarioController : HTTP/POST /api/usuarios/salones/{id}
ApiService -0)- UsuarioController : HTTP/GET /api/usuarios/{id}/reservas

' Interfaces
interface " " as AuthInterface
interface " " as UserInterface
interface " " as ReservaInterface

AuthController -- AuthInterface
ApiService )-- AuthInterface

UsuarioController -- UserInterface
ApiService )-- UserInterface

ReservaController -- ReservaInterface
ApiService )-- ReservaInterface

@enduml
2 changes: 2 additions & 0 deletions src/main/java/edu/eci/cvds/elysium/config/CorsConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ public class CorsConfig implements WebMvcConfigurer {
public void addCorsMappings(@SuppressWarnings("null") CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("http://localhost:3000") // Cambiar el origen al necesario
.allowedOrigins("https://cicero-hfg6f7g3echkbvcf.canadacentral-01.azurewebsites.net/")
.allowedOrigins("https://limbo-cfgvasfjc6argbhh.canadacentral-01.azurewebsites.net/")
.allowedMethods("GET", "POST", "PUT", "PATCH", "DELETE")
.allowedHeaders("*")
.allowCredentials(true);
Expand Down
Loading