/** * EmployeeService - Servicio para gestión de empleados * * CRUD de empleados con gestión de estado y asignaciones a obras. * * @module HR */ import { Repository } from 'typeorm'; import { Employee, EstadoEmpleado, Genero } from '../entities/employee.entity'; import { EmployeeFraccionamiento } from '../entities/employee-fraccionamiento.entity'; import { ServiceContext, PaginatedResult } from '../../../shared/services/base.service'; export interface CreateEmployeeDto { codigo: string; nombre: string; apellidoPaterno: string; apellidoMaterno?: string; curp?: string; rfc?: string; nss?: string; fechaNacimiento?: Date; genero?: Genero; email?: string; telefono?: string; direccion?: string; fechaIngreso: Date; puestoId?: string; departamento?: string; tipoContrato?: string; salarioDiario?: number; fotoUrl?: string; } export interface UpdateEmployeeDto { nombre?: string; apellidoPaterno?: string; apellidoMaterno?: string; curp?: string; rfc?: string; nss?: string; fechaNacimiento?: Date; genero?: Genero; email?: string; telefono?: string; direccion?: string; puestoId?: string; departamento?: string; tipoContrato?: string; salarioDiario?: number; fotoUrl?: string; } export interface AssignFraccionamientoDto { fraccionamientoId: string; fechaInicio: Date; fechaFin?: Date; rol?: string; } export interface EmployeeFilters { estado?: EstadoEmpleado; puestoId?: string; departamento?: string; fraccionamientoId?: string; search?: string; } export interface EmployeeStats { total: number; activos: number; inactivos: number; bajas: number; porDepartamento: { departamento: string; count: number; }[]; } export declare class EmployeeService { private readonly employeeRepository; private readonly asignacionRepository; constructor(employeeRepository: Repository, asignacionRepository: Repository); findWithFilters(ctx: ServiceContext, filters?: EmployeeFilters, page?: number, limit?: number): Promise>; findById(ctx: ServiceContext, id: string): Promise; findByCodigo(ctx: ServiceContext, codigo: string): Promise; findByCurp(ctx: ServiceContext, curp: string): Promise; create(ctx: ServiceContext, dto: CreateEmployeeDto): Promise; update(ctx: ServiceContext, id: string, dto: UpdateEmployeeDto): Promise; changeStatus(ctx: ServiceContext, id: string, estado: EstadoEmpleado, fechaBaja?: Date): Promise; assignToFraccionamiento(ctx: ServiceContext, employeeId: string, dto: AssignFraccionamientoDto): Promise; removeFromFraccionamiento(ctx: ServiceContext, employeeId: string, fraccionamientoId: string): Promise; getEmployeesByFraccionamiento(ctx: ServiceContext, fraccionamientoId: string): Promise; getStats(ctx: ServiceContext): Promise; } //# sourceMappingURL=employee.service.d.ts.map