UNPKG

skailan-conversations

Version:

Servicio de conversaciones y mensajería para Skailan

94 lines 3.37 kB
import { IConversationRepository } from "../repositories/IConversationRepository"; import { Conversation } from "../entities/Conversation"; export type ConversationStatus = "open" | "closed" | "pending" | "assigned" | "resolved"; export interface ConversationStateTransition { from: ConversationStatus; to: ConversationStatus; allowed: boolean; requiresAssignment?: boolean; autoAssign?: boolean; } export interface ConversationStateConfig { organizationId: string; autoAssignEnabled: boolean; autoAssignUserId?: string; maxResponseTime: number; autoCloseAfterHours: number; } export declare class ConversationStateService { private conversationRepository; private readonly stateTransitions; constructor(conversationRepository: IConversationRepository); /** * Cambia el estado de una conversación */ changeConversationState(conversationId: string, organizationId: string, newStatus: ConversationStatus, assignedToUserId?: string): Promise<Conversation>; /** * Asigna una conversación a un usuario */ assignConversation(conversationId: string, organizationId: string, userId: string): Promise<Conversation>; /** * Desasigna una conversación */ unassignConversation(conversationId: string, organizationId: string): Promise<Conversation>; /** * Marca una conversación como resuelta */ resolveConversation(conversationId: string, organizationId: string): Promise<Conversation>; /** * Cierra una conversación */ closeConversation(conversationId: string, organizationId: string): Promise<Conversation>; /** * Reabre una conversación cerrada */ reopenConversation(conversationId: string, organizationId: string): Promise<Conversation>; /** * Pone una conversación en espera */ putConversationOnHold(conversationId: string, organizationId: string): Promise<Conversation>; /** * Obtiene conversaciones por estado */ getConversationsByStatus(organizationId: string, status: ConversationStatus): Promise<Conversation[]>; /** * Obtiene conversaciones asignadas a un usuario */ getConversationsByUser(organizationId: string, userId: string): Promise<Conversation[]>; /** * Obtiene estadísticas de conversaciones */ getConversationStats(organizationId: string): Promise<{ total: number; open: number; assigned: number; pending: number; resolved: number; closed: number; }>; /** * Verifica si una transición de estado es válida */ private isValidTransition; /** * Obtiene la configuración de transición entre dos estados */ private getTransition; /** * Obtiene todos los estados disponibles para una conversación */ getAvailableStates(currentStatus: ConversationStatus): ConversationStatus[]; /** * Verifica si una conversación puede ser asignada */ canBeAssigned(status: ConversationStatus): boolean; /** * Verifica si una conversación puede ser cerrada */ canBeClosed(status: ConversationStatus): boolean; /** * Verifica si una conversación puede ser resuelta */ canBeResolved(status: ConversationStatus): boolean; } //# sourceMappingURL=ConversationStateService.d.ts.map