import { Schema } from "mongoose"; import { EnumMap,IJson,IDocument,IObject,IInstance,IModel,IAction,IActionTypes,IMeetup,IPlatformJson,IPlatform } from "@onebro/oba-common"; import { FinavigatorUserProfile,FinavigatorUserProfilePreview, FinavigatorUserProfileJson } from "./profiles"; import { FinavigatorLead, FinavigatorLeadJson } from "./leads"; import { FinavigatorMessage, FinavigatorMessageJson } from "./messages"; import { FinavigatorVenueJson, FinavigatorVenue } from "./venues"; export enum FinavigatorAppointmentStatuses { N = "New", S = "Saved", Y = "Sent", Z = "Seen/Read", A = "Accepted", D = "Declined", R = "Revised", E = "Expired", C = "Cancelled",} export type FinavigatorAppointmentStatus = keyof typeof FinavigatorAppointmentStatuses; export type FinavigatorAppointmentOpts = Pick; export type FinavigatorAppointmentConfig = FinavigatorAppointmentOpts & { agent:string; client:string; venue?:string; platform?:string; attendees?:string[]; lead?:string;}; export type FinavigatorAppointmentType = IObject & FinavigatorAppointmentOpts & { agent:FinavigatorUserProfile; client:FinavigatorUserProfile; venue?:FinavigatorVenue; platform?:IPlatform; attendees?:FinavigatorUserProfile[]; lead?:FinavigatorLead; notes?:FinavigatorMessage[];}; export interface FinavigatorAppointmentDocument extends IDocument,FinavigatorAppointmentType {} export interface FinavigatorAppointment extends IInstance,FinavigatorAppointmentDocument {} export interface FinavigatorAppointmentModel extends IModel {} export type FinavigatorAppointmentPublicKeys = keyof FinavigatorAppointmentOpts; export type FinavigatorAppointmentPublicData = Pick; export type FinavigatorAppointmentJson = IJson & FinavigatorAppointmentPublicData & { agent:FinavigatorUserProfilePreview; client:FinavigatorUserProfilePreview; venue?:FinavigatorVenueJson; platform?:IPlatformJson; attendees?:FinavigatorUserProfileJson[]; lead?:FinavigatorLeadJson; notes:FinavigatorMessageJson[];}; export type FinavigatorAppointmentModelMap = {FinavigatorAppointment:FinavigatorAppointmentModel;}; export type FinavigatorAppointmentInstanceMap = {appt:FinavigatorAppointment;}; export type FinavigatorAppointmentSchemaMap = {appt:Schema;}; export type FinavigatorAppointmentActionTypes = IActionTypes; export type FinavigatorAppointmentActions = EnumMap;