# yerkotorrejon/sistemareservasrestaurante architecture

> Architecture diagram of the GitHub repository yerkotorrejon/sistemareservasrestaurante, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-23). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/yerkotorrejon/sistemareservasrestaurante
- Repository: https://github.com/yerkotorrejon/sistemareservasrestaurante

## Overview

Aplicación de escritorio WinForms para administrar reservas de restaurante, con inicio de sesión simplificado y acciones sujetas a rol. El flujo principal permite al personal consultar reservas, registrar o modificar una reserva confirmada y cancelarla sin borrado físico; la lógica valida horarios y capacidad, y la persistencia aplica procedimientos almacenados. El README también documenta el mantenedor de mesas exclusivo de administración y el registro de movimientos. Los formularios y algunos subsistemas no muestreados se representan solo donde la estructura y la documentación respaldan su función.

Main entry points: [`src/SistemaReservasRestaurante.BLL/ReservaBLL.cs`](https://github.com/yerkotorrejon/sistemareservasrestaurante/blob/master/src/SistemaReservasRestaurante.BLL/ReservaBLL.cs) (Reglas de reserva), [`src/SistemaReservasRestaurante.DAL/ConexionDb.cs`](https://github.com/yerkotorrejon/sistemareservasrestaurante/blob/master/src/SistemaReservasRestaurante.DAL/ConexionDb.cs) (Conexión SQL Server), [`src/SistemaReservasRestaurante.UI/FrmReservas.cs`](https://github.com/yerkotorrejon/sistemareservasrestaurante/blob/master/src/SistemaReservasRestaurante.UI/FrmReservas.cs) (Gestión de reservas), [`src/SistemaReservasRestaurante.BLL/MesaBLL.cs`](https://github.com/yerkotorrejon/sistemareservasrestaurante/blob/master/src/SistemaReservasRestaurante.BLL/MesaBLL.cs) (Reglas de mesas)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ui["Interfaz WinForms"]
  node_program["Inicio de aplicación<br/>[Program.cs]"]
  node_login["Inicio de sesión<br/>[FrmLogin.cs]"]
  node_main["Ventana principal<br/>[FrmPrincipal.cs]"]
  node_reservas_ui["Gestión de reservas<br/>[FrmReservas.cs]"]
  node_mesas_ui["Mantenedor de mesas<br/>[FrmMesas.cs]"]
  node_comensal_ui["Alta de comensal"]
end

subgraph group_business["Lógica de negocio"]
  node_sesion["Sesión y roles<br/>[SesionActual.cs]"]
  node_reserva_bll["Reglas de reserva<br/>[ReservaBLL.cs]"]
  node_mesa_bll["Reglas de mesas<br/>[MesaBLL.cs]"]
  node_comensal_bll["Reglas de comensal<br/>[ComensalBLL.cs]"]
  node_usuario_bll["Acceso de usuario<br/>[UsuarioBLL.cs]"]
end

subgraph group_data["Persistencia SQL"]
  node_reserva_dal["Acceso de reservas<br/>[ReservaDAL.cs]"]
  node_mesa_dal["Acceso de mesas<br/>[MesaDAL.cs]"]
  node_comensal_dal["Acceso de comensales<br/>[ComensalDAL.cs]"]
  node_usuario_dal["Acceso de usuarios<br/>[UsuarioDAL.cs]"]
  node_audit_dal["Acceso de auditoría<br/>[AuditoriaDAL.cs]"]
  node_connection["Conexión SQL Server<br/>[ConexionDb.cs]"]
  node_procedures["Procedimientos almacenados<br/>[sps.sql]"]
  node_store[("Base de reservas<br/>[schema.sql]")]
end

subgraph group_domain["Entidades de dominio"]
  node_entities["Modelos de dominio"]
end

node_operator(("Personal del restaurante"))

node_operator -->|"inicia"| node_program
node_program -->|"abre"| node_login
node_login -->|"valida usuario"| node_usuario_bll
node_usuario_bll -->|"consulta usuario"| node_usuario_dal
node_login -->|"establece sesión"| node_sesion
node_login -->|"abre tras acceso"| node_main
node_main -->|"presenta reservas"| node_reservas_ui
node_main -.->|"ofrece a administración"| node_mesas_ui
node_reservas_ui -->|"consulta y modifica"| node_reserva_bll
node_reservas_ui -->|"carga mesas"| node_mesa_bll
node_reservas_ui -->|"carga comensales"| node_comensal_bll
node_reservas_ui -->|"abre alta"| node_comensal_ui
node_comensal_ui -->|"registra comensal"| node_comensal_bll
node_mesas_ui -->|"mantiene mesas"| node_mesa_bll
node_reserva_bll -->|"exige sesión"| node_sesion
node_mesa_bll -->|"exige administración"| node_sesion
node_reserva_bll -->|"valida y persiste"| node_reserva_dal
node_reserva_bll -->|"comprueba capacidad"| node_mesa_dal
node_reserva_bll -->|"registra movimientos"| node_audit_dal
node_mesa_bll -->|"mantiene catálogo"| node_mesa_dal
node_mesa_bll -->|"registra cambios"| node_audit_dal
node_comensal_bll -->|"persiste comensal"| node_comensal_dal
node_comensal_bll -->|"registra alta"| node_audit_dal
node_reserva_dal -->|"obtiene conexión"| node_connection
node_mesa_dal -->|"obtiene conexión"| node_connection
node_comensal_dal -->|"obtiene conexión"| node_connection
node_usuario_dal -->|"obtiene conexión"| node_connection
node_audit_dal -->|"obtiene conexión"| node_connection
node_connection -->|"ejecuta"| node_procedures
node_procedures -->|"lee y escribe"| node_store
node_reserva_dal -->|"mapea reservas"| node_entities
node_mesa_dal -->|"mapea mesas"| node_entities
node_comensal_dal -->|"mapea comensales"| node_entities
node_usuario_dal -->|"mapea usuarios"| node_entities
node_reserva_bll -->|"consulta disponibilidad"| node_mesa_dal

click node_program "https://github.com/yerkotorrejon/sistemareservasrestaurante/blob/master/src/SistemaReservasRestaurante.UI/Program.cs"
click node_login "https://github.com/yerkotorrejon/sistemareservasrestaurante/blob/master/src/SistemaReservasRestaurante.UI/FrmLogin.cs"
click node_main "https://github.com/yerkotorrejon/sistemareservasrestaurante/blob/master/src/SistemaReservasRestaurante.UI/FrmPrincipal.cs"
click node_reservas_ui "https://github.com/yerkotorrejon/sistemareservasrestaurante/blob/master/src/SistemaReservasRestaurante.UI/FrmReservas.cs"
click node_mesas_ui "https://github.com/yerkotorrejon/sistemareservasrestaurante/blob/master/src/SistemaReservasRestaurante.UI/FrmMesas.cs"
click node_comensal_ui "https://github.com/yerkotorrejon/sistemareservasrestaurante/blob/master/src/SistemaReservasRestaurante.UI/FrmComensalNuevo.cs"
click node_sesion "https://github.com/yerkotorrejon/sistemareservasrestaurante/blob/master/src/SistemaReservasRestaurante.BLL/SesionActual.cs"
click node_reserva_bll "https://github.com/yerkotorrejon/sistemareservasrestaurante/blob/master/src/SistemaReservasRestaurante.BLL/ReservaBLL.cs"
click node_mesa_bll "https://github.com/yerkotorrejon/sistemareservasrestaurante/blob/master/src/SistemaReservasRestaurante.BLL/MesaBLL.cs"
click node_comensal_bll "https://github.com/yerkotorrejon/sistemareservasrestaurante/blob/master/src/SistemaReservasRestaurante.BLL/ComensalBLL.cs"
click node_usuario_bll "https://github.com/yerkotorrejon/sistemareservasrestaurante/blob/master/src/SistemaReservasRestaurante.BLL/UsuarioBLL.cs"
click node_reserva_dal "https://github.com/yerkotorrejon/sistemareservasrestaurante/blob/master/src/SistemaReservasRestaurante.DAL/ReservaDAL.cs"
click node_mesa_dal "https://github.com/yerkotorrejon/sistemareservasrestaurante/blob/master/src/SistemaReservasRestaurante.DAL/MesaDAL.cs"
click node_comensal_dal "https://github.com/yerkotorrejon/sistemareservasrestaurante/blob/master/src/SistemaReservasRestaurante.DAL/ComensalDAL.cs"
click node_usuario_dal "https://github.com/yerkotorrejon/sistemareservasrestaurante/blob/master/src/SistemaReservasRestaurante.DAL/UsuarioDAL.cs"
click node_audit_dal "https://github.com/yerkotorrejon/sistemareservasrestaurante/blob/master/src/SistemaReservasRestaurante.DAL/AuditoriaDAL.cs"
click node_connection "https://github.com/yerkotorrejon/sistemareservasrestaurante/blob/master/src/SistemaReservasRestaurante.DAL/ConexionDb.cs"
click node_procedures "https://github.com/yerkotorrejon/sistemareservasrestaurante/blob/master/database/sps.sql"
click node_store "https://github.com/yerkotorrejon/sistemareservasrestaurante/blob/master/database/schema.sql"
click node_entities "https://github.com/yerkotorrejon/sistemareservasrestaurante/tree/master/src/SistemaReservasRestaurante.Entidades"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_program,node_login,node_main,node_reservas_ui,node_mesas_ui,node_comensal_ui toneBlue
class node_sesion,node_reserva_bll,node_mesa_bll,node_comensal_bll,node_usuario_bll toneAmber
class node_reserva_dal,node_mesa_dal,node_comensal_dal,node_usuario_dal,node_audit_dal,node_connection,node_procedures,node_store toneMint
class node_entities toneRose
class node_operator toneIndigo
```

## Components

### Interfaz WinForms

- [Inicio de aplicación](https://github.com/yerkotorrejon/sistemareservasrestaurante/blob/master/src/SistemaReservasRestaurante.UI/Program.cs): `src/SistemaReservasRestaurante.UI/Program.cs`
- [Inicio de sesión](https://github.com/yerkotorrejon/sistemareservasrestaurante/blob/master/src/SistemaReservasRestaurante.UI/FrmLogin.cs): `src/SistemaReservasRestaurante.UI/FrmLogin.cs`
- [Ventana principal](https://github.com/yerkotorrejon/sistemareservasrestaurante/blob/master/src/SistemaReservasRestaurante.UI/FrmPrincipal.cs): `src/SistemaReservasRestaurante.UI/FrmPrincipal.cs`
- [Gestión de reservas](https://github.com/yerkotorrejon/sistemareservasrestaurante/blob/master/src/SistemaReservasRestaurante.UI/FrmReservas.cs): `src/SistemaReservasRestaurante.UI/FrmReservas.cs`
- [Mantenedor de mesas](https://github.com/yerkotorrejon/sistemareservasrestaurante/blob/master/src/SistemaReservasRestaurante.UI/FrmMesas.cs): `src/SistemaReservasRestaurante.UI/FrmMesas.cs`
- [Alta de comensal](https://github.com/yerkotorrejon/sistemareservasrestaurante/blob/master/src/SistemaReservasRestaurante.UI/FrmComensalNuevo.cs): `src/SistemaReservasRestaurante.UI/FrmComensalNuevo.cs`

### Lógica de negocio

- [Sesión y roles](https://github.com/yerkotorrejon/sistemareservasrestaurante/blob/master/src/SistemaReservasRestaurante.BLL/SesionActual.cs): `src/SistemaReservasRestaurante.BLL/SesionActual.cs`
- [Reglas de reserva](https://github.com/yerkotorrejon/sistemareservasrestaurante/blob/master/src/SistemaReservasRestaurante.BLL/ReservaBLL.cs): `src/SistemaReservasRestaurante.BLL/ReservaBLL.cs`
- [Reglas de mesas](https://github.com/yerkotorrejon/sistemareservasrestaurante/blob/master/src/SistemaReservasRestaurante.BLL/MesaBLL.cs): `src/SistemaReservasRestaurante.BLL/MesaBLL.cs`
- [Reglas de comensal](https://github.com/yerkotorrejon/sistemareservasrestaurante/blob/master/src/SistemaReservasRestaurante.BLL/ComensalBLL.cs): `src/SistemaReservasRestaurante.BLL/ComensalBLL.cs`
- [Acceso de usuario](https://github.com/yerkotorrejon/sistemareservasrestaurante/blob/master/src/SistemaReservasRestaurante.BLL/UsuarioBLL.cs): `src/SistemaReservasRestaurante.BLL/UsuarioBLL.cs`

### Persistencia SQL

- [Acceso de reservas](https://github.com/yerkotorrejon/sistemareservasrestaurante/blob/master/src/SistemaReservasRestaurante.DAL/ReservaDAL.cs): `src/SistemaReservasRestaurante.DAL/ReservaDAL.cs`
- [Acceso de mesas](https://github.com/yerkotorrejon/sistemareservasrestaurante/blob/master/src/SistemaReservasRestaurante.DAL/MesaDAL.cs): `src/SistemaReservasRestaurante.DAL/MesaDAL.cs`
- [Acceso de comensales](https://github.com/yerkotorrejon/sistemareservasrestaurante/blob/master/src/SistemaReservasRestaurante.DAL/ComensalDAL.cs): `src/SistemaReservasRestaurante.DAL/ComensalDAL.cs`
- [Acceso de usuarios](https://github.com/yerkotorrejon/sistemareservasrestaurante/blob/master/src/SistemaReservasRestaurante.DAL/UsuarioDAL.cs): `src/SistemaReservasRestaurante.DAL/UsuarioDAL.cs`
- [Acceso de auditoría](https://github.com/yerkotorrejon/sistemareservasrestaurante/blob/master/src/SistemaReservasRestaurante.DAL/AuditoriaDAL.cs): `src/SistemaReservasRestaurante.DAL/AuditoriaDAL.cs`
- [Conexión SQL Server](https://github.com/yerkotorrejon/sistemareservasrestaurante/blob/master/src/SistemaReservasRestaurante.DAL/ConexionDb.cs): `src/SistemaReservasRestaurante.DAL/ConexionDb.cs`
- [Procedimientos almacenados](https://github.com/yerkotorrejon/sistemareservasrestaurante/blob/master/database/sps.sql): `database/sps.sql`
- [Base de reservas](https://github.com/yerkotorrejon/sistemareservasrestaurante/blob/master/database/schema.sql): `database/schema.sql`

### Entidades de dominio

- [Modelos de dominio](https://github.com/yerkotorrejon/sistemareservasrestaurante/tree/master/src/SistemaReservasRestaurante.Entidades): `src/SistemaReservasRestaurante.Entidades`

### Other components

- **Personal del restaurante**

## Connections

- Personal del restaurante → Inicio de aplicación: inicia
- Inicio de aplicación → Inicio de sesión: abre
- Inicio de sesión → Acceso de usuario: valida usuario
- Acceso de usuario → Acceso de usuarios: consulta usuario
- Inicio de sesión → Sesión y roles: establece sesión
- Inicio de sesión → Ventana principal: abre tras acceso
- Ventana principal → Gestión de reservas: presenta reservas
- Ventana principal → Mantenedor de mesas: ofrece a administración
- Gestión de reservas → Reglas de reserva: consulta y modifica
- Gestión de reservas → Reglas de mesas: carga mesas
- Gestión de reservas → Reglas de comensal: carga comensales
- Gestión de reservas → Alta de comensal: abre alta
- Alta de comensal → Reglas de comensal: registra comensal
- Mantenedor de mesas → Reglas de mesas: mantiene mesas
- Reglas de reserva → Sesión y roles: exige sesión
- Reglas de mesas → Sesión y roles: exige administración
- Reglas de reserva → Acceso de reservas: valida y persiste
- Reglas de reserva → Acceso de mesas: comprueba capacidad
- Reglas de reserva → Acceso de auditoría: registra movimientos
- Reglas de mesas → Acceso de mesas: mantiene catálogo
- Reglas de mesas → Acceso de auditoría: registra cambios
- Reglas de comensal → Acceso de comensales: persiste comensal
- Reglas de comensal → Acceso de auditoría: registra alta
- Acceso de reservas → Conexión SQL Server: obtiene conexión
- Acceso de mesas → Conexión SQL Server: obtiene conexión
- Acceso de comensales → Conexión SQL Server: obtiene conexión
- Acceso de usuarios → Conexión SQL Server: obtiene conexión
- Acceso de auditoría → Conexión SQL Server: obtiene conexión
- Conexión SQL Server → Procedimientos almacenados: ejecuta
- Procedimientos almacenados → Base de reservas: lee y escribe
- Acceso de reservas → Modelos de dominio: mapea reservas
- Acceso de mesas → Modelos de dominio: mapea mesas
- Acceso de comensales → Modelos de dominio: mapea comensales
- Acceso de usuarios → Modelos de dominio: mapea usuarios
- Reglas de reserva → Acceso de mesas: consulta disponibilidad
