New /dashboard/templates page (MANAGER/ADMIN, matches backend access): lists document templates, lets MANAGER/ADMIN download the current file and ADMIN replace it. Nav link added to the header. Also renamed "Genera Attestato" to "Genera Certificato di Adesione" and the downloaded file's name prefix to match, for consistency with the document's real name. Verified live: nav link navigates to the page, download round-trips the file, and uploading a new file updates the listed filename and timestamp immediately. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017hQcuUQFue2bFvrYw2UQhK
47 lines
912 B
TypeScript
47 lines
912 B
TypeScript
export interface Associate {
|
|
name: string;
|
|
surname: string;
|
|
birthDate: string;
|
|
address: string;
|
|
fiscalCode: string;
|
|
italianCitizen: boolean;
|
|
role: 'PRESIDENT' | 'VICE_PRESIDENT' | 'SECRETARY' | 'ASSOCIATE';
|
|
residencePermitNumber?: string;
|
|
}
|
|
|
|
export interface User {
|
|
id?: string;
|
|
email: string;
|
|
password?: string;
|
|
role: 'CLIENT' | 'MANAGER' | 'ADMIN';
|
|
}
|
|
|
|
export interface Association {
|
|
id?: string;
|
|
runtsId?: string;
|
|
name: string;
|
|
address: string;
|
|
created?: string;
|
|
isShown?: boolean;
|
|
vatNumber?: string;
|
|
translit?: string;
|
|
associates?: Associate[];
|
|
users?: User[];
|
|
ratificationCode?: string;
|
|
nasFolderNumber?: number;
|
|
}
|
|
|
|
export interface DocumentTemplate {
|
|
id?: string;
|
|
key: string;
|
|
name: string;
|
|
fileName: string;
|
|
contentType: string;
|
|
updatedAt?: string;
|
|
}
|
|
|
|
export interface LoginResponse {
|
|
token: string;
|
|
user: User;
|
|
association: Association;
|
|
} |