Complete implementation of the Goa Government e-Licensing platform with: Backend: - NestJS API with JWT authentication - PostgreSQL database with Knex ORM - Redis caching and session management - MinIO document storage - Hyperledger Besu blockchain integration - Multi-department workflow system - Comprehensive API tests (266/282 passing) Frontend: - Angular 21 with standalone components - Angular Material + TailwindCSS UI - Visual workflow builder - Document upload with progress tracking - Blockchain explorer integration - Role-based dashboards (Admin, Department, Citizen) - E2E tests with Playwright (37 tests) Infrastructure: - Docker Compose orchestration - Blockscout blockchain explorer - Development and production configurations
43 lines
800 B
TypeScript
43 lines
800 B
TypeScript
import { PartialType } from '@nestjs/swagger';
|
|
import { CreateDepartmentDto } from './create-department.dto';
|
|
import {
|
|
IsString,
|
|
Matches,
|
|
MinLength,
|
|
IsOptional,
|
|
IsUrl,
|
|
IsEmail,
|
|
} from 'class-validator';
|
|
import { ApiProperty } from '@nestjs/swagger';
|
|
|
|
export class UpdateDepartmentDto extends PartialType(CreateDepartmentDto) {
|
|
@IsOptional()
|
|
@IsString()
|
|
@Matches(/^[A-Z_]+$/, {
|
|
message: 'Department code must contain only uppercase letters and underscores',
|
|
})
|
|
@MinLength(3)
|
|
code?: string;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
@MinLength(3)
|
|
name?: string;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
description?: string;
|
|
|
|
@IsOptional()
|
|
@IsEmail()
|
|
contactEmail?: string;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
contactPhone?: string;
|
|
|
|
@IsOptional()
|
|
@IsUrl()
|
|
webhookUrl?: string;
|
|
}
|