mirror of
https://github.com/HamzaSha1/zod-backend.git
synced 2026-03-10 18:31:46 +00:00
- Added KycNotificationListener to handle notifications for KYC approval and rejection events. - Introduced CardNotificationListener to manage notifications for card creation and blocking events. - Enhanced CardService to emit events for card creation and blocking, integrating with the new notification system. - Updated notification constants and interfaces to include new KYC and card-related events. - Improved notification message formatting and added localization support for new events.
222 lines
5.1 KiB
TypeScript
222 lines
5.1 KiB
TypeScript
import { Transaction } from '~/card/entities/transaction.entity';
|
|
import { Card } from '~/card/entities/card.entity';
|
|
import { MoneyRequest } from '~/money-request/entities/money-request.entity';
|
|
import { Customer } from '~/customer/entities';
|
|
import { KycStatus } from '~/customer/enums';
|
|
|
|
/**
|
|
* Event payload for when a transaction is created
|
|
* Used to notify users about transactions (spending or top-ups)
|
|
*/
|
|
export interface ITransactionCreatedEvent {
|
|
/** The transaction that was created */
|
|
transaction: Transaction;
|
|
|
|
/** The card used in the transaction (with all relations loaded) */
|
|
card: Card;
|
|
|
|
/** True if this is a top-up/load transaction, false if spending */
|
|
isTopUp: boolean;
|
|
|
|
/** True if this transaction was made by a child (requires parent notification) */
|
|
isChildSpending: boolean;
|
|
|
|
/** When the event occurred */
|
|
timestamp: Date;
|
|
}
|
|
|
|
/**
|
|
* Event payload for when a money request is created
|
|
* Used to notify parents when their child requests money
|
|
*/
|
|
export interface IMoneyRequestCreatedEvent {
|
|
/** The money request that was created */
|
|
moneyRequest: MoneyRequest;
|
|
|
|
/** When the event occurred */
|
|
timestamp: Date;
|
|
}
|
|
|
|
/**
|
|
* Event payload for when a money request is approved
|
|
* Used to notify children when their money request is approved
|
|
*/
|
|
export interface IMoneyRequestApprovedEvent {
|
|
/** The money request that was approved */
|
|
moneyRequest: MoneyRequest;
|
|
|
|
/** When the event occurred */
|
|
timestamp: Date;
|
|
}
|
|
|
|
/**
|
|
* Event payload for when a money request is declined
|
|
* Used to notify children when their money request is declined
|
|
*/
|
|
export interface IMoneyRequestDeclinedEvent {
|
|
/** The money request that was declined */
|
|
moneyRequest: MoneyRequest;
|
|
|
|
/** Rejection reason provided by parent */
|
|
rejectionReason?: string;
|
|
|
|
/** When the event occurred */
|
|
timestamp: Date;
|
|
}
|
|
|
|
/**
|
|
* Event payload for when KYC is approved
|
|
* Used to notify users when their KYC verification is approved
|
|
*/
|
|
export interface IKycApprovedEvent {
|
|
/** The customer whose KYC was approved */
|
|
customer: Customer;
|
|
|
|
/** Previous KYC status */
|
|
previousStatus: KycStatus;
|
|
|
|
/** When the event occurred */
|
|
timestamp: Date;
|
|
}
|
|
|
|
/**
|
|
* Event payload for when KYC is rejected
|
|
* Used to notify users when their KYC verification is rejected
|
|
*/
|
|
export interface IKycRejectedEvent {
|
|
/** The customer whose KYC was rejected */
|
|
customer: Customer;
|
|
|
|
/** Previous KYC status */
|
|
previousStatus: KycStatus;
|
|
|
|
/** Rejection reason (if provided) */
|
|
rejectionReason?: string;
|
|
|
|
/** When the event occurred */
|
|
timestamp: Date;
|
|
}
|
|
|
|
/**
|
|
* Event payload for when a card is created
|
|
* Used to notify users when their card is successfully created
|
|
*/
|
|
export interface ICardCreatedEvent {
|
|
/** The card that was created */
|
|
card: Card;
|
|
|
|
/** When the event occurred */
|
|
timestamp: Date;
|
|
}
|
|
|
|
/**
|
|
* Event payload for when a card is blocked
|
|
* Used to notify users when their card is blocked
|
|
*/
|
|
export interface ICardBlockedEvent {
|
|
/** The card that was blocked */
|
|
card: Card;
|
|
|
|
/** Previous card status */
|
|
previousStatus: string;
|
|
|
|
/** Block reason/description */
|
|
blockReason?: string;
|
|
|
|
/** When the event occurred */
|
|
timestamp: Date;
|
|
}
|
|
|
|
/**
|
|
* Event payload for when a card is reissued
|
|
* Used to notify users when their card is reissued
|
|
*/
|
|
export interface ICardReissuedEvent {
|
|
/** The new card that was issued */
|
|
card: Card;
|
|
|
|
/** The old card that was replaced */
|
|
oldCardId?: string;
|
|
|
|
/** When the event occurred */
|
|
timestamp: Date;
|
|
}
|
|
|
|
/**
|
|
* Event payload for when a user profile is updated
|
|
* Used to notify users when their profile information is changed
|
|
*/
|
|
export interface IProfileUpdatedEvent {
|
|
/** The user whose profile was updated */
|
|
user: any;
|
|
|
|
/** Fields that were updated */
|
|
updatedFields: string[];
|
|
|
|
/** When the event occurred */
|
|
timestamp: Date;
|
|
}
|
|
|
|
/**
|
|
* Event payload for system maintenance alerts
|
|
* Used to notify users about scheduled or unscheduled maintenance
|
|
*/
|
|
export interface IMaintenanceAlertEvent {
|
|
/** User ID to notify (null for broadcast to all users) */
|
|
userId: string | null;
|
|
|
|
/** Maintenance message */
|
|
message: string;
|
|
|
|
/** Scheduled start time */
|
|
startTime?: Date;
|
|
|
|
/** Scheduled end time */
|
|
endTime?: Date;
|
|
|
|
/** When the event occurred */
|
|
timestamp: Date;
|
|
}
|
|
|
|
/**
|
|
* Event payload for failed transaction alerts
|
|
* Used to notify users when a transaction fails
|
|
*/
|
|
export interface ITransactionFailedEvent {
|
|
/** The user whose transaction failed */
|
|
userId: string;
|
|
|
|
/** Transaction details */
|
|
transactionId?: string;
|
|
|
|
/** Failure reason */
|
|
reason: string;
|
|
|
|
/** Transaction amount (if applicable) */
|
|
amount?: number;
|
|
|
|
/** When the event occurred */
|
|
timestamp: Date;
|
|
}
|
|
|
|
/**
|
|
* Event payload for suspicious login detection
|
|
* Used to notify users about suspicious login attempts
|
|
*/
|
|
export interface ISuspiciousLoginEvent {
|
|
/** The user whose account had suspicious activity */
|
|
userId: string;
|
|
|
|
/** IP address of the login attempt */
|
|
ipAddress?: string;
|
|
|
|
/** Location of the login attempt */
|
|
location?: string;
|
|
|
|
/** Device information */
|
|
device?: string;
|
|
|
|
/** When the event occurred */
|
|
timestamp: Date;
|
|
}
|