import { IMetricsDocument } from "./Metrics.Adapter.Mongoose"; export type MetricsParams = { userId?: string; companyId?: string; quantity?: number; limit?: number; }; export type DeleteMetricsByCompany = { companyId: string; }; export type CalculateMetricsParams = { userId: string; }; export interface IMetrics { id?: string; userId: string; organizationsCount: number; employeesCount: number; servicesCount: number; appointmentsCount: number; clientsCount: number; repeatsCount: number; month: number; year: number; } export interface IMetricsAdapter { create(userId: string): Promise; reset(userId: string): Promise; getMetrics(userId: string): Promise; addOrganization(data: MetricsParams): Promise; addEmployee(data: MetricsParams): Promise; addService(data: MetricsParams): Promise; addAppointment(data: MetricsParams): Promise; addClient(data: MetricsParams): Promise; } export interface IMetricsManager { metrics: IMetricsAdapter; reset(userId: string): Promise; getMetrics(userId: string): Promise; addOrganization(data: MetricsParams): Promise; addEmployee(data: MetricsParams): Promise; addService(data: MetricsParams): Promise; addAppointment(data: MetricsParams): Promise; reserveAppointment(data: MetricsParams): Promise; releaseAppointment(data: MetricsParams): Promise; addClient(data: MetricsParams): Promise; canAddOrganization(userId: string): Promise; canAddEmployee(userId: string): Promise; canAddService(userId: string): Promise; canAddAppointment(userId: string): Promise; canAddClient(userId: string): Promise; deleteMetricsByCompany(data: DeleteMetricsByCompany): Promise; calculateMetrics(data: CalculateMetricsParams): Promise; }