Files
Goa-gel-fullstack/frontend/src/app/api/models/request.models.ts
Mahi 80566bf0a2 feat: Goa GEL Blockchain e-Licensing Platform - Full Stack Implementation
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
2026-02-07 10:23:29 -04:00

104 lines
2.4 KiB
TypeScript

/**
* Request API Models
* Models for license request management
*/
import { ApprovalStatus } from './approval.models';
export type RequestType = 'NEW_LICENSE' | 'RENEWAL' | 'AMENDMENT' | 'MODIFICATION' | 'CANCELLATION';
export type RequestStatus = 'DRAFT' | 'SUBMITTED' | 'IN_REVIEW' | 'PENDING_RESUBMISSION' | 'APPROVED' | 'REJECTED' | 'REVOKED' | 'CANCELLED';
export interface CreateRequestDto {
applicantId: string;
requestType: RequestType;
workflowId: string;
metadata: Record<string, any>;
tokenId?: number;
}
export interface UpdateRequestDto {
businessName?: string;
description?: string;
metadata?: Record<string, any>;
}
export interface RequestResponseDto {
id: string;
requestNumber: string;
applicantId: string;
requestType: RequestType;
status: RequestStatus;
currentStageId?: string;
metadata: Record<string, any>;
blockchainTxHash?: string;
tokenId?: string;
createdAt: string;
updatedAt: string;
submittedAt?: string;
approvedAt?: string;
}
export interface DocumentDetailDto {
id: string;
docType: string;
originalFilename: string;
currentVersion: number;
currentHash: string;
minioBucket: string;
isActive: boolean;
createdAt: string;
updatedAt: string;
}
export interface ApprovalDetailDto {
id: string;
departmentId: string;
status: ApprovalStatus;
remarks?: string;
reviewedDocuments: string[];
createdAt: string;
updatedAt: string;
invalidatedAt?: string;
invalidationReason?: string;
}
export interface RequestDetailResponseDto {
id: string;
requestNumber: string;
applicantId: string;
requestType: RequestType;
status: RequestStatus;
currentStageId?: string;
metadata: Record<string, any>;
blockchainTxHash?: string;
tokenId?: string;
documents: DocumentDetailDto[];
approvals: ApprovalDetailDto[];
createdAt: string;
updatedAt: string;
submittedAt?: string;
approvedAt?: string;
}
export interface PaginatedRequestsResponse {
data: RequestResponseDto[];
total: number;
page: number;
limit: number;
totalPages: number;
hasNextPage: boolean;
}
export interface RequestFilters {
status?: RequestStatus;
requestType?: RequestType;
applicantId?: string;
requestNumber?: string;
startDate?: string;
endDate?: string;
page?: number;
limit?: number;
sortBy?: 'createdAt' | 'updatedAt' | 'requestNumber' | 'status';
sortOrder?: 'ASC' | 'DESC';
}