Overview
PantallaDuenoCubit manages the complete restaurant owner experience including authentication, business profile management, table configuration, reservation oversight, and analytics. This is the central state manager for all owner-facing features.
Location: lib/presentacion/pantalla_dueno/pantalla_dueno_cubit.dart:14
Purpose
This Cubit coordinates:- Owner authentication and session management
- Business profile updates (name, phone, email, hours, etc.)
- Table (Mesa) CRUD operations
- Reservation viewing and cancellation (admin)
- Zone management
- Business rules configuration
- Restaurant history/story content
- Metrics and analytics
State Classes
The Cubit uses states defined inpantalla_dueno_estados_de_cubit.dart:
PantallaDuenoInicial
Initial state before authentication.PantallaDuenoCargando
Emitted during authentication or data loading.PantallaDuenoAutenticado
Emitted when owner is authenticated successfully.negocio: Complete business entity with all configuration
PantallaDuenoConError
Emitted on authentication failure or operation errors.Constructor
negocioRepositorio: Business data operationsmesaRepositorio: Table managementreservaRepositorio: Reservation queriescancelarReservaUseCase: Admin cancellation logichorarioAperturaRepositorio: Operating hourshistoriaRepositorio: Restaurant story content
Authentication Methods
autenticar
Authenticates owner with email and password.email: Owner’s emailpassword: Owner’s password
PantallaDuenoCargando→ AuthenticatingPantallaDuenoAutenticado→ Success with business dataPantallaDuenoConError→ Invalid credentials or error
pantalla_dueno_cubit.dart:36
establecerNegocioAutenticado
Directly sets authenticated business (used after external auth).pantalla_dueno_cubit.dart:32
cerrarSesion
Logs out the owner and returns to initial state.pantalla_dueno_cubit.dart:55
Business Profile Methods
actualizarTelefono
Updates restaurant phone number.negocio: Current business entitynuevoTelefono: New phone number
true if update successful
Side Effects:
- Resets
telefonoVerificadotofalsewhen phone changes - Updates state with new business entity on success
pantalla_dueno_cubit.dart:59
actualizarNombre
Updates restaurant name.pantalla_dueno_cubit.dart:118
actualizarIcono
Updates restaurant icon/logo.nuevoIcono: Icon name (e.g., “local_pizza”, “sailing”, “restaurant”)
pantalla_dueno_cubit.dart:141
actualizarEspecialidad
Updates restaurant specialty.pantalla_dueno_cubit.dart:81
actualizarDescripcion
Updates restaurant description.pantalla_dueno_cubit.dart:164
actualizarZonas
Updates the list of zones in the restaurant.zonas: List of zone names (e.g., [“Terraza”, “Salón”, “Jardín”])
pantalla_dueno_cubit.dart:104
actualizarConfiguracionReglas
Updates business rules configuration.duracionPromedioMinutos: Reservation duration (e.g., 60, 90, 120)minHorasParaCancelar: Minimum hours before reservation to allow cancellationmaxDiasAnticipacionReserva: Maximum days in advance to make reservation
pantalla_dueno_cubit.dart:229
Operating Hours Methods
obtenerHorarios
Retrieves operating hours for the business.{"Lunes": "12:00 - 23:00"})
Source: pantalla_dueno_cubit.dart:187
actualizarHorarios
Updates operating hours.horarios: Map of day names to hour ranges or “Cerrado”
pantalla_dueno_cubit.dart:193
Table (Mesa) Management Methods
obtenerMesasDelNegocio
Retrieves all tables for the restaurant.pantalla_dueno_cubit.dart:258
agregarMesa
Creates a new table.nombre: Table name (e.g., “Mesa 1”, “Terraza A”)capacidad: Maximum number of guestszona: Zone where table is located
null on error
Source: pantalla_dueno_cubit.dart:262
actualizarMesa
Updates an existing table.pantalla_dueno_cubit.dart:283
eliminarMesa
Deletes a table.pantalla_dueno_cubit.dart:292
Reservation Management Methods
obtenerReservasDelNegocio
Retrieves all reservations for the restaurant.pantalla_dueno_cubit.dart:302
cancelarReservaAdmin
Cancels a reservation as administrator.reservaId: ID of reservation to cancelmotivo: Optional cancellation reason
true if cancellation successful
Important: This delegates to CancelarReserva.ejecutarComoAdmin() which:
- Marks cancellation as admin-initiated
- Sends notification email to customer
- Records cancellation reason in history
- Bypasses customer cancellation window checks
pantalla_dueno_cubit.dart:320
Restaurant History Methods
obtenerHistoria
Retrieves restaurant history/story content.pantalla_dueno_cubit.dart:207
guardarHistoria
Saves restaurant history content.pantalla_dueno_cubit.dart:216
Metrics and Analytics Methods
obtenerMetricasReservas
Calculates comprehensive reservation metrics.reservasPorDia: Map of last 7 days to reservation countreservasPorMes: Map of last 6 months to reservation counthorariosPico: Top 3 busiest hours with countshorariosPocoMovimiento: Top 3 slowest hours with countstotalReservas: Total active reservationsreservasHoy: Reservations for todayreservasMesActual: Reservations for current month
- Excludes canceled reservations from metrics
- Groups by day, month, and hour
- Provides actionable insights for capacity planning
pantalla_dueno_cubit.dart:342
State Transition Diagram
Usage Example
Frompantalla_dueno_screen.dart:34:
Dashboard Screen Integration
Frompantalla_dueno_screen.dart:218:
Profile Update Example
Frompantalla_dueno_screen.dart:743:
Integration Points
With Repositories
NegocioRepositorio: Business CRUD and authenticationMesaRepositorio: Table managementReservaRepositorio: Reservation queriesHorarioAperturaRepositorio: Operating hours managementHistoriaRepositorio: Restaurant story content
With Use Cases
CancelarReserva: Admin-initiated cancellations with notifications
With UI Components
PantallaDuenoScreen: Main owner dashboard- Profile update dialogs for each business field
- Table management screens
- Reservation list with admin actions
- Metrics dashboard with charts
Security Considerations
- Authentication Required: All operations require authenticated state
- Session Management: State cleared on logout
- Admin Actions: Cancellations marked as admin-initiated
- Audit Trail: All changes logged in history
- Email Verification: Business rules for phone verification
Error Handling Pattern
- Update methods return
boolfor success/failure - Errors emitted as states for snackbar display
- State remains authenticated even on update failures
- Caller can check return value for UI feedback
State Management Patterns
- Authenticated Context: Most operations require
PantallaDuenoAutenticadostate - Optimistic Updates: State updated immediately on success
- Error Recovery: Failed updates don’t log out user
- Direct Repository Access: Methods often return data directly without emitting states
- Hybrid Pattern: State for auth, direct returns for queries
Related Documentation
- DisponibilidadCubit - Customer reservation flow
- MisReservasCubit - Customer reservation management
- Negocio Entity - Business entity
- Mesa Entity - Table entity
- Reserva Entity - Reservation entity
- CancelarReserva Use Case - Cancellation logic