# llazzarotto/sistema_autos_pp1 architecture

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

- Interactive diagram: https://gitdiagram.com/llazzarotto/sistema_autos_pp1
- Repository: https://github.com/llazzarotto/sistema_autos_pp1

## Overview

This is a Symfony used-car dealership application. Customers browse and filter available cars, save favorites, simulate financing, contact the dealership, and book or manage appointments; administrators manage inventory and customer-facing operations. The graph separates those domain workflows from persistence and identity. The README is empty, so capability coverage relies on the supplied tree and source index; several controllers and subsystems were not sampled, and their connections are omitted or marked unverified.

Main entry points: [`src/Controller/ReservaController.php`](https://github.com/llazzarotto/sistema_autos_pp1/blob/main/src/Controller/ReservaController.php) (Appointment booking), [`src/Repository/AutoRepository.php`](https://github.com/llazzarotto/sistema_autos_pp1/blob/main/src/Repository/AutoRepository.php) (Vehicle queries), [`src/Entity/Auto.php`](https://github.com/llazzarotto/sistema_autos_pp1/blob/main/src/Entity/Auto.php) (Vehicle records), [`src/Repository/CitaRepository.php`](https://github.com/llazzarotto/sistema_autos_pp1/blob/main/src/Repository/CitaRepository.php) (Appointment queries)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_customer["Customer journeys"]
  node_auto_browse["Car browsing<br/>[AutoController.php]"]
  node_chat["Customer chat<br/>[ChatController.php]"]
  node_chat_manager["Chat handling<br/>[ChatManager.php]"]
  node_finance["Finance simulation"]
  node_finance_manager["Finance calculations"]
  node_booking["Appointment booking"]
  node_booking_manager["Reservation rules<br/>[ReservaManager.php]"]
  node_availability["Time-slot availability"]
  node_notifications["Appointment notices"]
  node_appointments["Appointment management<br/>[CitaController.php]"]
end

subgraph group_operations["Dealership operations"]
  node_inventory["Inventory management"]
  node_user_admin["User management"]
  node_user_manager["User operations<br/>[UsuarioManager.php]"]
end

subgraph group_identity["Identity and access"]
  node_security["Security operations"]
  node_security_controller["Sign-in"]
end

subgraph group_domain["Domain and persistence"]
  node_auto_entity["Vehicle records<br/>[Auto.php]"]
  node_cita_entity["Appointment records<br/>[Cita.php]"]
  node_consulta_entity["Inquiry records<br/>[Consulta.php]"]
  node_favorito_entity["Favorite records<br/>[Favorito.php]"]
  node_imagen_entity["Vehicle images<br/>[ImagenAuto.php]"]
  node_marca_entity["Make records<br/>[Marca.php]"]
  node_modelo_entity["Model records<br/>[Modelo.php]"]
  node_rol_entity["Role records<br/>[Rol.php]"]
  node_usuario_entity["User records<br/>[Usuario.php]"]
  node_auto_repo["Vehicle queries<br/>[AutoRepository.php]"]
  node_cita_repo["Appointment queries<br/>[CitaRepository.php]"]
  node_consulta_repo["Inquiry queries"]
  node_favorito_repo["Favorite queries"]
  node_rol_repo["Role queries<br/>[RolRepository.php]"]
  node_usuario_repo["User queries"]
end

node_customer(("Customer"))
node_store[("Doctrine database")]

node_customer -.->|"browses"| node_auto_browse
node_customer -.->|"asks"| node_chat
node_customer -.->|"simulates financing"| node_finance
node_customer -.->|"books"| node_booking
node_auto_browse -->|"searches"| node_auto_repo
node_auto_browse -->|"creates favorites"| node_favorito_entity
node_chat -->|"delegates to"| node_chat_manager
node_chat_manager -->|"loads vehicles"| node_auto_repo
node_chat_manager -->|"queries inquiries"| node_consulta_repo
node_finance -->|"calculates with"| node_finance_manager
node_finance -->|"loads vehicle"| node_auto_repo
node_finance_manager -->|"prices"| node_auto_entity
node_booking -->|"reserves through"| node_booking_manager
node_booking -->|"checks slots"| node_availability
node_booking -->|"lists available cars"| node_auto_repo
node_booking -->|"loads appointments"| node_cita_repo
node_booking -->|"sends notices"| node_notifications
node_booking_manager -->|"validates slots"| node_availability
node_booking_manager -->|"queries appointments"| node_cita_repo
node_availability -->|"reads occupied times"| node_cita_repo
node_inventory -->|"manages vehicles"| node_auto_entity
node_user_admin -->|"delegates to"| node_user_manager
node_user_admin -->|"queries users"| node_usuario_repo
node_user_manager -->|"manages users"| node_usuario_repo
node_user_manager -->|"looks up roles"| node_rol_repo
node_security_controller -.->|"uses"| node_security
node_security -->|"loads roles"| node_rol_repo
node_security -->|"checks users"| node_usuario_entity
node_auto_entity -->|"mapped to"| node_store
node_cita_entity -->|"mapped to"| node_store
node_consulta_entity -->|"mapped to"| node_store
node_favorito_entity -->|"mapped to"| node_store
node_imagen_entity -->|"mapped to"| node_store
node_marca_entity -->|"mapped to"| node_store
node_modelo_entity -->|"mapped to"| node_store
node_rol_entity -->|"mapped to"| node_store
node_usuario_entity -->|"mapped to"| node_store
node_auto_repo -->|"queries"| node_auto_entity
node_cita_repo -->|"queries"| node_cita_entity
node_consulta_repo -->|"queries"| node_consulta_entity
node_favorito_repo -->|"queries"| node_favorito_entity
node_rol_repo -->|"queries"| node_rol_entity
node_usuario_repo -->|"queries"| node_usuario_entity

click node_auto_browse "https://github.com/llazzarotto/sistema_autos_pp1/blob/main/src/Controller/AutoController.php"
click node_chat "https://github.com/llazzarotto/sistema_autos_pp1/blob/main/src/Controller/ChatController.php"
click node_chat_manager "https://github.com/llazzarotto/sistema_autos_pp1/blob/main/src/Manager/ChatManager.php"
click node_finance "https://github.com/llazzarotto/sistema_autos_pp1/blob/main/src/Controller/FinanciamientoController.php"
click node_finance_manager "https://github.com/llazzarotto/sistema_autos_pp1/blob/main/src/Manager/FinanciamientoManager.php"
click node_booking "https://github.com/llazzarotto/sistema_autos_pp1/blob/main/src/Controller/ReservaController.php"
click node_booking_manager "https://github.com/llazzarotto/sistema_autos_pp1/blob/main/src/Manager/ReservaManager.php"
click node_availability "https://github.com/llazzarotto/sistema_autos_pp1/blob/main/src/Service/DisponibilidadCitaService.php"
click node_notifications "https://github.com/llazzarotto/sistema_autos_pp1/blob/main/src/Service/NotificacionCitaService.php"
click node_appointments "https://github.com/llazzarotto/sistema_autos_pp1/blob/main/src/Controller/CitaController.php"
click node_inventory "https://github.com/llazzarotto/sistema_autos_pp1/blob/main/src/Controller/InventarioController.php"
click node_user_admin "https://github.com/llazzarotto/sistema_autos_pp1/blob/main/src/Controller/UsuarioController.php"
click node_user_manager "https://github.com/llazzarotto/sistema_autos_pp1/blob/main/src/Manager/UsuarioManager.php"
click node_security "https://github.com/llazzarotto/sistema_autos_pp1/blob/main/src/Manager/SecurityManager.php"
click node_security_controller "https://github.com/llazzarotto/sistema_autos_pp1/blob/main/src/Controller/SecurityController.php"
click node_auto_entity "https://github.com/llazzarotto/sistema_autos_pp1/blob/main/src/Entity/Auto.php"
click node_cita_entity "https://github.com/llazzarotto/sistema_autos_pp1/blob/main/src/Entity/Cita.php"
click node_consulta_entity "https://github.com/llazzarotto/sistema_autos_pp1/blob/main/src/Entity/Consulta.php"
click node_favorito_entity "https://github.com/llazzarotto/sistema_autos_pp1/blob/main/src/Entity/Favorito.php"
click node_imagen_entity "https://github.com/llazzarotto/sistema_autos_pp1/blob/main/src/Entity/ImagenAuto.php"
click node_marca_entity "https://github.com/llazzarotto/sistema_autos_pp1/blob/main/src/Entity/Marca.php"
click node_modelo_entity "https://github.com/llazzarotto/sistema_autos_pp1/blob/main/src/Entity/Modelo.php"
click node_rol_entity "https://github.com/llazzarotto/sistema_autos_pp1/blob/main/src/Entity/Rol.php"
click node_usuario_entity "https://github.com/llazzarotto/sistema_autos_pp1/blob/main/src/Entity/Usuario.php"
click node_auto_repo "https://github.com/llazzarotto/sistema_autos_pp1/blob/main/src/Repository/AutoRepository.php"
click node_cita_repo "https://github.com/llazzarotto/sistema_autos_pp1/blob/main/src/Repository/CitaRepository.php"
click node_consulta_repo "https://github.com/llazzarotto/sistema_autos_pp1/blob/main/src/Repository/ConsultaRepository.php"
click node_favorito_repo "https://github.com/llazzarotto/sistema_autos_pp1/blob/main/src/Repository/FavoritoRepository.php"
click node_rol_repo "https://github.com/llazzarotto/sistema_autos_pp1/blob/main/src/Repository/RolRepository.php"
click node_usuario_repo "https://github.com/llazzarotto/sistema_autos_pp1/blob/main/src/Repository/UsuarioRepository.php"

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_auto_browse,node_chat,node_chat_manager,node_finance,node_finance_manager,node_booking,node_booking_manager,node_availability,node_notifications,node_appointments toneBlue
class node_inventory,node_user_admin,node_user_manager,node_store toneAmber
class node_security,node_security_controller toneMint
class node_auto_entity,node_cita_entity,node_consulta_entity,node_favorito_entity,node_imagen_entity,node_marca_entity,node_modelo_entity,node_rol_entity,node_usuario_entity,node_auto_repo,node_cita_repo,node_consulta_repo,node_favorito_repo,node_rol_repo,node_usuario_repo toneRose
class node_customer toneIndigo
```

## Components

### Customer journeys

- [Car browsing](https://github.com/llazzarotto/sistema_autos_pp1/blob/main/src/Controller/AutoController.php): `src/Controller/AutoController.php`
- [Customer chat](https://github.com/llazzarotto/sistema_autos_pp1/blob/main/src/Controller/ChatController.php): `src/Controller/ChatController.php`
- [Chat handling](https://github.com/llazzarotto/sistema_autos_pp1/blob/main/src/Manager/ChatManager.php): `src/Manager/ChatManager.php`
- [Finance simulation](https://github.com/llazzarotto/sistema_autos_pp1/blob/main/src/Controller/FinanciamientoController.php): `src/Controller/FinanciamientoController.php`
- [Finance calculations](https://github.com/llazzarotto/sistema_autos_pp1/blob/main/src/Manager/FinanciamientoManager.php): `src/Manager/FinanciamientoManager.php`
- [Appointment booking](https://github.com/llazzarotto/sistema_autos_pp1/blob/main/src/Controller/ReservaController.php): `src/Controller/ReservaController.php`
- [Reservation rules](https://github.com/llazzarotto/sistema_autos_pp1/blob/main/src/Manager/ReservaManager.php): `src/Manager/ReservaManager.php`
- [Time-slot availability](https://github.com/llazzarotto/sistema_autos_pp1/blob/main/src/Service/DisponibilidadCitaService.php): `src/Service/DisponibilidadCitaService.php`
- [Appointment notices](https://github.com/llazzarotto/sistema_autos_pp1/blob/main/src/Service/NotificacionCitaService.php): `src/Service/NotificacionCitaService.php`
- [Appointment management](https://github.com/llazzarotto/sistema_autos_pp1/blob/main/src/Controller/CitaController.php): `src/Controller/CitaController.php`

### Dealership operations

- [Inventory management](https://github.com/llazzarotto/sistema_autos_pp1/blob/main/src/Controller/InventarioController.php): `src/Controller/InventarioController.php`
- [User management](https://github.com/llazzarotto/sistema_autos_pp1/blob/main/src/Controller/UsuarioController.php): `src/Controller/UsuarioController.php`
- [User operations](https://github.com/llazzarotto/sistema_autos_pp1/blob/main/src/Manager/UsuarioManager.php): `src/Manager/UsuarioManager.php`

### Identity and access

- [Security operations](https://github.com/llazzarotto/sistema_autos_pp1/blob/main/src/Manager/SecurityManager.php): `src/Manager/SecurityManager.php`
- [Sign-in](https://github.com/llazzarotto/sistema_autos_pp1/blob/main/src/Controller/SecurityController.php): `src/Controller/SecurityController.php`

### Domain and persistence

- [Vehicle records](https://github.com/llazzarotto/sistema_autos_pp1/blob/main/src/Entity/Auto.php): `src/Entity/Auto.php`
- [Appointment records](https://github.com/llazzarotto/sistema_autos_pp1/blob/main/src/Entity/Cita.php): `src/Entity/Cita.php`
- [Inquiry records](https://github.com/llazzarotto/sistema_autos_pp1/blob/main/src/Entity/Consulta.php): `src/Entity/Consulta.php`
- [Favorite records](https://github.com/llazzarotto/sistema_autos_pp1/blob/main/src/Entity/Favorito.php): `src/Entity/Favorito.php`
- [Vehicle images](https://github.com/llazzarotto/sistema_autos_pp1/blob/main/src/Entity/ImagenAuto.php): `src/Entity/ImagenAuto.php`
- [Make records](https://github.com/llazzarotto/sistema_autos_pp1/blob/main/src/Entity/Marca.php): `src/Entity/Marca.php`
- [Model records](https://github.com/llazzarotto/sistema_autos_pp1/blob/main/src/Entity/Modelo.php): `src/Entity/Modelo.php`
- [Role records](https://github.com/llazzarotto/sistema_autos_pp1/blob/main/src/Entity/Rol.php): `src/Entity/Rol.php`
- [User records](https://github.com/llazzarotto/sistema_autos_pp1/blob/main/src/Entity/Usuario.php): `src/Entity/Usuario.php`
- [Vehicle queries](https://github.com/llazzarotto/sistema_autos_pp1/blob/main/src/Repository/AutoRepository.php): `src/Repository/AutoRepository.php`
- [Appointment queries](https://github.com/llazzarotto/sistema_autos_pp1/blob/main/src/Repository/CitaRepository.php): `src/Repository/CitaRepository.php`
- [Inquiry queries](https://github.com/llazzarotto/sistema_autos_pp1/blob/main/src/Repository/ConsultaRepository.php): `src/Repository/ConsultaRepository.php`
- [Favorite queries](https://github.com/llazzarotto/sistema_autos_pp1/blob/main/src/Repository/FavoritoRepository.php): `src/Repository/FavoritoRepository.php`
- [Role queries](https://github.com/llazzarotto/sistema_autos_pp1/blob/main/src/Repository/RolRepository.php): `src/Repository/RolRepository.php`
- [User queries](https://github.com/llazzarotto/sistema_autos_pp1/blob/main/src/Repository/UsuarioRepository.php): `src/Repository/UsuarioRepository.php`

### Other components

- **Customer**
- **Doctrine database**

## Connections

- Customer → Car browsing: browses
- Customer → Customer chat: asks
- Customer → Finance simulation: simulates financing
- Customer → Appointment booking: books
- Car browsing → Vehicle queries: searches (evidence: `src/Controller/AutoController.php`)
- Car browsing → Favorite records: creates favorites (evidence: `src/Controller/AutoController.php`)
- Customer chat → Chat handling: delegates to (evidence: `src/Controller/ChatController.php`)
- Chat handling → Vehicle queries: loads vehicles (evidence: `src/Manager/ChatManager.php`)
- Chat handling → Inquiry queries: queries inquiries (evidence: `src/Manager/ChatManager.php`)
- Finance simulation → Finance calculations: calculates with (evidence: `src/Controller/FinanciamientoController.php`)
- Finance simulation → Vehicle queries: loads vehicle (evidence: `src/Controller/FinanciamientoController.php`)
- Finance calculations → Vehicle records: prices (evidence: `src/Manager/FinanciamientoManager.php`)
- Appointment booking → Reservation rules: reserves through (evidence: `src/Controller/ReservaController.php`)
- Appointment booking → Time-slot availability: checks slots (evidence: `src/Controller/ReservaController.php`)
- Appointment booking → Vehicle queries: lists available cars (evidence: `src/Controller/ReservaController.php`)
- Appointment booking → Appointment queries: loads appointments (evidence: `src/Controller/ReservaController.php`)
- Appointment booking → Appointment notices: sends notices (evidence: `src/Controller/ReservaController.php`)
- Reservation rules → Time-slot availability: validates slots (evidence: `src/Manager/ReservaManager.php`)
- Reservation rules → Appointment queries: queries appointments (evidence: `src/Manager/ReservaManager.php`)
- Time-slot availability → Appointment queries: reads occupied times (evidence: `src/Service/DisponibilidadCitaService.php`)
- Inventory management → Vehicle records: manages vehicles (evidence: `src/Controller/InventarioController.php`)
- User management → User operations: delegates to (evidence: `src/Controller/UsuarioController.php`)
- User management → User queries: queries users (evidence: `src/Controller/UsuarioController.php`)
- User operations → User queries: manages users (evidence: `src/Manager/UsuarioManager.php`)
- User operations → Role queries: looks up roles (evidence: `src/Manager/UsuarioManager.php`)
- Sign-in → Security operations: uses
- Security operations → Role queries: loads roles (evidence: `src/Manager/SecurityManager.php`)
- Security operations → User records: checks users (evidence: `src/Manager/SecurityManager.php`)
- Vehicle records → Doctrine database: mapped to (evidence: `src/Entity/Auto.php`)
- Appointment records → Doctrine database: mapped to (evidence: `src/Entity/Cita.php`)
- Inquiry records → Doctrine database: mapped to (evidence: `src/Entity/Consulta.php`)
- Favorite records → Doctrine database: mapped to (evidence: `src/Entity/Favorito.php`)
- Vehicle images → Doctrine database: mapped to (evidence: `src/Entity/ImagenAuto.php`)
- Make records → Doctrine database: mapped to (evidence: `src/Entity/Marca.php`)
- Model records → Doctrine database: mapped to (evidence: `src/Entity/Modelo.php`)
- Role records → Doctrine database: mapped to (evidence: `src/Entity/Rol.php`)
- User records → Doctrine database: mapped to (evidence: `src/Entity/Usuario.php`)
- Vehicle queries → Vehicle records: queries (evidence: `src/Repository/AutoRepository.php`)
- Appointment queries → Appointment records: queries (evidence: `src/Repository/CitaRepository.php`)
- Inquiry queries → Inquiry records: queries (evidence: `src/Repository/ConsultaRepository.php`)
- Favorite queries → Favorite records: queries (evidence: `src/Repository/FavoritoRepository.php`)
- Role queries → Role records: queries (evidence: `src/Repository/RolRepository.php`)
- User queries → User records: queries (evidence: `src/Repository/UsuarioRepository.php`)
