68 lines
1.6 KiB
TypeScript
68 lines
1.6 KiB
TypeScript
/** Mirrors StaffDto. */
|
|
export interface StaffMember {
|
|
staffId: string
|
|
userId: string
|
|
userName?: string | null
|
|
email?: string | null
|
|
phoneNumber?: string | null
|
|
clientId: string
|
|
clientName?: string | null
|
|
gymRoleId?: string | null
|
|
gymRoleName?: string | null
|
|
staffPosition?: string | null
|
|
department?: string | null
|
|
hireDate: string
|
|
isActive: boolean
|
|
createdAt: string
|
|
fingerprintId?: number | null
|
|
fingerprintName?: string | null
|
|
accessProfileId?: number | null
|
|
accessNumber?: string | null
|
|
accessProvisionStatus?: "NotConfigured" | "NoDevice" | "Pending" | "Synced" | "Failed"
|
|
actualAccessState?: "Unknown" | "Enabled" | "Disabled" | "Mixed"
|
|
desiredAccessState?: "Enabled" | "Disabled"
|
|
fingerprintCount?: number
|
|
accessLastError?: string | null
|
|
}
|
|
|
|
export interface StaffInput {
|
|
userName: string
|
|
email: string
|
|
phoneNumber: string
|
|
staffPosition?: string
|
|
department?: string
|
|
/** "yyyy-MM-dd" — create only. */
|
|
hireDate?: string
|
|
/** Create only. Left unset, the new staff member has no dashboard access until a role
|
|
* is assigned later via Roles & Permissions. */
|
|
gymRoleId?: string
|
|
}
|
|
|
|
export type StaffRateType = "Monthly" | "Hourly"
|
|
|
|
/** Mirrors StaffPayRateDto. */
|
|
export interface StaffPayRate {
|
|
id: string
|
|
rateType: StaffRateType
|
|
amount: number
|
|
effectiveFrom: string
|
|
}
|
|
|
|
export interface UpsertStaffPayRateInput {
|
|
rateType: StaffRateType
|
|
amount: number
|
|
}
|
|
|
|
/** Mirrors StaffPaymentDto. */
|
|
export interface StaffPayment {
|
|
id: string
|
|
amount: number
|
|
note?: string | null
|
|
paidAt: string
|
|
}
|
|
|
|
export interface RecordStaffPaymentInput {
|
|
amount: number
|
|
note?: string
|
|
}
|