139 lines
4.0 KiB
TypeScript
139 lines
4.0 KiB
TypeScript
import { FilterQuery } from "mongoose";
|
|
|
|
export type FindSystemNotificationsParams = {
|
|
id?: string;
|
|
userId?: string;
|
|
companyId?: string;
|
|
serviceId?: string;
|
|
conversationId?: string;
|
|
notificationDate?: Date;
|
|
readed?: boolean;
|
|
sessionUser: string;
|
|
};
|
|
|
|
export type ToggleStateSystemNotificationsParams = {
|
|
state: boolean;
|
|
sessionUser: string;
|
|
};
|
|
|
|
export type PaginateSystemNotificationsParams = {
|
|
query?: string;
|
|
userId?: string;
|
|
companyId?: string;
|
|
serviceId?: string;
|
|
conversationId?: string;
|
|
dateFrom?: Date;
|
|
dateTo?: Date;
|
|
readed?: boolean;
|
|
page: number;
|
|
limit: number;
|
|
sessionUser: string;
|
|
};
|
|
|
|
export type UnreadNotificationResults = {
|
|
count: number;
|
|
};
|
|
|
|
export type PaginateSystemNotificationsResults = {
|
|
data: ISystemNotification[];
|
|
page: number;
|
|
pages: number;
|
|
};
|
|
|
|
export enum NotificationType {
|
|
APPOINTMENT = 'APPOINTMENT',
|
|
COMPANY = 'COMPANY',
|
|
EMPLOYEE = 'EMPLOYEE',
|
|
SCHEDULE = 'SCHEDULE',
|
|
SCHEDULE_EXCEPTION = 'SCHEDULE_EXCEPTION',
|
|
SCHEDULE_RESTRICTION = 'SCHEDULE_RESTRICTION',
|
|
MESSAGE = 'MESSAGE',
|
|
BILLING = 'BILLING',
|
|
SYSTEM = 'SYSTEM'
|
|
}
|
|
|
|
export type CreateSystemNotificationParams = {
|
|
userId?: string;
|
|
companyId?: string;
|
|
serviceId?: number;
|
|
conversationId?: string;
|
|
subject: string;
|
|
message: string;
|
|
type?: string;
|
|
code?: string;
|
|
};
|
|
|
|
export type CreateSystemNotificationBySystemParams = CreateSystemNotificationParams & {
|
|
userId: string;
|
|
systemToken: string;
|
|
};
|
|
|
|
export type UpdateSystemNotificationParams = {
|
|
id: string;
|
|
readed: boolean;
|
|
sessionUser: string;
|
|
};
|
|
|
|
export type DeleteSystemNotificationParams = {
|
|
id: string;
|
|
sessionUser: string;
|
|
};
|
|
|
|
export type DeleteSystemNotificationsByConversation = {
|
|
conversationId: string;
|
|
userId: string;
|
|
sessionUser: string;
|
|
};
|
|
|
|
export type DeleteNotificationsByUserParams = {
|
|
userId: string;
|
|
};
|
|
|
|
export type DeleteNotificationsByDateParams = {
|
|
userId: string;
|
|
dateFrom?: Date;
|
|
dateTo?: Date;
|
|
sessionUser: string;
|
|
};
|
|
|
|
export interface ISystemNotification {
|
|
id?: string;
|
|
userId?: string;
|
|
companyId?: string;
|
|
serviceId?: string;
|
|
conversationId?: string;
|
|
subject: string;
|
|
message: string;
|
|
notificationDate: Date;
|
|
readed: boolean;
|
|
type?: string;
|
|
code?: string;
|
|
}
|
|
|
|
export interface ISystemNotificationsAdapter {
|
|
create(data: CreateSystemNotificationParams): Promise<ISystemNotification>;
|
|
update(data: UpdateSystemNotificationParams): Promise<void>;
|
|
delete(id: string): Promise<void>;
|
|
deleteMany(data: Omit<DeleteSystemNotificationsByConversation, "sessionUser">): Promise<void>;
|
|
find(filters: FindSystemNotificationsParams): Promise<ISystemNotification[]>;
|
|
findOne(filters: FindSystemNotificationsParams): Promise<ISystemNotification | null>;
|
|
paginate(filters: PaginateSystemNotificationsParams): Promise<PaginateSystemNotificationsResults>;
|
|
deleteByQuery(data: FilterQuery<ISystemNotification>): Promise<void>;
|
|
}
|
|
|
|
export interface ISystemNotificationsManager {
|
|
notifications: ISystemNotificationsAdapter;
|
|
createNotification(data: CreateSystemNotificationParams): Promise<ISystemNotification>;
|
|
createNotificationBySystem(data: CreateSystemNotificationBySystemParams): Promise<ISystemNotification>;
|
|
updateNotification(data: UpdateSystemNotificationParams): Promise<void>;
|
|
deleteNotification(data: DeleteSystemNotificationParams): Promise<void>;
|
|
deleteConversationNotifications(data: DeleteSystemNotificationsByConversation): Promise<void>;
|
|
paginateNotifications(
|
|
data: PaginateSystemNotificationsParams
|
|
): Promise<PaginateSystemNotificationsResults>;
|
|
finUnreadNotifications(data: FindSystemNotificationsParams): Promise<UnreadNotificationResults>;
|
|
deleteNotificationsByUser(data: DeleteNotificationsByUserParams): Promise<void>;
|
|
setStateByUser(data: ToggleStateSystemNotificationsParams): Promise<void>;
|
|
deleteNotificationsByDate(data: DeleteNotificationsByDateParams): Promise<void>;
|
|
}
|