Company Management provides tools for creating and managing transport companies, assigning drivers, and monitoring company performance within the Viax platform.
Companies are represented by a comprehensive entity:
admin/domain/entities/empresa_transporte.dart
class EmpresaTransporte { final int id; final String nombre; final String? nit; final String? razonSocial; final String? email; final String? telefono; final String? telefonoSecundario; final String? direccion; final String? municipio; final String? departamento; final String? representanteNombre; final String? representanteTelefono; final String? representanteEmail; final List<String> tiposVehiculo; final String? logoUrl; final String? descripcion; final EmpresaEstado estado; final bool verificada; final DateTime? fechaVerificacion; final int? verificadoPor; final int totalConductores; final int totalViajesCompletados; final double calificacionPromedio; final double comisionAdminPorcentaje; final DateTime creadoEn; final DateTime? actualizadoEn; final int? creadoPor; final String? notasAdmin;}
class EmpresaStats { final int totalEmpresas; final int activas; final int inactivas; final int pendientes; final int verificadas; final int totalConductores; final int totalViajes; const EmpresaStats({ required this.totalEmpresas, required this.activas, required this.inactivas, required this.pendientes, required this.verificadas, required this.totalConductores, required this.totalViajes, });}
abstract class EmpresaRepository { /// Get all companies with optional filters Future<Result<List<EmpresaTransporte>>> getEmpresas({ EmpresaEstado? estado, bool? verificada, int? page, int? limit, }); /// Get company by ID Future<Result<EmpresaTransporte>> getEmpresaById(int id); /// Create new company Future<Result<EmpresaTransporte>> createEmpresa( EmpresaTransporte empresa, ); /// Update company information Future<Result<EmpresaTransporte>> updateEmpresa( int id, Map<String, dynamic> updates, ); /// Delete company (soft delete) Future<Result<void>> deleteEmpresa(int id); /// Get company statistics Future<Result<EmpresaStats>> getEmpresaStats(); /// Verify company Future<Result<void>> verifyEmpresa(int id, int adminId); /// Get drivers by company Future<Result<List<dynamic>>> getDriversByEmpresa(int empresaId);}
Drivers can be assigned to companies for proper organization:
// In User Management, when editing a conductor:Future<bool> updateUser({ required int userId, String? tipoUsuario, int? empresaId, // Company ID to assign String? empresaNombre,}) async { final result = await manageUserUseCase.updateUser( adminId: adminId, userId: userId, tipoUsuario: tipoUsuario, empresaId: empresaId, ); return result.fold( (failure) => false, (success) { if (success && empresaId != null) { // Driver is now assigned to company notifyListeners(); } return success; }, );}
Drivers must be assigned to a company to ensure proper commission tracking and payment distribution.
class PlatformEarningsScreen extends StatefulWidget { final int adminId; const PlatformEarningsScreen({ super.key, required this.adminId, });}// Displays:// - Total trips per company// - Total earnings per company// - Platform commission earned// - Outstanding payments