import { TimeSlotType } from './availabilityExpertTypes';
import { palette } from '../utils/design';
import { gImages } from '../mock/gImages';

export enum ServiceFormatKey {
  person = 'person',
  audio = 'audio',
  /*'message' = 'mensaje',*/
  video = 'video',
  call = 'call'
}

export const serviceFormatMap: Record<
  ServiceFormatKey,
  ServiceType & {
    emoji?: string;
    icon?: string;
    image?: string;
    defaults?: Partial<ServiceType & { highlight?: boolean }>[];
  }
> = {
  [ServiceFormatKey.audio]: {
    duration: 2.5,
    name: 'Audio',
    icon: 'mic',
    image: gImages.audioMessage,
    emoji: '🎤',
    description: 'Responde mensajes de audio en' + ' cualquier momento y lugar',
    format: ServiceFormatKey.audio,
    defaults: [
      {
        format: ServiceFormatKey.audio,
        price: 1,
        duration: 1,
        name: 'Consulta Rápida'
      },
      {
        format: ServiceFormatKey.audio,
        price: 3,
        duration: 5,
        name: 'Duda específica'
      }, // 5'
      {
        format: ServiceFormatKey.audio,
        price: 4,
        duration: 10,
        name: 'Profundizar sobre un tema',
        highlight: true
      }
    ]
  },
  [ServiceFormatKey.call]: {
    duration: 10,
    name: 'Llamada',
    image: gImages.call,
    icon: 'phone',
    emoji: '📞',
    description: 'Agenda llamadas para resolver dudas puntuales',
    format: ServiceFormatKey.call,
    defaults: [
      {
        price: 10,
        duration: 15,
        name: 'Consulta puntual'
      },
      {
        price: 20,
        duration: 30,
        name: 'Conversación Extendida',
        highlight: true
      }
    ]
  },
  [ServiceFormatKey.video]: {
    icon: 'video',
    name: 'Videollamada',
    image: gImages.video,
    format: ServiceFormatKey.video,
    description: 'Conéctate a través de video desde cualquier lugar',
    emoji: '📹',
    duration: 20,
    defaults: [
      {
        price: 10,
        duration: 15,
        highlight: true,
        name: 'Videoconsulta Exprés'
      },
      {
        price: 20,
        duration: 30,
        name: 'Diálogo en Video'
      },
      {
        price: 40,
        duration: 45,
        name: 'Análisis en Video'
      },
      {
        price: 50,
        duration: 60,
        name: 'Sesión de video'
      }
    ]
  },
  [ServiceFormatKey.person]: {
    icon: 'people',
    name: 'En persona',
    image:
      'https://img.freepik.com/free-vector/interview-concept-illustration_114360-1501.jpg?w=2000&t=st=1688337692~exp=1688338292~hmac=38e6a84c27daa12639131fa66f4d57f1500f81ddf0028d1d13d5c62ff30618bf',
    format: ServiceFormatKey.person,
    description: 'Programa un encuentro en persona para asesoría detallada',
    emoji: '👥',
    duration: 180,
    defaults: [
      {
        price: 50,
        duration: 60,
        name: 'Encuentro Personalizado'
      },
      {
        price: 75,
        duration: 90,
        name: 'Análisis en Profundidad',
        highlight: true
      }
    ]
  }
};

export type SpecialityBackendType = {
  id?: string;
  specialityKey?: SpecialityKey;
} & SpecialityMapType;

export type SpecialityMapType = {
  id?: string;
  specialityKey?: SpecialityKey;
  color?: string;
  icon?: string; // TODO Deprecate in favor of emoji
  emoji?: string;
  keywords?: string[];
  name: string;
};

export type ServiceBackendType = {
  id?: string;
  name?: string; // defaults to: "consulta en ${gSpecialities[specialityKey].name}"
  expertId?: string; //user uid
  speciality?: SpecialityKey; // TODO @cuaresma check I should receive the
  keywords?: string[];
  description?: string;
  address?: string; // Only for format.inPerson
  price?: number;
  duration?: number;
  format?: ServiceFormatKey; // defaults to: ServiceFormatKey.video
};

/** For frontend to print evertyhing*/
export type ServiceType = ServiceBackendType & {
  time_slots?: TimeSlotType[]; // Backend generates that based on
};

export type FilterType = SpecialityMapType & {
  selected?: boolean;
};

export type ServiceFormatType = {
  selected: boolean;
  serviceDetails: ServiceType[];
};

export type ServiceMapType = {
  [K in ServiceFormatKey]?: ServiceType[];
};

export enum SpecialityKey {
  psycho = 'psycho',
  interviewPractice = 'interviewPractice',
  /*listener = 'listener',*/
  language = 'language',
  computer = 'computer',
  physiotherapist = 'physiotherapist',
  personalTrainer = 'personalTrainer',
  dance = 'dance',
  /*dreamInterpret = 'dreamInterpret',*/
  /*astrology = 'astrology',*/
  travel = 'travel',
  onlineTutor = 'onlineTutor',
  careerPath = 'careerPath',
  financialAdvisor = 'financialAdvisor',
  startupAdvisor = 'startupAdvisor',
  realState = 'realState',
  influencer = 'influencer',
  theatre = 'theatre',
  film = 'film',
  /*parenting = 'parenting',*/
  /*relationships = 'relationships',*/
  design = 'design',
  personalImage = 'personalImage',
  productivity = 'productivity',
  legalAdvisor = 'legalAdvisor',
  nutrition = 'nutrition',
  marketing = 'marketing',
  artAndCraft = 'artAndCraft',
  architecture = 'architecture',
  science = 'science',
  sustainability = 'sustainability',
  spirituality = 'spirituality',
  eventPlanning = 'eventPlanning',
  musicProduction = 'musicProduction',
  sales = 'sales',
  oratory = 'oratory',
  frontend = 'frontend',
  backend = 'backend',
  techSupport = 'techSupport'
}

export const gSpecialities: Record<SpecialityKey, SpecialityMapType> = {
  /*[SpecialityKey.listener]: {
    name: 'Escucha',

      emoji: '👂',
    icon: 'hearing'
  },*/
  [SpecialityKey.psycho]: {
    icon: 'psychology',
    name: 'Psicología',
    emoji: '👩‍⚕️',
    keywords: [
      'psicoterapia',
      'sexología',
      'relaciones',
      'neuropsicología',
      'infantil',
      'sueños',
      'ansiedad',
      'depresión',
      'patologías',
      'cognitivoConductual',
      'trastornoDeAnsiedad'
    ]
  },
  [SpecialityKey.nutrition]: {
    name: 'Nutrición',
    emoji: '🥑',
    icon: 'food-variant',
    keywords: [
      'dieta',
      'suplementación',
      'nutriciónDeportiva',
      'obesidad',
      'alergiasAlimentarias',
      'veganismo'
    ]
  },
  [SpecialityKey.physiotherapist]: {
    name: 'Fisioterapia',
    emoji: '💆‍♀️',
    icon: 'massage',
    keywords: [
      'rehabilitación',
      'masajeTerapéutico',
      'terapiaManual',
      'kinesioterapia',
      'osteopatía',
      'kinesiología',
      'electroterapia',
      'ultrasonidoTerapéutico',
      'hidroterapia',
      'terapiaRespiratoria',
      'acupuntura',
      'pilatesTerapéutico',
      'drenajeLinfático',
      'preparaciónFísica',
      'prevenciónDeLesiones',
      'quiropráctica',
      'fisioterapiaDeportiva',
      'fisioterapiaNeurológica',
      'fisioterapiaPediátrica',
      'fisioterapiaGeriátrica',
      'técnicasDeRelajación',
      'movilizaciónArticular',
      'ejerciciosDeFortalecimiento',
      'terapiaConLáser',
      'magnetoterapia',
      'tapingNeuromuscular',
      'punciónSeca'
    ]
  },
  [SpecialityKey.dance]: {
    name: 'Baile',
    emoji: '💃',
    icon: 'dance',
    keywords: ['bachata', 'salsa', 'salsaCubana', 'cumbia', 'hipHop', 'jazz']
  },
  [SpecialityKey.personalTrainer]: {
    name: 'Deporte',
    emoji: '💪',
    icon: 'dumbbell',
    keywords: [
      'fitness',
      'artesMarciales',
      'gimnasia',
      'boxeo',
      'raqueta',
      'yoga',
      'entrenamiento',
      'musculación',
      'cardio'
    ]
  },
  [SpecialityKey.startupAdvisor]: {
    name: 'Startup',
    emoji: '🚀',
    icon: 'rocket',
    keywords: [
      'emprendimiento',
      'financiación',
      'mentoría',
      'tecnología',
      'negocios',
      'innovación',
      'AI'
    ]
  },
  /*[SpecialityKey.relationships]: {
    name: 'Relaciones',

      emoji: '💞',
    icon: 'heart'
  },*/
  [SpecialityKey.legalAdvisor]: {
    name: 'Derecho',
    emoji: '⚖️',
    icon: 'scale-balance',
    keywords: [
      'laboral',
      'mercantil',
      'extranjería',
      'sucesiones',
      'embargos',
      'civil',
      'penal',
      'fiscal',
      'familia',
      'administrativo',
      'constitucional',
      'comercial',
      'financiero'
    ]
  },
  [SpecialityKey.interviewPractice]: {
    name: 'Entrevistas',
    emoji: '💼',
    icon: 'microphone',
    keywords: ['entrevistas', 'testDeInteligencia', 'speech', 'CV']
  },
  [SpecialityKey.language]: {
    name: 'Idiomas',
    emoji: '💬',
    icon: 'translate',
    keywords: [
      'inglés',
      'francés',
      'español',
      'aleman',
      'gramática',
      'pronunciación'
    ]
  },
  [SpecialityKey.realState]: {
    name: 'Inmobiliaria',
    emoji: '🏠',
    icon: 'home',
    keywords: [
      'venta',
      'alquiler',
      'hipotecas',
      'inversión',
      'reformas',
      'tasación',
      'construcción',
      'mercado'
    ]
  },
  [SpecialityKey.productivity]: {
    name: 'Productividad',
    emoji: '⏰',
    icon: 'clock',
    keywords: ['gestiónDelTiempo', 'crecimiento', 'relaciones']
  },
  [SpecialityKey.computer]: {
    name: 'Informática',
    emoji: '💻',
    icon: 'laptop',
    keywords: [
      'hardware',
      'software',
      'hacking',
      'redes',
      'seguridadInformática',
      'baseDeDatos',
      'sistemasOperativos'
    ]
  },
  [SpecialityKey.sales]: {
    name: 'Ventas',
    emoji: '💰',
    icon: 'money',
    keywords: ['ventas', 'negocios', 'marketing', 'publicidad']
  },
  [SpecialityKey.oratory]: {
    name: 'Oratoria',
    emoji: '🎙️',
    icon: 'microphone',
    keywords: [
      'oratoria',
      'canto',
      'pronunciación',
      'speech',
      'entrevistas',
      'pitch'
    ]
  },
  [SpecialityKey.frontend]: {
    name: 'Frontend',
    emoji: '📱',
    icon: 'web',
    keywords: [
      'html',
      'mobile',
      'react-native',
      'css',
      'javascript',
      'react',
      'angular'
    ]
  },
  [SpecialityKey.backend]: {
    name: 'Backend',
    emoji: '📟',
    icon: 'computer',
    keywords: [
      'node.js',
      'python',
      'java',
      'php',
      'infraestructura',
      'sql',
      'aws',
      'azure',
      'docker'
    ]
  },
  [SpecialityKey.techSupport]: {
    name: 'Sop. Técnico',
    emoji: '🔧',
    icon: 'wrench',
    keywords: ['soporte', 'técnico', 'cableado', 'infraestructura']
  },
  [SpecialityKey.sustainability]: {
    name: 'Sostenibilidad',
    emoji: '♻️',
    icon: 'eco',
    keywords: ['sostenibilidad', 'innovación', 'footprint', 'reciclaje']
  },
  [SpecialityKey.travel]: {
    name: 'Viajes',
    emoji: '🌍️',
    icon: 'earth',
    keywords: [
      'destinos',
      'mochilero',
      'ahorro',
      'gastronómicos',
      'cultura',
      'aventura',
      'guiados',
      'recomendaciones'
    ]
  },
  [SpecialityKey.spirituality]: {
    name: 'Espiritualidad',
    emoji: '💫',
    icon: 'religious-christian',
    keywords: [
      'tarot',
      'floresDeBach',
      'judaismo',
      'buddhismo',
      'cristianismo',
      'paganismo',
      'crisisDeFe'
    ]
  },
  [SpecialityKey.eventPlanning]: {
    name: 'Eventos',
    emoji: '📅',
    icon: 'party-popper',
    keywords: [
      'wedding',
      'birthday',
      'anniversary',
      'party',
      'company',
      'team building'
    ]
  },
  [SpecialityKey.musicProduction]: {
    name: 'Música',
    emoji: '🎵',
    icon: 'music-note',
    keywords: [
      'instrumentos',
      'canto',
      'producciónMusical',
      'composición',
      'teoríaMusical',
      'guitarra',
      'piano',
      'batería',
      'producción',
      'mezclaDJ',
      'grabación',
      'composición',
      'instrumentos'
    ]
  },
  [SpecialityKey.film]: {
    name: 'Cine',
    emoji: '🎥',
    icon: 'film',
    keywords: [
      'producción',
      'dirección',
      'guion',
      'edición',
      'sonido',
      'cámara',
      'iluminación'
    ]
  },
  /*[SpecialityKey.parenting]: {
    name: 'Maternidad',

      emoji: '👨‍👩‍👧',
    icon: 'family',
    keywords: ['maternidad', 'infancia', 'adolescencia']
  },*/
  [SpecialityKey.design]: {
    name: 'Diseño',
    emoji: '📐',
    icon: 'palette',
    keywords: [
      'UX',
      'UI',
      'gráfico',
      'copywriter',
      'Product',
      'Animaciones',
      'editorial',
      'web',
      'interior',
      'moda'
    ]
  },
  [SpecialityKey.personalImage]: {
    name: 'Estilismo',
    emoji: '💅',
    icon: 'emoticon-glamour'
  },
  [SpecialityKey.financialAdvisor]: {
    name: 'Finanzas',
    emoji: '💰',
    icon: 'currency-usd',
    keywords: [
      'inversión',
      'ahorro',
      'criptomonedas',
      'impuestos',
      'planificaciónFinanciera',
      'asesoríaFiscal',
      'inversiones',
      'finanzasPersonales',
      'créditos',
      'bolsa',
      'planificación',
      'macroeconomía',
      'microeconomía',
      'bolsa'
    ]
  },
  [SpecialityKey.influencer]: {
    name: 'Influencer',
    emoji: '📸',
    icon: 'camera'
  },
  [SpecialityKey.theatre]: {
    name: 'Teatro',
    emoji: '🎭',
    icon: 'drama-masks'
  },
  /*[SpecialityKey.dreamInterpret]: {
    name: 'Sueños',

      emoji: '😴',
    icon: 'power-sleep'
  },*/
  [SpecialityKey.onlineTutor]: {
    name: 'Clases Particulares',
    emoji: '📚',
    icon: 'book-open-variant',
    keywords: [
      'matemáticas',
      'física',
      'química',
      'idiomas',
      'ingles',
      'español'
    ]
  },
  [SpecialityKey.careerPath]: {
    name: 'Plan de carrera ',
    emoji: '🎓',
    icon: 'book-open-variant',
    keywords: [
      'carrera',
      'universidad',
      'escuela',
      'formación',
      'estudios',
      'becas'
    ]
  },
  [SpecialityKey.marketing]: {
    name: 'Marketing',
    emoji: '🔍',
    icon: 'book-open-variant',
    keywords: [
      'publicidad',
      'SEO',
      'SEM',
      'socialMedia',
      'emailMarketing',
      'contentMarketing'
    ]
  },
  [SpecialityKey.artAndCraft]: {
    name: 'Arte y Manualidades',
    emoji: '🎨',
    icon: 'art-palette',
    keywords: ['pintura', 'escultura', 'cerámica', 'dibujo', 'manualidades']
  },
  [SpecialityKey.architecture]: {
    name: 'Arquitectura',
    emoji: '🏛️',
    icon: 'column',
    keywords: [
      'construcción',
      'diseñoInteriores',
      'urbanismo',
      'restauración',
      'paisajismo'
    ]
  },
  [SpecialityKey.science]: {
    name: 'Ciencias',
    emoji: '🔬',
    icon: 'microscope',
    keywords: ['biología', 'química', 'física', 'astronomía', 'biotecnología']
  }
};
export type SpecialityCategoryKey = Record<
  string,
  {
    name: string;
    emoji: string;
    services: SpecialityKey[];
  }
>;
export const specialityCategories: SpecialityCategoryKey = {
  healthAndWellness: {
    name: 'Bienestar',
    emoji: '💪',
    services: [
      SpecialityKey.nutrition,
      SpecialityKey.personalTrainer,
      SpecialityKey.physiotherapist,
      SpecialityKey.psycho, // Incluye parenting y listener
      SpecialityKey.spirituality
    ]
  },
  personalDevelopment: {
    name: 'Desarrollo Personal',
    emoji: '🌟',
    services: [
      SpecialityKey.oratory,
      SpecialityKey.personalImage,
      SpecialityKey.travel,
      SpecialityKey.sustainability,
      SpecialityKey.productivity,
      SpecialityKey.influencer
    ]
  },
  businessAndSustainability: {
    name: 'Negocios',
    emoji: '💼',
    services: [
      SpecialityKey.legalAdvisor,
      SpecialityKey.realState,
      SpecialityKey.financialAdvisor,
      SpecialityKey.startupAdvisor,
      SpecialityKey.marketing,
      SpecialityKey.sales
    ]
  },
  technology: {
    name: 'Tecnología',
    emoji: '👨🏻‍💻',
    services: [
      SpecialityKey.computer,
      SpecialityKey.frontend,
      SpecialityKey.backend,
      SpecialityKey.techSupport
    ]
  },
  learningAndEducation: {
    name: 'Aprendizaje',
    emoji: '🎓',
    services: [
      SpecialityKey.careerPath,
      SpecialityKey.interviewPractice,
      SpecialityKey.onlineTutor,
      SpecialityKey.language,
      SpecialityKey.science
    ]
  },
  lifestyleAndArts: {
    name: 'Artes',
    emoji: '👨‍🎨',
    services: [
      SpecialityKey.design,
      SpecialityKey.musicProduction,
      SpecialityKey.film,
      SpecialityKey.theatre,
      SpecialityKey.artAndCraft,
      SpecialityKey.architecture,
      SpecialityKey.dance
    ]
  }
};

export const ideaMap = {
  ideas: {
    name: 'Ideas',
    emoji: '💡'
  },
  problemas: {
    name: 'Problemas',
    emoji: '😡'
  },
  pensamientos: {
    name: 'Pensamientos',
    emoji: '💭'
  },
  dudas: {
    name: 'Dudas',
    emoji: '🤔'
  },
  emociones: {
    name: 'Emociones',
    emoji: '🥹'
  },
  goals: {
    name: 'Metas',
    emoji: '🎯'
  },
  motivation: {
    name: 'motivación',
    emoji: '💪'
  },
  logros: {
    name: 'Logros',
    emoji: '🏆'
  }
};

export const solutionsMap = [
  {
    emoji: '💼',
    name: 'Preparar entrevistas',
    subtitle: 'Práctica, consejos',
    speciality: SpecialityKey.interviewPractice,
    img: 'https://www.gdgoenkauniversity.com/site/img/placementcell-img.jpg'
  },
  {
    emoji: '💬',
    name: 'Practicar idiomas',
    speciality: SpecialityKey.language,
    subtitle: 'Conversación, aprendizaje',
    //img:
    // 'https://img.freepik.com/free-vector/language-learning-camp-abstract-concept-illustration_335657-2494.jpg?w=826&t=st=1683398854~exp=1683399454~hmac=66f42dd6e1dd10816d869cba2e648b194c9d5d7beb797613715f9d42a853e372',
    img: 'https://img.freepik.com/free-photo/virtual-classroom-study-space_23-2149178645.jpg?size=626&ext=jpg&ga=GA1.1.301189620.1682070100&semt=ais'
  },
  {
    emoji: '⚖️',
    name: 'Dudas legales',
    speciality: SpecialityKey.legalAdvisor,
    subtitle: 'Consultas, orientación',
    img: 'https://img.freepik.com/foto-gratis/empresario-masculino-feliz-que-tiene-videollamada-computadora-portatil-mientras-trabaja-oficina_637285-6768.jpg'
  },
  {
    emoji: '📚',
    name: 'Clases particulares',
    speciality: SpecialityKey.onlineTutor,
    subtitle: 'Tutorías, apoyo académico',
    img: 'https://eduww.net/wp-content/uploads/2022/02/Online-School-is-better-alternative-768x512.webp'
  },
  {
    emoji: '🚀',
    name: 'Asesoría de empresas',
    speciality: SpecialityKey.startupAdvisor,
    subtitle: 'Startups, negocios, finalización...',
    img: 'https://img.freepik.com/free-photo/group-workers-using-remote-video-call-talk-man-about-business-growth-computer-team-people-meeting-discuss-marketing-collaboration-online-internet-teleconference_482257-40554.jpg?w=1060&t=st=1683487722~exp=1683488322~hmac=7dcf6618cdf3c37af3bc455e7ad6607ae88eee763c25bda1c7f8694448b3bb54'
  },
  {
    emoji: '🎯',
    name: 'Productividad',
    speciality: SpecialityKey.productivity,
    img: 'https://sanjeevdatta.com/wp-content/uploads/2022/01/clarity.jpg',
    subtitle: 'Herramientas, técnicas'
  }
];
