Files
Condopay/types.ts
frakarr fd107c1ef8 feat: Enhance condo and family data models
Adds new fields for detailed address information and notes to the Condo and Family types.
Updates database schema and server API endpoints to support these new fields, improving data richness for location and specific family/condo details.
2025-12-07 16:10:33 +01:00

111 lines
2.3 KiB
TypeScript

export interface Condo {
id: string;
name: string;
address?: string;
streetNumber?: string; // Civico
city?: string; // Città
province?: string; // Provincia
zipCode?: string; // CAP
notes?: string; // Note
iban?: string;
defaultMonthlyQuota: number;
image?: string; // Optional placeholder for logo
}
export interface Family {
id: string;
condoId: string; // Link to specific condo
name: string;
unitNumber: string; // Internal apartment number (Interno)
stair?: string; // Scala
floor?: string; // Piano
notes?: string; // Note
contactEmail?: string;
balance: number; // Calculated balance (positive = credit, negative = debt)
customMonthlyQuota?: number; // Optional override for default quota
}
export interface Payment {
id: string;
familyId: string;
amount: number;
datePaid: string; // ISO Date string
forMonth: number; // 1-12
forYear: number;
notes?: string;
}
export interface SmtpConfig {
host: string;
port: number;
user: string;
pass: string;
secure: boolean;
fromEmail: string;
}
export interface AlertDefinition {
id: string;
subject: string;
body: string;
daysOffset: number; // Number of days
offsetType: 'before_next_month' | 'after_current_month';
sendHour: number; // 0-23
active: boolean;
lastSent?: string; // ISO Date of last execution
}
export type NoticeIconType = 'info' | 'warning' | 'maintenance' | 'event';
export interface Notice {
id: string;
condoId: string;
title: string;
content: string;
type: NoticeIconType;
link?: string;
date: string; // ISO Date
active: boolean;
}
export interface NoticeRead {
userId: string;
noticeId: string;
readAt: string;
}
export interface AppSettings {
// Global settings only
currentYear: number; // The active fiscal year (could be per-condo, but global for simplicity now)
smtpConfig?: SmtpConfig;
}
export enum PaymentStatus {
PAID = 'PAID',
UNPAID = 'UNPAID', // Past due
UPCOMING = 'UPCOMING', // Future
PENDING = 'PENDING'
}
export interface MonthStatus {
monthIndex: number; // 0-11
status: PaymentStatus;
payment?: Payment;
}
export interface User {
id: string;
email: string;
name?: string;
role?: 'admin' | 'poweruser' | 'user';
phone?: string;
familyId?: string | null;
receiveAlerts?: boolean;
}
export interface AuthResponse {
token: string;
user: User;
}