dt-common-device
Version:
A secure and robust device management library for IoT applications
158 lines (157 loc) • 7.01 kB
TypeScript
import { IAlertDocument } from "./Alert.model";
import { CreateAlertData, UpdateAlertData, AlertCategory, AlertSeverity, IAlertQuery } from "./alert.types";
import { AlertBuilder } from "./AlertBuilder";
import { IDevice } from "../entities/device/local/interfaces";
import { Source } from "../constants";
export declare class AlertService {
private readonly alertRepository;
constructor();
/**
* Create an operations alert using AlertBuilder
*/
raiseOperationsAlert(data: CreateAlertData): Promise<IAlertDocument | null>;
/**
* Create a security alert using AlertBuilder
*/
raiseSecurityAlert(data: CreateAlertData): Promise<IAlertDocument | null>;
raiseDeviceAlert(data: CreateAlertData): Promise<IAlertDocument | null>;
/**
* Create a hub-specific alert using AlertBuilder
*/
raiseHubAlert(data: CreateAlertData): Promise<IAlertDocument | null>;
raiseDeviceTamperAttemptAlert(device: IDevice, zone: any, source: Source): Promise<IAlertDocument | null>;
raiseDoorLeftOpenAlert(device: IDevice, zone: any, openThreshold: number, source: Source): Promise<IAlertDocument | null>;
raiseIncorrectCodeAlert(device: IDevice, zone: any, source: Source, accessCount: number, timeWindow: {
startDate: string;
endDate: string;
}): Promise<IAlertDocument | null>;
raiseNewDeviceAlert(connection: {
id: string;
provider: string;
deviceCount: number;
type?: string;
}, propertyId: string, source: Source): Promise<IAlertDocument | null>;
raiseDoorOpenFrequentAlert(device: IDevice, zone: any, accessTimes: number, openThreshold: number, source: Source): Promise<IAlertDocument | null>;
raiseDoorOpenOutsideBusinessHoursAlert(device: IDevice, zone: any, source: Source): Promise<IAlertDocument | null>;
/**
* Raise alert for device coming online (OPERATIONAL only)
*/
raiseDeviceOnlineAlert(device: IDevice, source: Source): Promise<IAlertDocument | null>;
raiseLockAccessEmergencyCodeAlert(device: IDevice, zone: any, source: Source): Promise<IAlertDocument | null>;
raiseLockAccessEmergencyRfidAlert(device: IDevice, zone: any, source: Source): Promise<IAlertDocument | null>;
raiseLockAccessMasterRfidAlert(device: IDevice, zone: any, source: Source): Promise<IAlertDocument | null>;
raiseLockAccessMasterCodeAlert(device: IDevice, zone: any, source: Source): Promise<IAlertDocument | null>;
raiseSpecificDoorAccessAlert(userName: string, device: IDevice, zone: any, source: Source): Promise<IAlertDocument | null>;
raiseGuestLockFirstAccessAlert(userName: string, device: IDevice, zone: any, source: Source): Promise<IAlertDocument | null>;
raiseZoneNotMappedToAccessGroupAlert(zone: any, source: Source): Promise<IAlertDocument | null>;
/**
* Create a new alert with business logic validation
* Accepts either a CreateAlertData object or an AlertBuilder instance
*/
createAlert(alertData: CreateAlertData | AlertBuilder): Promise<IAlertDocument | null>;
/**
* Get alert by ID with business logic
*/
getAlertById(id: string, includeDeleted?: boolean): Promise<IAlertDocument | null>;
/**
* Get all alerts with business logic filtering
*/
queryAlerts(filters?: IAlertQuery): Promise<IAlertDocument[]>;
alertCount(filters: IAlertQuery): Promise<number>;
/**
* Update an alert with business logic validation
*/
updateAlert(id: string, updateData: UpdateAlertData): Promise<IAlertDocument | null>;
deleteAlerts(filters: IAlertQuery, deletedBy: string, softDelete?: boolean): Promise<boolean>;
/**
* Soft delete an alert with business logic
*/
deleteAlert(id: string, deletedBy: string): Promise<boolean>;
/**
* Mark alert as read with business logic
*/
markAsRead(id: string, updatedBy: string): Promise<IAlertDocument | null>;
/**
* Mark alert as unread with business logic
*/
markAsUnread(id: string, updatedBy: string): Promise<IAlertDocument | null>;
/**
* Activate an alert with business logic
*/
activateAlert(id: string, updatedBy: string): Promise<IAlertDocument | null>;
/**
* Deactivate an alert with business logic
*/
deactivateAlert(query: IAlertQuery, updatedBy: string): Promise<IAlertDocument | null>;
/**
* Snooze an alert with business logic
*/
snoozeAlert(id: string, updatedBy: string, until?: Date): Promise<IAlertDocument | null>;
/**
* Unsnooze an alert with business logic
*/
unsnoozeAlert(id: string, updatedBy: string): Promise<IAlertDocument | null>;
/**
* Get alerts by category with business logic
*/
getAlertsByCategory(category: AlertCategory, includeDeleted?: boolean): Promise<IAlertDocument[]>;
/**
* Get snoozed alerts with business logic
*/
getSnoozedAlerts(includeDeleted?: boolean): Promise<IAlertDocument[]>;
/**
* Get expired snooze alerts with business logic
*/
getExpiredSnoozeAlerts(includeDeleted?: boolean): Promise<IAlertDocument[]>;
/**
* Get alert statistics with business logic
*/
getAlertStatistics(propertyId?: string, zoneId?: string): Promise<{
total: number;
active: number;
unread: number;
snoozed: number;
bySeverity: Record<AlertSeverity, number>;
byCategory: Record<AlertCategory, number>;
}>;
/**
* Get alerts by zone ID
*/
getAlertsByZoneId(zoneId: string, includeDeleted?: boolean): Promise<IAlertDocument[]>;
/**
* Get alerts by zone ID and category
*/
getAlertsByZoneIdAndCategory(zoneId: string, category: AlertCategory, includeDeleted?: boolean): Promise<IAlertDocument[]>;
/**
* Get alerts by zone ID and severity
*/
getAlertsByZoneIdAndSeverity(zoneId: string, severity: AlertSeverity, includeDeleted?: boolean): Promise<IAlertDocument[]>;
/**
* Get alerts by multiple zone IDs
*/
getAlertsByZoneIds(zoneIds: string[], includeDeleted?: boolean): Promise<IAlertDocument[]>;
/**
* Get alert statistics by zone ID and severity
*/
getAlertStatisticsByZoneAndSeverity(zoneId: string, severity?: AlertSeverity): Promise<{
total: number;
active: number;
unread: number;
snoozed: number;
byCategory: Record<AlertCategory, number>;
}>;
/**
* Get alerts by zone ID and active status
*/
getAlertsByZoneIdAndActiveStatus(zoneId: string, isActive: boolean, includeDeleted?: boolean): Promise<IAlertDocument[]>;
/**
* Get alerts by zone ID and read status
*/
getAlertsByZoneIdAndReadStatus(zoneId: string, isRead: boolean, includeDeleted?: boolean): Promise<IAlertDocument[]>;
private validateAlertData;
private validateFilters;
private validateUpdateData;
private validateSnoozeDate;
private determineDefaultSeverity;
private applyBusinessRules;
}