133 lines
2.2 KiB
TypeScript
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;
|
|
}
|