388 lines
14 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { Request, Response } from 'express';
import { v4 as uuid } from 'uuid';
import { PAGE_LINK, TextSection } from '../../../constants';
type TitleText = {
age?: {
styles?: object;
text: string;
};
description?: string;
id?: string;
labels?: {
items: {
mark?: true;
markMobile?: true;
text: string;
}[];
styles?: object;
};
mobileDescription?: string;
mobileTitle?: string;
partySize?: {
max: number;
min: number;
styles?: object;
};
subtitle?: string;
time?: {
styles?: object;
text: string;
};
title: string;
};
const birthdayTitleText: TitleText = {
description: 'Организуем незабываемый праздник в новом формате: выгодные комбо, тематические программы, '
+ 'творческие мастер-классы и многое другое ждёт Вас \\n в нашем мире развлечений',
mobileDescription: 'Организуем незабываемый праздник\\n '
+ 'в новом формате: выгодные комбо,\\n '
+ 'тематические программы, творческие\\n '
+ 'мастер-классы и многое другое ждёт Вас\\n'
+ ' в нашем мире развлечений',
title: 'День Рождения',
};
const graduationTitleText: TitleText = {
description: 'Организуем незабываемый праздник в новом формате: выгодные комбо, индивидуальные дипломы, '
+ 'творческие мастер-классы и многое другое ждёт вас в нашем мире развлечений',
mobileDescription: 'Организуем незабываемый праздник\\n'
+ 'в новом формате: выгодные комбо,\\n'
+ 'индивидуальные дипломы, творческие\\n'
+ 'мастер-классы и многое другое ждёт вас\\n'
+ 'в нашем мире развлечений',
title: 'Выпускной',
};
const outdoorsTitleText: TitleText = {
description: 'Организуем незабываемый праздник в новом формате: выгодные комбо, '
+ 'тематические программы, творческие мастер-классы и многое другое ждёт вас в нашем мире развлечений',
title: 'Выездной праздник',
};
const questsTitleText: TitleText = {
description: 'Выбираете квест для ребенка? Может, для компании\\n своих друзей/коллег? '
+ 'Или просто хотите отдохнуть всей семьей?\\n\\n'
+ 'У нас есть решения под любые цели и для любых возрастов!',
mobileDescription: 'Выбираете квест для ребенка?\\n Может, для компании своих друзей/коллег?\\n'
+ 'Или просто хотите отдохнуть всей семьей?\\n\\n'
+ 'У нас есть решения под любые цели\\n и для любых возрастов!',
title: 'Квесты',
};
const faqTitleText: TitleText = {
description: 'Раздел с подробной информацией по каждой услуге. Чтобы посмотреть ответы на вопросы, выберите интересующую Вас категорию',
title: 'Часто задаваемые вопросы',
};
const contactsTitleText: TitleText = {
description: 'Раздел с подробной информацией о способах связи. Если у Вас остались вопросы, оставьте заявку на обратный звонок',
title: 'Контактная информация',
};
const aboutTitleText: TitleText = {
description: 'История открытия и развития Аркидс Парка\\n и то, что мы делаем для Вас сегодня',
title: 'Информация о парке',
};
const masterClassesTitleText: TitleText = {
description: 'Сделайте праздник ярче, добавив фирменный мастер-класс\\n '
+ 'к любой комбо-программе из категорий «День Рождения»,\\n «Выпускной», «Выездной праздник»',
title: 'Мастер-классы',
};
const showProgramsTitleText: TitleText = {
description: 'Сделайте праздник ярче, добавив фирменное шоу\\n'
+ ' к любой комбо-программе из категорий «День Рождения», «Выпускной», «Выездной праздник»',
title: 'ШОУ-ПРОГРАММЫ\n И ДИСКОТЕКИ',
};
const priceTitleText: TitleText = {
description: 'Чтобы ознакомиться со стоимостью услуг,\\n'
+ 'выберите интересующую Вас категорию',
mobileDescription: 'Чтобы ознакомиться\\n'
+ 'со стоимостью услуг, выберите\\n'
+ 'интересующую Вас категорию',
title: 'Ценовая политика ',
};
const maintenanceTitleText: TitleText = {
description: 'Едете с детьми на свадьбу, корпоратив или сами организуете\\n'
+ 'выездное мероприятие? Мы знаем, как помочь Вам отдохнуть\\n'
+ 'и организовать детский досуг!',
subtitle: 'на мероприятиях',
title: 'СОПРОВОЖДЕНИЕ ДЕТЕЙ',
};
const maintenanceSteps = [
{
description: 'Заполните заявку на странице,\\n'
+ 'указав контактную информацию,\\n'
+ 'формат мероприятия и адрес',
id: uuid(),
},
{
description:
'Обсуждаем с Вами дату, программу\\n'
+ 'и развлечения, учитываем интересы\\n'
+ 'детей и пожелания родителей',
id: uuid(),
},
{
description:
'Составляем план мероприятия\\n'
+ '(сборы, игры, тематика, тайминг)\\n'
+ 'и согласовываем стоимость',
id: uuid(),
},
{
description:
'Теперь можно не переживать за детей\\n'
+ 'и спокойно отдыхать: организацию\\n'
+ 'досуга маленьких гостей мы взяли на себя!',
id: uuid(),
},
];
const themedCombosTitleText: TitleText = {
age: {
text: '2-15',
},
labels: {
items: [
{ mark: true, markMobile: true, text: 'командные игры и эстафеты' },
{ mark: true, markMobile: true, text: 'торжественное поздравление именинника' },
{ mark: true, markMobile: true, text: 'интерактивная игра с элементами квеста' },
{ mark: true, markMobile: true, text: 'сюжетная анимационная программа' },
{ mark: true, markMobile: true, text: 'шоу программа' },
{ mark: true, markMobile: true, text: 'творческий мастер-класс' },
],
},
partySize: {
max: 30,
min: 4,
},
time: {
text: '3 часа',
},
title: 'Тематические комбо',
};
const themedCombosBannerText = {
description: 'проводятся в едином пространстве костюмированным аниматором',
mobileDescription: 'проводятся в едином пространстве',
title: 'Новые программы с тематическим\\n'
+ 'реквизитом и оформлением',
};
const masterClassesInfo = [
'Знакомимся и проводим общий инструктаж',
'Рассказываем и показываем, как пользоваться реквизитом',
'Начинаем процесс изготовления в выбранной тематике',
'Упаковываем готовое изделие, которое ребенок заберёт с собой',
];
const contactsDescriptionText = [
{
description: 'Мы находимся в Торговом Центре «Ашан» (бывший «Атак») на 3 этаже. '
+ 'Ближайшие ориентиры: пожарная станция, стадион «Труд», кинотеатр «Родина»',
id: uuid(),
title: 'Как добраться',
},
{
description: 'На территории Торгового Центра расположена стихийная парковка. '
+ 'Также автомобиль можно оставить около «Пятерочки» через дорогу',
id: uuid(),
title: 'Гостям на личном авто',
},
{
description: 'На автобусе до остановки «кинотеатр «Родина». '
+ 'Далее пешком 5 минут по улице Клемента Готвальда до серого 8-этажного здания',
id: uuid(),
title: 'Своим ходом',
},
];
const contactsInfo = {
address: {
city: 'Подольск',
street: 'ул. Клемента Готвальда, 6В\\n Этаж 3, помещения 16, 18',
},
links: {
mail: 'arkids@park.ru',
vk: 'https://vk.com/armanty',
},
phone: {
phones: [
'+7 (926) 982-14-94',
'+7 (925) 720-56-54',
'+7 (966) 337-96-94',
],
schedule: 'с 9:00 до 24:00',
},
};
const parkInfo = {
text: '- интерактивный парк нового поколения,\\n'
+ ' объединяющий популярные услуги\\n'
+ ' и развлечения для детей и взрослых',
title: 'Аркидс Парк',
};
export const getTitle = (req: Request, res: Response) => {
// @ts-ignore
const { body } = req;
const { page, section } = body;
switch (page) {
case PAGE_LINK.BIRTHDAY: {
switch (section) {
case TextSection.TITLE:
return res.status(200).json(birthdayTitleText);
default:
return res.status(404);
}
}
case PAGE_LINK.GRADUATION: {
switch (section) {
case TextSection.TITLE:
return res.status(200).json(graduationTitleText);
default:
return res.status(404);
}
}
case PAGE_LINK.OUTDOORS: {
switch (section) {
case TextSection.TITLE:
return res.status(200).json(outdoorsTitleText);
default:
return res.status(404);
}
}
case PAGE_LINK.QUESTS: {
switch (section) {
case TextSection.TITLE:
return res.status(200).json(questsTitleText);
default:
return res.status(404);
}
}
case PAGE_LINK.HOME: {
switch (section) {
case TextSection.PARK:
return res.status(200).json(parkInfo);
default:
return res.status(404);
}
}
case PAGE_LINK.FAQ: {
switch (section) {
case TextSection.TITLE:
return res.status(200).json(faqTitleText);
default:
return res.status(404);
}
}
case PAGE_LINK.CONTACTS: {
switch (section) {
case TextSection.TITLE:
return res.status(200).json(contactsTitleText);
case TextSection.DESCRIPTION:
return res.status(200).json(contactsDescriptionText);
case TextSection.INFO:
return res.status(200).json(contactsInfo);
default:
return res.status(404);
}
}
case PAGE_LINK.ABOUT: {
switch (section) {
case TextSection.TITLE:
return res.status(200).json(aboutTitleText);
default:
return res.status(404);
}
}
case PAGE_LINK.MASTER_CLASSES: {
switch (section) {
case TextSection.TITLE:
return res.status(200).json(masterClassesTitleText);
case TextSection.INFO:
return res.status(200).json(masterClassesInfo);
default:
return res.status(404);
}
}
case PAGE_LINK.SHOW_PROGRAMS: {
switch (section) {
case TextSection.TITLE:
return res.status(200).json(showProgramsTitleText);
default:
return res.status(404);
}
}
case PAGE_LINK.PRICE: {
switch (section) {
case TextSection.TITLE:
return res.status(200).json(priceTitleText);
default:
return res.status(404);
}
}
case PAGE_LINK.THEMED_COMBOS: {
switch (section) {
case TextSection.TITLE:
return res.status(200).json(themedCombosTitleText);
case TextSection.BANNER:
return res.status(200).json(themedCombosBannerText);
default:
return res.status(404);
}
}
case PAGE_LINK.MAINTENANCE: {
switch (section) {
case TextSection.TITLE:
return res.status(200).json(maintenanceTitleText);
case TextSection.STEPS:
return res.status(200).json(maintenanceSteps);
default:
return res.status(404);
}
}
default:
return res.status(404);
}
};