Biblioteca de contratos, DTOs, mappers y validadores para el sistema Exphadis. Este paquete define las estructuras de datos y reglas de validación utilizadas en la comunicación entre capas de la aplicación.
- Características
- Requisitos
- Instalación
- Uso
- Estructura del Proyecto
- DTOs Disponibles
- Validadores
- Mappers
- Dependencias
- Contribuir
- DTOs: Objetos de transferencia de datos para todas las entidades del sistema
- Validadores: Validación automática usando FluentValidation
- Mappers: Configuración de AutoMapper para conversión entre entidades y DTOs
- Enumeraciones: Tipos enumerados compartidos
- Excepciones: Excepciones personalizadas del dominio
- Extensiones: Métodos de extensión para registro de servicios
- .NET 8.0 o superior
- AutoMapper 12.0.1+
- FluentValidation 11.9.0+
dotnet add package Exphadis.Core.Contract# Clonar el repositorio
git clone https://github.com/walberth/exphadis-core-contract.git
cd exphadis-core-contract
# Restaurar dependencias
dotnet restore
# Compilar
dotnet buildEn tu Program.cs o Startup.cs:
using Exphadis.Core.Contract;
// En ConfigureServices
services.AddContractsDependency();Esto registra automáticamente:
- Perfiles de AutoMapper
- Validadores de FluentValidation
using Exphadis.Core.Contract.Dto;
// Crear un DTO de estudiante
var studentDto = new StudentDto
{
Id = Guid.NewGuid(),
FirstName = "Juan",
LastName = "Pérez",
Email = "juan.perez@ejemplo.com"
};using FluentValidation;
public class MyService
{
private readonly IValidator<StudentDto> _validator;
public MyService(IValidator<StudentDto> validator)
{
_validator = validator;
}
public async Task<bool> ValidateStudent(StudentDto student)
{
var result = await _validator.ValidateAsync(student);
return result.IsValid;
}
}using AutoMapper;
public class StudentService
{
private readonly IMapper _mapper;
public StudentService(IMapper mapper)
{
_mapper = mapper;
}
public StudentDto ConvertToDto(Student entity)
{
return _mapper.Map<StudentDto>(entity);
}
}exphadis-core-contract/
├── Dto/ # Objetos de transferencia de datos
│ ├── Base/ # DTOs base
│ ├── StudentDto.cs
│ ├── UserDto.cs
│ ├── PaymentDto.cs
│ └── ...
├── Enums/ # Enumeraciones
├── Exception/ # Excepciones personalizadas
├── Mapper/ # Perfiles de AutoMapper
│ ├── AuthenticationProfile.cs
│ ├── StudentProfile.cs
│ └── ...
├── Validator/ # Validadores FluentValidation
├── ServiceExtension.cs # Extensiones de DI
└── GlobalUsing.cs # Using globales
StudentDto- Información de estudiantesEnrollmentDto- MatrículasCourseDto- CursosSubjectDto- AsignaturasQualificationDto- CalificacionesCertificateCourseDto- Certificados
PaymentDto- PagosPaymentPlanDto- Planes de pagoBankPaymentDto- Pagos bancariosVoucherPaymentDto- ComprobantesMoneyMovementDto- Movimientos financieros
UserDto- Usuarios del sistemaRoleDto- RolesPermissionDto- PermisosSessionDto- Sesiones
WorkerDto- TrabajadoresWorkerPaymentDto- Pagos a trabajadoresWorkerEvaluationDto- Evaluaciones
NotificationDto- NotificacionesLogDto- Registros de auditoríaMediaDto- Archivos multimediaEmailDto- Correos electrónicos
Ver la carpeta Dto/ para la lista completa.
Los validadores se registran automáticamente y validan:
- Campos requeridos
- Formatos de email
- Longitudes de cadenas
- Rangos numéricos
- Reglas de negocio específicas
Ejemplo de validación personalizada:
public class StudentDtoValidator : AbstractValidator<StudentDto>
{
public StudentDtoValidator()
{
RuleFor(x => x.Email)
.NotEmpty()
.EmailAddress();
RuleFor(x => x.FirstName)
.NotEmpty()
.MaximumLength(100);
}
}Perfiles de AutoMapper disponibles:
AuthenticationProfile- Login y autenticaciónUserProfile- UsuariosStudentProfile- EstudiantesPaymentProfile- PagosWorkerProfile- TrabajadoresNoteProfile- CalificacionesCourseProfile- CursosTutorshipProfile- TutoríasEnrollmentProfile- MatrículasMasterDataProfile- Datos maestrosAttorneyProfile- Apoderados
<PackageReference Include="AutoMapper" Version="12.0.1" />
<PackageReference Include="FluentValidation.DependencyInjectionExtensions" Version="11.9.0" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="9.0.10" />
<PackageReference Include="Microsoft.Extensions.Logging" Version="9.0.10" />
<PackageReference Include="Microsoft.AspNetCore.Http.Abstractions" Version="2.3.0" />
<PackageReference Include="Walberth.Helper" Version="0.*" />
<PackageReference Include="Exphadis.Core.Domain" Version="0.*" />Este es un proyecto privado de Exphadis. Para contribuir:
- Crear una rama desde
main - Realizar los cambios necesarios
- Asegurar que todas las pruebas pasen
- Crear un Pull Request
- Usar PascalCase para nombres de clases y propiedades
- Incluir validadores para todos los DTOs nuevos
- Documentar propiedades públicas con comentarios XML
- Seguir los principios SOLID
Copyright (c) 2025 Exphadis. Todos los derechos reservados.
Este es un proyecto privado y propietario.
- Walberth - walberth
Para preguntas o soporte, contactar al equipo de desarrollo de Exphadis.
Nota: Este paquete es parte del ecosistema Exphadis y debe usarse junto con Exphadis.Core.Domain y otros paquetes relacionados.