133 lines
2.2 KiB
TypeScript

import { IsBoolean, IsDateString, IsIn, IsInt, IsNumber, IsOptional, IsString, Max, Min } from "class-validator";
export class CreateBillPayeeDto {
@IsString()
name!: string;
@IsOptional()
@IsString()
nickname?: string;
@IsOptional()
@IsString()
category?: string;
@IsOptional()
@IsString()
website?: string;
@IsOptional()
@IsString()
accountNumberLast4?: string;
}
export class CreateBillDto {
@IsOptional()
@IsString()
payeeId?: string;
@IsString()
name!: string;
@IsNumber()
@Min(0.01)
amount!: number;
@IsOptional()
@IsString()
currency?: string;
@IsDateString()
dueDate!: string;
@IsOptional()
@IsIn(["pending", "scheduled"])
status?: "pending" | "scheduled";
@IsOptional()
@IsIn(["none", "weekly", "monthly", "quarterly", "yearly"])
recurrence?: "none" | "weekly" | "monthly" | "quarterly" | "yearly";
@IsOptional()
@IsBoolean()
autopay?: boolean;
@IsOptional()
@IsInt()
@Min(0)
@Max(30)
reminderDays?: number;
@IsOptional()
@IsString()
notes?: string;
}
export class UpdateBillDto {
@IsOptional()
@IsString()
payeeId?: string | null;
@IsOptional()
@IsString()
name?: string;
@IsOptional()
@IsNumber()
@Min(0.01)
amount?: number;
@IsOptional()
@IsString()
currency?: string;
@IsOptional()
@IsDateString()
dueDate?: string;
@IsOptional()
@IsIn(["pending", "scheduled", "paid", "skipped", "cancelled"])
status?: "pending" | "scheduled" | "paid" | "skipped" | "cancelled";
@IsOptional()
@IsIn(["none", "weekly", "monthly", "quarterly", "yearly"])
recurrence?: "none" | "weekly" | "monthly" | "quarterly" | "yearly";
@IsOptional()
@IsBoolean()
autopay?: boolean;
@IsOptional()
@IsInt()
@Min(0)
@Max(30)
reminderDays?: number;
@IsOptional()
@IsString()
notes?: string | null;
}
export class MarkBillPaidDto {
@IsOptional()
@IsNumber()
@Min(0.01)
amount?: number;
@IsOptional()
@IsDateString()
paidAt?: string;
@IsOptional()
@IsIn(["manual", "autopay", "bank_bill_pay", "card", "ach", "check", "cash", "other"])
method?: string;
@IsOptional()
@IsString()
confirmationNumber?: string;
@IsOptional()
@IsString()
notes?: string;
}