oralify-backend
Version:
Express Node CRUD backend for Oralify
316 lines (305 loc) • 7.34 kB
text/typescript
import {TimeSlotType} from './availabilityExpertTypes';
import {palette} from './design';
export enum ServiceFormatKey {
person = 'en persona',
audio = 'audio' /*'message' = 'mensaje',*/,
video = 'videocall',
call = 'llamada',
}
export type SpecialityBackendType = {
id?: string;
specialityKey?: SpecialityKey;
} & SpecialityType;
export type SpecialityType = {
id?: string;
specialityKey?: SpecialityKey;
color?: string;
icon?: string;
emoji?: string;
name: string;
};
export type ServiceType = {
id?: string;
expertId: string; //user uid
speciality: SpecialityType; // TODO @cuaresma check I should recieve the whole speciality object
description: string;
price: number;
duration: number;
format: ServiceFormatKey;
timeslots?: TimeSlotType[];
name: string;
};
export type FilterType = SpecialityType & {
selected?: boolean;
};
export type ServiceFormatType = {
selected: boolean;
serviceDetails: ServiceType[];
};
export type ServiceMapType = {
[]?: ServiceFormatType;
};
export enum SpecialityKey {
psycho = 'psycho',
interviewPractice = 'interviewPractice',
listener = 'listener',
language = 'language',
computer = 'computer',
personalTrainer = 'personalTrainer',
dreamInterpret = 'dreamInterpret' /*astrology = 'astrology',*/,
travel = 'travel',
onlineTutor = 'onlineTutor',
careerPath = 'careerPath',
financialAdvisor = 'financialAdvisor',
startupAdvisor = 'startupAdvisor',
realState = 'realState',
influencer = 'influencer',
theatre = 'theatre',
parenting = 'parenting',
relationships = 'relationships',
design = 'design',
personalImage = 'personalImage',
productivity = 'productivity',
legalAdvisor = 'legalAdvisor',
nutrition = 'nutrition',
marketing = 'marketing',
sustainability = 'sustainability',
spirituality = 'spirituality',
eventPlanning = 'eventPlanning',
musicProduction = 'musicProduction',
}
export const gSpecialities: Record<SpecialityKey, SpecialityType> = {
[]: {
name: 'Escucha',
color: palette.turqPrim,
emoji: '👂',
icon: 'hearing',
},
[]: {
icon: 'psychology',
color: palette.greenPrim,
name: 'Psicología',
emoji: '👩⚕️',
},
[]: {
name: 'Nutrición',
color: palette.greenPrim,
emoji: '🥑',
icon: 'food-variant',
},
[]: {
name: 'Deporte',
color: palette.orangeSec,
emoji: '💪',
icon: 'dumbbell',
},
[]: {
name: 'Startup',
color: palette.yellowPrim,
emoji: '🚀',
icon: 'rocket',
},
[]: {
name: 'Relaciones',
color: palette.redSec,
emoji: '💞',
icon: 'heart',
},
[]: {
name: 'Legal',
color: palette.purpleSec,
emoji: '⚖️',
icon: 'scale-balance',
},
[]: {
name: 'Entrevistas',
color: palette.blueDark,
emoji: '💼',
icon: 'microphone',
},
[]: {
color: palette.bluePrim,
name: 'Idiomas',
emoji: '💬',
icon: 'translate',
},
[]: {
name: 'Inmobiliaria',
color: palette.purpleSec,
emoji: '🏠',
icon: 'home',
},
[]: {
name: 'Productividad',
color: palette.blueDark,
emoji: '⏰',
icon: 'clock',
},
[]: {
name: 'Informática',
color: palette.blueDark,
emoji: '💻',
icon: 'laptop',
} /*[SpecialityKey.techSupport]: {
name: 'Mecánica',
color: palette.turqPrim,
emoji: '🔧',
icon: 'wrench',
},*/,
[]: {
name: 'Sostenibilidad',
color: palette.greenPrim,
emoji: '♻️',
icon: 'eco',
},
[]: {
name: 'Viajes',
color: palette.blueLight,
emoji: '🌍️',
icon: 'earth',
},
[]: {
name: 'Espiritualidad',
color: palette.purpleSec,
emoji: '💫',
icon: 'religious-christian',
},
[]: {
name: 'Eventos',
color: palette.yellowSec,
emoji: '📅',
icon: 'party-popper',
},
[]: {
name: 'Música',
color: palette.yellowPrim,
emoji: '🎹',
icon: 'piano',
},
[]: {
name: 'Familia',
color: palette.orangeLight,
emoji: '👨👩👧',
icon: 'family',
},
[]: {
name: 'Diseño',
color: palette.greenSec,
emoji: '🎨',
icon: 'palette',
},
[]: {
name: 'Estilismo',
color: palette.softPink,
emoji: '💅',
icon: 'emoticon-glamour',
},
[]: {
name: 'Finanzas',
color: palette.redSec,
emoji: '💰',
icon: 'currency-usd',
},
[]: {
name: 'Influencer',
color: palette.blueSec,
emoji: '📸',
icon: 'camera',
},
[]: {
name: 'Teatro',
color: palette.yellowPrim,
emoji: '🎭',
icon: 'drama-masks',
},
[]: {
name: 'Sueños',
color: palette.blueSec,
emoji: '😴',
icon: 'power-sleep',
},
[]: {
name: 'Clases Particulares',
color: palette.bluePrim,
emoji: '📚',
icon: 'book-open-variant',
},
[]: {
name: 'Plan de carrera ',
color: palette.bluePrim,
emoji: '🎓',
icon: 'book-open-variant',
},
[]: {
name: 'Marketing',
color: palette.bluePrim,
emoji: '🔍',
icon: 'book-open-variant',
},
};
export type SpecialityCategoryKey = Record<
string,
{name: string; emoji: string; services: SpecialityKey[]}
>;
export const specialityCategories: SpecialityCategoryKey = {
health: {
name: 'Salud',
emoji: '💆',
services: [
SpecialityKey.psycho,
SpecialityKey.listener,
SpecialityKey.nutrition,
SpecialityKey.sustainability,
SpecialityKey.personalTrainer,
SpecialityKey.dreamInterpret,
],
},
negocios: {
name: 'Negocios',
emoji: '💼',
services: [
SpecialityKey.startupAdvisor,
SpecialityKey.financialAdvisor,
SpecialityKey.computer,
SpecialityKey.legalAdvisor,
SpecialityKey.interviewPractice,
SpecialityKey.marketing,
SpecialityKey.realState,
],
},
education: {
name: 'Educación',
emoji: '🎓',
services: [
SpecialityKey.language,
SpecialityKey.onlineTutor,
SpecialityKey.careerPath,
],
},
creatividad: {
name: 'Creatividad',
emoji: '👩🎨',
services: [
SpecialityKey.theatre,
SpecialityKey.influencer,
SpecialityKey.design,
SpecialityKey.musicProduction,
],
},
progress: {
name: 'Progreso',
emoji: '🌟',
services: [
SpecialityKey.relationships,
SpecialityKey.productivity,
SpecialityKey.spirituality,
SpecialityKey.parenting,
SpecialityKey.personalImage,
],
},
ocio: {
name: 'Ocio',
emoji: '🎉',
services: [SpecialityKey.eventPlanning, SpecialityKey.travel],
},
};