Files
hr-portal/app/backend/src/employees/dto/employee.dto.ts
T
TenX PM 87e9346d62 feat: complete HR portal full-stack application
- NestJS backend with 11 modules: Auth, Employees, Departments, Attendance, Leaves, Payroll, Reimbursements, Announcements, Tax, Reports, Admin
- JWT authentication with refresh tokens, role-based access (employee/hr_admin/super_admin)
- MongoDB schemas with Mongoose for all entities
- PDF payslip generation with pdfkit
- OpenTelemetry tracing to SigNoz
- Automatic database seeding on first startup
- Next.js 14 frontend with App Router, Tailwind CSS
- 25 pages covering all employee, HR admin, and super admin workflows
- Multi-stage Dockerfile with nginx proxy
- test-manifest.json for E2E testing

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-04 19:32:52 +00:00

54 lines
1.9 KiB
TypeScript

import { IsString, IsEmail, IsOptional, IsEnum, IsBoolean, IsNumber, IsDateString } from 'class-validator';
export class CreateEmployeeDto {
@IsString() employeeId: string;
@IsString() firstName: string;
@IsString() lastName: string;
@IsEmail() email: string;
@IsOptional() @IsString() phone?: string;
@IsOptional() @IsString() department?: string;
@IsOptional() @IsString() designation?: string;
@IsOptional() @IsDateString() dateOfBirth?: string;
@IsOptional() @IsDateString() dateOfJoining?: string;
@IsOptional() @IsString() address?: string;
@IsOptional() @IsString() panNumber?: string;
@IsOptional() @IsString() bankAccountNumber?: string;
@IsOptional() @IsString() bankIfscCode?: string;
@IsOptional() @IsEnum(['employee', 'hr_admin', 'super_admin']) role?: string;
@IsString() password: string;
@IsOptional() salaryStructure?: {
basic?: number;
hra?: number;
da?: number;
specialAllowance?: number;
pfEmployee?: number;
pfEmployer?: number;
professionalTax?: number;
};
}
export class UpdateEmployeeDto {
@IsOptional() @IsString() firstName?: string;
@IsOptional() @IsString() lastName?: string;
@IsOptional() @IsEmail() email?: string;
@IsOptional() @IsString() phone?: string;
@IsOptional() @IsString() department?: string;
@IsOptional() @IsString() designation?: string;
@IsOptional() @IsDateString() dateOfBirth?: string;
@IsOptional() @IsDateString() dateOfJoining?: string;
@IsOptional() @IsString() address?: string;
@IsOptional() @IsString() panNumber?: string;
@IsOptional() @IsString() bankAccountNumber?: string;
@IsOptional() @IsString() bankIfscCode?: string;
@IsOptional() @IsBoolean() isActive?: boolean;
@IsOptional() salaryStructure?: {
basic?: number;
hra?: number;
da?: number;
specialAllowance?: number;
pfEmployee?: number;
pfEmployer?: number;
professionalTax?: number;
};
}