Compare commits
55 Commits
add-dogsit
...
master
Author | SHA1 | Date | |
---|---|---|---|
|
3e27c0110c | ||
c2ada9072f | |||
1bd1d2b279 | |||
7b1ce2ae83 | |||
de22881c28 | |||
20d370f120 | |||
85986d1844 | |||
dccf769477 | |||
d088ef7af8 | |||
fad8cdfe08 | |||
a55e6d2ab2 | |||
eb6da8aa1b | |||
19a55f57c0 | |||
b649e86a43 | |||
|
c53f016eec | ||
|
0a7cbc3434 | ||
|
279650db25 | ||
2d45b4af72 | |||
bd4de9d7ba | |||
10dbe5c147 | |||
435f17ee22 | |||
677dc3dc29 | |||
88e3fe4172 | |||
21dcc8bbec | |||
4778dba7ed | |||
07a02ade1f | |||
311846f92d | |||
ebd561098f | |||
b4372eb53a | |||
bdb6b4ca3e | |||
426cb70eb6 | |||
61441e21b8 | |||
a6f61ba033 | |||
8588a7fa38 | |||
c35185ea32 | |||
78a332732d | |||
5f54355b97 | |||
4efbb56905 | |||
50c6286190 | |||
de29da93ba | |||
7cdd7e790f | |||
569b1b0d9e | |||
272961c583 | |||
63284d6c08 | |||
cb56e2dd2c | |||
325e2f125b | |||
786085d4d0 | |||
c95a00fb19 | |||
95373069da | |||
b8275a4c8f | |||
812a95dd85 | |||
85ee64e92b | |||
|
eb87f400ee | ||
|
b2a853e183 | ||
|
0a6d50cb60 |
@ -6,9 +6,9 @@
|
||||
"scripts": {
|
||||
"start": "npx nodemon ./server",
|
||||
"up:prod": "cross-env NODE_ENV=\"production\" node ./server",
|
||||
"deploy:d:stop": "docker-compose down",
|
||||
"deploy:d:build": "docker-compose build",
|
||||
"deploy:d:up": "docker-compose up -d",
|
||||
"deploy:d:stop": "docker compose down",
|
||||
"deploy:d:build": "docker compose build",
|
||||
"deploy:d:up": "docker compose up -d",
|
||||
"redeploy": "npm run deploy:d:stop && npm run deploy:d:build && npm run deploy:d:up",
|
||||
"eslint": "npx eslint ./server",
|
||||
"eslint:fix": "npx eslint ./server --fix",
|
||||
|
@ -56,14 +56,18 @@ app.use('/example', require('./routers/example'))
|
||||
// app.use('/car-wash', require('./routers/car-wash'))
|
||||
app.use('/zoom-bar', require('./routers/zoom-bar'))
|
||||
app.use('/r-and-m', require('./routers/r-and-m'))
|
||||
app.use('/my', require('./routers/my'))
|
||||
app.use('/edateam', require('./routers/edateam'))
|
||||
app.use('/webstar-project', require('./routers/webstar-project'))
|
||||
app.use('/dogsitters-finder', require('./routers/dogsitters-finder'))
|
||||
app.use('/dhs-testing', require('./routers/dhs-testing'))
|
||||
app.use('/kazan-explore', require('./routers/kazan-explore'))
|
||||
//app.use('/basket', require('./routers/basket'))
|
||||
//app.use('/easy-project', require('./routers/easy-project'))
|
||||
//app.use('/sugarbun', require('./routers/sugarbun'))
|
||||
app.use('/epja-2023-2', require('./routers/epja-2023-2'))
|
||||
require('./routers/hub-video')
|
||||
app.use('/school-stage', require('./routers/school-stage'))
|
||||
|
||||
app.use(require('./error'))
|
||||
|
||||
|
35
server/routers/dhs-testing/index.js
Normal file
35
server/routers/dhs-testing/index.js
Normal file
@ -0,0 +1,35 @@
|
||||
const { response } = require('express');
|
||||
const router = require('express').Router();
|
||||
|
||||
router.get('/tests-data', (request, response) => {
|
||||
response.send(require('./json/tests-data/success.json'))
|
||||
})
|
||||
|
||||
router.get("/users-data", (request, response) => {
|
||||
response.send(require("./json/users-data/success.json"))
|
||||
})
|
||||
|
||||
router.get('/results-data', (request, response) => {
|
||||
response.send(require('./json/results-data/results.json'))
|
||||
})
|
||||
|
||||
router.get('/records-data', (request, response) => {
|
||||
response.send(require('./json/records-data/records.json'))
|
||||
})
|
||||
|
||||
router.post('/submit-enter', (request, response) => {
|
||||
const data = request.body;
|
||||
response.send({ success: true, message: "Вы успешно вошли в аккаунт!" });
|
||||
});
|
||||
|
||||
router.post('/submit-reg', (request, response) => {
|
||||
const data = request.body;
|
||||
response.send({ success: true, message: "Регистрация прошла успешно!" });
|
||||
});
|
||||
|
||||
router.post('/submit-record', (request, response) => {
|
||||
const formData = request.body;
|
||||
response.send({ success: true, message: "Record submitted successfully" });
|
||||
});
|
||||
|
||||
module.exports = router;
|
13
server/routers/dhs-testing/json/records-data/records.json
Normal file
13
server/routers/dhs-testing/json/records-data/records.json
Normal file
@ -0,0 +1,13 @@
|
||||
{
|
||||
"dates":
|
||||
[
|
||||
{ "date": "2024-01-06T18:00:00"},
|
||||
{ "date": "2024-01-05T16:00:00"},
|
||||
{ "date": "2024-01-07T12:00:00"}
|
||||
],
|
||||
|
||||
"specialists":
|
||||
[{"name": "Петрова Анна"},
|
||||
{"name": "Сидорова Елена"},
|
||||
{"name": "Иванов Олег"}]
|
||||
}
|
17
server/routers/dhs-testing/json/results-data/results.json
Normal file
17
server/routers/dhs-testing/json/results-data/results.json
Normal file
@ -0,0 +1,17 @@
|
||||
{
|
||||
"titles":
|
||||
[
|
||||
{ "id": 1, "name": "Тест на самооценку", "flag":1 },
|
||||
{ "id": 2, "name": "Какой у Вас тип мышления?", "flag":1 },
|
||||
{ "id": 3, "name": "Экспресс IQ-тест", "flag":1 },
|
||||
{ "id": 4, "name": "Определение уровня депрессии", "flag":0},
|
||||
{ "id": 5, "name": "Есть ли у Вас РПП?", "flag":0 },
|
||||
{ "id": 6, "name": "Тест на скрытый нарциссизм", "flag":0 },
|
||||
{ "id": 7, "name": "Диагностика выгорания", "flag":0 },
|
||||
{ "id": 8, "name": "Тест на уверенность в себе", "flag":0 },
|
||||
{ "id": 9, "name": "Диагностика ОКР", "flag":0 },
|
||||
{ "id": 10, "name": "Насколько Вы тревожны?", "flag":0 },
|
||||
{ "id": 11, "name": "Тест на СДВГ", "flag":0 },
|
||||
{ "id": 12, "name": "Ваш тип привязанности", "flag":0 }
|
||||
]
|
||||
}
|
18
server/routers/dhs-testing/json/submit-record/submit.json
Normal file
18
server/routers/dhs-testing/json/submit-record/submit.json
Normal file
@ -0,0 +1,18 @@
|
||||
{
|
||||
"formData":[
|
||||
{
|
||||
"name": "Имя1",
|
||||
"phone": "89997776655",
|
||||
"date": "2024-01-06",
|
||||
"time": "12:00",
|
||||
"specialist": "Иванов"
|
||||
},
|
||||
{
|
||||
"name": "Имя2",
|
||||
"phone": "89997776654",
|
||||
"date": "2024-01-06",
|
||||
"time": "15:00",
|
||||
"specialist": "Иванов"
|
||||
}
|
||||
]
|
||||
}
|
248
server/routers/dhs-testing/json/tests-data/success.json
Normal file
248
server/routers/dhs-testing/json/tests-data/success.json
Normal file
@ -0,0 +1,248 @@
|
||||
{
|
||||
"tests":
|
||||
[
|
||||
{
|
||||
"questions":
|
||||
["Мне кажется, что другие выглядят лучше, чем я",
|
||||
"Я боюсь выступать перед большой аудиторией",
|
||||
"Я чувствую себя неловко, находясь в центре внимания",
|
||||
"Я часто чувствую себя напряженным",
|
||||
"Я хочу, чтобы мои действия одобрялись другими людьми",
|
||||
"Мне не хочется выглядеть глупым",
|
||||
"Я прихожу к мысли, что моя жизнь бессмысленна",
|
||||
"Я думаю о том, чего ждут от меня другие люди"
|
||||
],
|
||||
"results": [{
|
||||
"title":"Ваш результат - заниженная самооценка",
|
||||
"description":"Если в детстве критика и похвала родителей были нечеткими, пространными, ребенок не понимает, что конкретно означает быть хорошим или плохим. Так бывает, когда мы слышим от взрослых что-то вроде: «Что за негодный ребенок мне достался!» или «У Петровых дочь умница, не то что ты» вместо конструктивной критики за конкретный поступок. Тогда в будущем мы можем стать зависимыми от чужого одобрения, постоянно доказывать, что мы нужны — точно так же, как в детстве пытались заслужить признание взрослого. Человек, у которого не было достаточного опыта любви со стороны родителей, не может «просто полюбить» себя. Он будет искать «повод» для этой любви вовне, пристально наблюдая, как к нему относятся окружающие: уважают ли они его? Считают ли «достаточно хорошим»? Вечные спутники такого человека — болезненное восприятие критики, беспричинная ревность к партнеру, отношение к любой неудаче как к тотальному провалу. Если это про вас, попробуйте взглянуть на себя с сочувствием — не как строгий учитель, а как заботливый и внимательный взрослый смотрит на своего ребенка."
|
||||
},
|
||||
{ "title":"Ваша результат - средняя самооценка",
|
||||
"description":"Люди со средней самооценкой обычно имеют здоровое чувство уверенности в себе, но при этом они не склонны к высокомерию или недооценке своих способностей. Они могут быть целеустремленными, умеющими принимать критику и стремящимися к самосовершенствованию. Такие люди часто открыты новым идеям и опытам, готовы рисковать и пробовать что-то новое, но при этом они сохраняют здравый рассудок и реалистичные ожидания от себя и окружающих."
|
||||
|
||||
},
|
||||
{"title":"Ваш результат - высокая самооценка",
|
||||
"description":"Люди с высокой самооценкой обычно имеют сильное чувство уверенности в себе и своих способностях. Они часто стремятся к достижению высоких целей, уверены в своих решениях и способны принимать ответственность за свои действия. Люди с высокой самооценкой часто проявляют лидерские качества, умеют влиять на окружающих и эффективно решать проблемы. Они обычно отличаются открытостью к новым идеям, готовностью к риску и стремлением к саморазвитию. В то же время, люди с высокой самооценкой могут быть склонны к высокомерию, недостаточно внимательны к мнению других и не всегда готовы принимать критику. Высокая самооценка - это уверенность в своих способностях и ценности как личности. Люди с высокой самооценкой обычно имеют позитивное отношение к себе, верят в свои собственные силы и способны принимать жизненные вызовы с оптимизмом. Они обладают уверенностью в собственных решениях и способны эффективно справляться с трудностями. Однако важно отметить, что высокая самооценка не должна переходить в высокомерие или недостаток уважения к другим."}
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"questions":
|
||||
["Я часто использую символические метафоры для выражения мыслей",
|
||||
"Мне кажется, что работа сценаристаили писателя очень интересна",
|
||||
"Я очень увлечен, когда читаю стихи и рассказы вслух",
|
||||
"Я без труда излагаю свои мысли в устной и письменной форме.",
|
||||
"В школе мне не очень нравились уроки по технологии труда",
|
||||
"Меня абсолютно не интересуют языки программирования",
|
||||
"Одной из самых любимых игрушек в детстве у меня был конструктор",
|
||||
"Я всегда был увлечен изучением иностранных языков"
|
||||
],
|
||||
"results": [{
|
||||
"title":"Ваш результат - образное мышление",
|
||||
"description":"Отделено от предмета в пространстве и времени. Преобразование информации осуществляется с помощью действий с образами. Нет физических ограниченийна преобразование. Операции можно осуществлять последовательно и одновременно. Результатом является мысль, воплощенная в новом образе. Этим мышлением обладают люди с художественным складом ума."},
|
||||
{ "title":"Ваш результат - знаковое мышление",
|
||||
"description":"Преобразование информации осуществляется с помощью умозаключений. Знаки объединяются в более крупные единицы по правилам единой грамматики. Результатом является мысль в форме понятия или высказывания, фиксирующего существенные отношения между обозначаемыми предметами. Этим мышлением обладают люди с гуманитарным складом ума."
|
||||
},
|
||||
{"title":"Ваш результат - символическое мышление",
|
||||
"description":"Преобразование информации осуществляется с помощью правил вывода (в частности, алгебраических правил или арифметических знаков и операций). Результатом является мысль, выраженная в виде структур и формул, фиксирующих существенные отношения между символами. Этим мышлением обладают люди с математическим складом ума."
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"questions":
|
||||
["Мой сон хуже, чем в обычное время",
|
||||
"Сейчас мое настроение хуже обычного",
|
||||
"Я не спокоен за свое будущее",
|
||||
"Мой аппетит в последнее время изменился",
|
||||
"Обычно я чувствую к себе ненависть",
|
||||
"У меня порой бывает желание умереть",
|
||||
"Я с трудом могу принимаю решения",
|
||||
"События радуют меня меньше, чем раньше"
|
||||
],
|
||||
"results": [
|
||||
{ "title":"Ваш результат - выраженная депрессия ",
|
||||
"description":"Вы стали малообщительным человеком, стараетесь избегать контактов даже с близкими людьми. Вероятно, подолгу не выходите из своей комнаты или из дома. Происходящее вокруг теперь не вызывает такого интереса как ранее, а жизнь кажется серой. Скорее всего, вы не следите за собой, за питанием и внешним видом. В вашем случае крайне необходима помощь со стороны специалиста, не стоит тянуть время."
|
||||
},{"title":"Ваш результат - умеренная депрессия",
|
||||
"description":"Легкая депрессия — это расстройство, возникающее в результате перегрузки организма, конфликта с окружающими или просто сильного стресса. Она характеризуется продолжительным плохим настроением (несколько дней и более), периодической раздражительностью или даже агрессией. В последнее время все чаще вы проявляете равнодушие и апатию к окружающему, к тому, что раньше часто приносило положительные эмоции. Чувство усталости даже от нетрудной и не длительной работы. Она проходит, когда человек решает свои проблемы, но если вам не удается самостоятельно справиться с ними, то стоит обратиться за помощью к психотерапевту."
|
||||
},{
|
||||
"title":"Ваш результат - депрессия отсутствует",
|
||||
"description":"Депрессия отсутствует, либо незначительна. Смена настроения, самочувствия часто наблюдается при сезонной депрессии или кратковременных стрессах. В первом случае это следствие недостатка солнечного света, витамина D и дефицита аминов (серотонина, дофамина, норадреналина). А во втором случае — это ощущение эмоциональных и физических перегрузок. Не стоит переживать, это вполне нормальная защитная реакция организма."}
|
||||
|
||||
]
|
||||
},
|
||||
{
|
||||
"questions":
|
||||
["Я испытываю ужас при мысли об избыточном весе",
|
||||
"Я избегаю приема пищи, когда чувствую голод",
|
||||
"Я разрезаю свою еду на маленькие кусочки",
|
||||
"Я знаю о количестве калорий в моей еде",
|
||||
"Я избегаю пищу с большим содержанием углеводов",
|
||||
"Другие хотели бы, чтобы я ел больше",
|
||||
"У меня бывает рвота после того, как поем",
|
||||
"Я испытываю чрезмерную вину после еды"
|
||||
],
|
||||
"results": [{
|
||||
"title":"Ваш результат - похоже у вас РПП",
|
||||
"description":"Вы набрали высокие баллы по показателям анорексии и булимии. Это момент для серьезного разговора и поддержки. Анорексия и булимия – это не просто «диеты» или «плохие привычки». Это глубокие психологические трудности, которые могут иметь опасные и даже смертельные последствия. При анорексии люди могут потерять контакт с реальностью, столкнуться с критическим истощением, нарушением работы внутренних органов. И, да, это может привести к летальному исходу… Булимия тоже чревата серьезными последствиями: электролитный дисбаланс, проблемы с пищеварением, повреждение зубов и даже сердечные нарушения."},
|
||||
{"title":"Ваш результат - ограничительное пищевое поведение",
|
||||
"description":"Ограничительное пищевое поведение является следствием самолечения от ожирения или дистрофии.Ограничительное пищевое поведение может возникнуть на фоне диетотерапии. Крайняя степень выражения ограничительного поведения – так называемая «диетическая депрессия».Профилактикой ограничительного пищевого поведения может послужить постепенное, а не одномоментное исключение из рациона любимых блюд."
|
||||
},
|
||||
{ "title":"Ваш результат - у вас нет РПП ",
|
||||
"description":"Поздравляем! У вас отличные отношения с едой. Кажется, ваше детство прошло без лишнего давления или критики по поводу фигуры и пищевых привычек. Вас, вероятно, не заставляли есть против вашей воли, и вы выросли в атмосфере поддержки и позитивного отношения к своему телу. Будьте здоровы!"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"questions":
|
||||
["Другие люди недостаточно ценят мои хорошие качества",
|
||||
"Люди часто видятся мне либо величественными, либо ужасными",
|
||||
"Я особенно чувствительно реагирую на свои успех и неудачи",
|
||||
"Я очень сильно завидую тем, у кого есть то, чего нет у меня",
|
||||
"Я завидую всем людям, которых считаю красивее себя",
|
||||
"В отношениях я то обожаю, то презираю другого человека",
|
||||
"Я сильно боюсь быть отвергнутым другим человеком",
|
||||
"Когда меня критикуют, я чувствую сильное унижение и апатию"
|
||||
],
|
||||
"results": [{
|
||||
"title":"Ваш результат - тайный поклонник себя",
|
||||
"description":"Ваш результат указывает на высокий уровень скрытого нарциссизма. Это означает, что ваша самооценка и самоуважение во многом зависят от внешнего одобрения и восхищения со стороны окружающих. Вы особенно чувствительны к критике и склонны скрывать свое негодование, вызванное критическими замечаниями, из страха перед еще большим осуждением. Вы частенько «уходите в себя», пытаясь защитить свою уязвимую сторону от враждебного мира, и оставляете участников коммуникации и партнеров в недоумении.Вероятно, вам приходится постоянно ранжировать свои мысли, эмоции, чувства и действия, чтобы продемонстрировать те, которые «подходят» ситуации. Этот процесс может отнимать колоссальное количество ресурса — и вы постоянно чувствуете усталость и истощение. Истинные чувства и мотивы приходится скрывать. Из-за этого ваше поведение может выглядеть загадочным и непоследовательным для окружающих. "},
|
||||
{"title":"Ваш результат - легкая тень нарциссизма",
|
||||
"description":"Вы набрали средний балл по шкале нарциссической уязвимости. Вероятно, вы периодически ищете подтверждения своей значимости со стороны других. Вы чувствительны к критике и беспокоитесь о том, что о вас подумают другие. Иногда вы переживаете моменты неуверенности в себе, которые компенсируете внешним одобрением и вниманием окружающих. Несмотря на то, что ваш результат находится в рамках нормы, эти нарциссические черты все-таки могут вызывать некоторую неудовлетворенность. Кроме того, ваш результат может отражать определенную степень интроверсии, которая не обязательно связана с нарциссическими чертами. Это может означать, что вы предпочитаете делиться своими мыслями и мотивами поступков только с ограниченным кругом близких, и в целом проявляете избирательность в коммуникациях."
|
||||
},
|
||||
{ "title":"Ваша результат - ваше Эго в порядке ",
|
||||
"description":"У вас нет или очень мало деструктивных нарциссических черт. Вы вряд ли находитесь в постоянном поиске внешней валидации, внимания или восхищения. Вы склонны подходить к критике с открытым умом, и не слишком огорчаетесь, если вам отказывают в просьбах. Ваши дружеские и романтические связи, скорее всего, строятся на взаимном уважении и эмпатии, а ваша самооценка стабильна и не зависит от постоянного одобрения окружающих. Это замечательно!"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"questions":
|
||||
["Я чувствую эмоциональную опустошенность",
|
||||
"После работы я чувствую себя, как выжатый лимон",
|
||||
"Утром мне тяжело выйти на работу",
|
||||
"Я редко чувствую энергию и эмоциональный подъем",
|
||||
"Я часто чувствую угнетенность и апатию",
|
||||
"Я замечаю, что моя работа ожесточает меня",
|
||||
"Моя работа все больше меня разочаровывает",
|
||||
"Мне глубоко безразлично, как живут мои знакомые"
|
||||
],
|
||||
"results": [{
|
||||
"title":"Ваш результат - выгорание",
|
||||
"description":"Эмоциональное выгорание случается, когда мы работаем до истощения ресурсов, игнорируем усталость и не умеем ее отслеживать. Нервное напряжение становится обычным фоном — и скоро желание что-то делать и вообще вставать с кровати приближается к нулю. Человек в таком состоянии недоволен не только работой, но и собой в целом, падает иммунитет, коллеги и задачи раздражают или даже вызывают ненависть. Частый спутник выгорания — зависимость. Сначала бокал вина кажется неплохим способом справиться со стрессом, затем бокал перерастает в бутылку, а последствия употребления алкоголя лишают сил окончательно. На последних стадиях выгорания мы уже не помним, что значит чувствовать вдохновение от работы, становимся апатичными, выполняем задачи по минимально допустимой планке качества — лишь бы не уволили. "},
|
||||
{"title":"Ваш результат - на пороге выгорания",
|
||||
"description":"Еще недавно вы были влюблены в свое дело и энергичны — теперь же редко можете выполнить больше необходимого минимума задач. Вы мотивируете себя — «надо поднажать, выпить еще кофе», — но результата почти нет. Утром вы никак не можете проснуться, а вечером тянетесь к алкоголю, вредной еде, сериалам. Так бывает, когда фокус внимания «застревает» на работе: вы считаете, что дела надо делать лучше, а жизнь за пределами офиса или рабочего ноутбука может пока подождать. Сказываются и сами условия работы: например, когда задач и требований слишком много, а внутри команды зреют конфликты и токсичная конкуренция"
|
||||
},
|
||||
{ "title":"Ваша результат - нет выгорания ",
|
||||
"description":"Похоже, работа вам в радость. В понедельник утром вы бодры и настроены на продуктивную неделю: новые задачи вызывают любопытство, брейнштормы с командой — вдохновение, вычеркнутые из списка дела — гордость. Команда вас ценит: вы проявляете инициативу, не подводите с дедлайнами и готовы в перерывах поболтать за чашкой кофе. Большинство людей именно так представляют себе идеальные отношения с работой. В чем же ваш секрет? Чаще всего устойчивость к выгоранию наращивается за пределами рабочего места: в отношениях с близкими, интересных хобби, умении слышать себя. Вы отдыхаете качественно и регулярно (а не когда сил уже нет совсем), поддерживаете себя, если что-то не получается, не принимаете рабочие конфликты близко к сердцу."
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"questions":
|
||||
["Я чувствую беспокойство, если не знаю, чего от меня ждут",
|
||||
"Я склонен очень критично относиться как к себе, так и к другим",
|
||||
"Я боюсь выглядеть глупо и беспокоюсь о своей внешности",
|
||||
"Я преувеличиваю свои ошибки и преуменьшаю успехи",
|
||||
"Я часто чувствую опустошенность или подавленность",
|
||||
"Большую часть времени я тревожусь относительно неважных вещей",
|
||||
"Я чувствую, что не знаю, что нужно сделать или сказать",
|
||||
"Я боюсь сделать ошибку, которую заметят другие люди"
|
||||
],
|
||||
"results": [{
|
||||
"title":"Ваш результат - не уверены в себе",
|
||||
"description":"Вы привыкли быть безжалостным критиком самому себе. Похоже, в детстве эту роль выполняли ваши родители — их похвала, если и была, то звучала абстрактно; зато упреки попадали прямо в цель. «Что за негодный ребенок мне достался!», «От тебя — одни беды», «За что мне такое наказание?» — такие послания говорят не о наших поступках, а о нас целиком. Они фиксируют в психике уверенность ребенка в том, что сам по себе он ничтожен, не достоин внимания и любви. Когда мы вырастаем, желание заслужить эту любовь становится ведущим, а критикующий голос «поселяется» внутри, превращается в преследователя и экзекутора, который следит за каждым нашим шагом. Следуя ему, мы начинаем себя оценивать еще до того, как нас оценили другие."},
|
||||
{"title":"Ваш результат - средняя уверенность",
|
||||
"description":"Ваши результаты теста на уверенность в себе указывают на то, что у вас сбалансированный уровень самоуверенности. Возможно, у вас бывают моменты колебаний и сомнений в своих способностях, но в целом вы обладаете здоровой долей уверенности. Вы можете иногда испытывать неуверенность в своих действиях или решениях, но это не мешает вам двигаться вперед и принимать вызовы. Вы готовы учиться на своих ошибках и стремитесь к личному развитию."
|
||||
},
|
||||
{ "title":"Ваш результат - уверены в себе ",
|
||||
"description":"Ваши результаты теста на уверенность в себе свидетельствуют о том, что вы обладаете здоровой самоуверенностью и позитивным отношением к себе. Вероятно, у вас была поддерживающая и позитивная среда в детстве, где вас поощряли и высоко ценили. Вы умеете видеть свои сильные стороны и цените себя как личность. Ваши достижения и качества не остаются незамеченными, и вы умеете радоваться своим успехам. Ваше отношение к себе положительное, и вы не склонны к самокритике или излишнему самообвинению. "
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"questions":
|
||||
["Я порой чувствую, что мне не по себе",
|
||||
"Я испытываю внутреннее напряжение или дрожь",
|
||||
"Я часто испытываю сильный страх и ужас",
|
||||
"Я неусидчивый, мне постоянно нужно двигаться",
|
||||
"Беспокойные мысли крутятся у меня в голове",
|
||||
"У меня бывает внезапное чувство паники",
|
||||
"Мне бывает трудно сесть и расслабиться",
|
||||
"Я боюсь сделать ошибку, которую заметят другие"
|
||||
],
|
||||
"results": [{
|
||||
"title":"Ваш результат - выраженная тревога",
|
||||
"description":"Возможно, вы часто ощущаете беспокойство, нервозность и неспокойство по поводу различных ситуаций в вашей жизни. Тревога может влиять на ваше поведение, эмоциональное состояние и даже физическое здоровье. Важно обратить внимание на свои ощущения и найти способы справляться с тревожностью. Помните, что тревога — это естественная реакция организма на стрессовые ситуации, но если она начинает мешать вашей повседневной жизни, важно обратиться за помощью к специалисту. "},
|
||||
{"title":"Ваш результат - умеренный уровень",
|
||||
"description":"У вас наблюдается определенная степень тревожности. Время от времени вы ощущаете беспокойство или нервозность, но это не преобладает в вашей повседневной жизни. Средний уровень тревоги может быть обусловлен стрессом, изменениями в жизни или другими факторами. Важно обращать внимание на свои эмоции и уметь справляться с ними. Регулярные методы релаксации могут помочь снизить уровень тревоги."
|
||||
},
|
||||
{ "title":"Ваша результат - нет тревоги ",
|
||||
"description":"Поздравляем! Результаты вашего теста на тревогу показывают, что у вас низкий уровень тревожности. Это означает, что вы обычно спокойны и уверены в себе, не испытываете значительной тревоги или беспокойства. Низкий уровень тревоги свидетельствует о том, что вы хорошо справляетесь с повседневными стрессовыми ситуациями и не даете негативным эмоциям влиять на ваше благополучие. "
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"questions":
|
||||
["Мне трудно помнить обо всех назначенных встречах и обязательствах",
|
||||
"Когда мне нужно долго сидеть на месте, я ерзаю, делаю лишние движения",
|
||||
"Я часто совершаю в работе ошибки по невнимательности",
|
||||
"Бывает такое, что я теряю и потом с трудом нахожу вещи",
|
||||
"Мне сложно держать внимание при скучной однообразной работе",
|
||||
"Я отвлекаюсь на события или шум вокруг во время работы или важного дела",
|
||||
"Мне трудно расслабиться и отдохнуть, даже когда у меня есть свободное время",
|
||||
"Я порой заканчиваю предложения за других, не давая им договорить"
|
||||
],
|
||||
"results": [{
|
||||
"title":"Ваш результат - похоже у вас СДВГ",
|
||||
"description":"Результаты теста говорят о том, что вы — и скорее всего, уже давно — замечаете за собой невнимательность к деталям, ошибки из-за небрежности, проблемы с планированием и организацией дел, склонность терять вещи и опаздывать. Это признаки так называемого «невнимательного» типа СДВГ, которые часто дополняются признаками «гиперактивного» типа: суетливостью, беспокойством, склонностью делать что-то импульсивно и не оценивая последствия. Жить с СДВГ правда тяжело — во многом еще и потому, что общество, ориентированное на «отличников», которые всего достигают и не делают глупостей, часто призывает людей с таким диагнозом «взять себя в руки», «перестать лениться», жить и работать по распорядку, держать дела «по полочкам»."},
|
||||
{"title":"Ваш результат - симптомы СДВГ",
|
||||
"description":"Синдром дефицита внимания и гиперактивности — это особенность нейроразвития, которая серьезно влияет на поведение человека. О его проявлениях сегодня говорят много — это неусидчивость, невнимательность, неспособность замедлиться и расслабиться, будто внутри работает заведенный мотор. Обычно симптомы проявляются с детства, и если у ребенка их можно объяснить особенностями темперамента или возрастным кризисом (кто из нас не отвлекался на уроках и не забывал сменку?), то взрослым СДВГ сильно мешает жить."
|
||||
},
|
||||
{ "title":"Ваша результат - нет СДВГ ",
|
||||
"description":"Поздравляем! Ваши ответы на вопросы теста говорят о том, что с внимательностью и усидчивостью у вас все в порядке. У вас также нет проблем с концентрацией и памятью, вы можете работать последовательно — без вспышек активности и апатии. Похоже, вы не склонны действовать импульсивно, не оценивая последствий, и можете контролировать «неприятные» импульсы, вроде желания перебить собеседника, отвлечься на суету за окном, бросить дело на полпути. "
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"questions":
|
||||
[" Навязчивые мысли сильно влияют на вашу повседневную жизнь",
|
||||
"У Вас есть привычка считать непредсказуемые вещи",
|
||||
"Вы пристально наблюдаюте за дыханием, морганием",
|
||||
"Вам постоянно кажется, что вокруг недостаточно чисто",
|
||||
"У Вас есть ритуальные действия для снижения тревоги",
|
||||
"Перед выходом из дома вы перепроверяете, выключен ли утюг, свет",
|
||||
"Вы не выносите, когда вещи лежат не на своем месте",
|
||||
"Вы испытываете навязчивый страх какого-либо тяжелого заболевания"
|
||||
],
|
||||
"results": [{
|
||||
"title":"Ваш результат - сильное ОКР",
|
||||
"description":"Похоже, ваша жизнь наполнена всепоглощающей тревогой. Иногда вы можете на время заглушать ее, выполняя весьма затейливые ритуалы. Может казаться, что вы временами теряете контакт с реальным миром, и магическое мышление начинает доминировать над логическим и рациональным. Например, вам кажется, что если вы выполните определенное действие несколько раз, то это каким-то образом улучшит ваше состояние, даже если это противоречит здравому смыслу. Вам чрезвычайно сложно контролировать и останавливать повторяющееся поведение. Если другие люди пытаются изменить «заведенный порядок», это может вызывать раздражение и гнев. "},
|
||||
{"title":"Ваш результат - средне-выраженное ОКР",
|
||||
"description":"Вы отмечаете некоторые странности в своем поведении и мыслях. Возможно, вас давно беспокоит какая-то идея, но в целом жить это не мешает. Подумаешь, странности есть у всех! Иногда хочется часто мыть руки после встречи с неприятным человеком или проверять, все ли в порядке в доме, в документах, в новостях. Но это ситуативные случаи, и в целом вы можете противостоять этим состояниям так, чтобы они не нарушали ваш привычный ритм. Если вы понимаете, что в последнее время навязчивое поведение повторяется слишком часто, и вы хотите от него избавиться — проконсультируйтесь со специалистом"
|
||||
},
|
||||
{ "title":"Ваша результат - нет ОКР ",
|
||||
"description":"Поздравляем! Это означает, что у вас нет характерных симптомов этого психического расстройства, таких как навязчивые мысли и компульсивные действия. Отсутствие ОКР является позитивным результатом, поскольку обсессивно-компульсивное расстройство может серьезно повлиять на качество жизни человека, вызывая тревожность, стресс и нарушения в поведении."
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
|
||||
"options": [
|
||||
{"text": "Совершенно верно", "count": 4},
|
||||
{"text": "Верно", "count": 3},
|
||||
{"text": "Затрудняюсь ответить", "count": 2},
|
||||
{"text": "Скорее неверно", "count": 1},
|
||||
{"text": "Совершенно неверно", "count": 0}
|
||||
],
|
||||
|
||||
"titles":
|
||||
[
|
||||
{ "id": 0, "name": "Тест на самооценку", "executionTime": 3, "filter": "На тип личности"},
|
||||
{ "id": 1, "name": "Какой у Вас тип мышления?", "executionTime": 2, "filter": "Интеллектуальные" },
|
||||
{ "id": 2, "name": "Определение уровня депрессии", "executionTime": 4, "filter": "Диагностика расстройств"},
|
||||
{ "id": 3, "name": "Есть ли у Вас РПП?", "executionTime": 1, "filter": "Быстрые" },
|
||||
{ "id": 4, "name": "Тест на скрытый нарциссизм", "executionTime": 4, "filter": "На тип личности" },
|
||||
{ "id": 5, "name": "Диагностика выгорания", "executionTime": 3, "filter": "Диагностика расстройств" },
|
||||
{ "id": 6, "name": "Тест на уверенность в себе", "executionTime": 2, "filter": "Быстрые" },
|
||||
{ "id": 7, "name": "Насколько Вы тревожны?", "executionTime": 5, "filter": "Диагностика расстройств" },
|
||||
{ "id": 8, "name": "Тест на СДВГ", "executionTime": 1, "filter": "Быстрые" },
|
||||
{ "id": 9, "name": "Диагностика ОКР", "executionTime": 2, "filter": "Диагностика расстройств" }
|
||||
]}
|
14
server/routers/dhs-testing/json/users-data/success.json
Normal file
14
server/routers/dhs-testing/json/users-data/success.json
Normal file
@ -0,0 +1,14 @@
|
||||
[
|
||||
{
|
||||
"eMail": "dashakhan3009@mail.ru",
|
||||
"first_name": "Дарья",
|
||||
"second_name": "Ханаева",
|
||||
"password": "qwerty123"
|
||||
},
|
||||
{
|
||||
"eMail": "alexandraaa.ha@gmail.com",
|
||||
"first_name": "Александра",
|
||||
"second_name": "Харитонова",
|
||||
"password": "12345"
|
||||
}
|
||||
]
|
36
server/routers/edateam/auth.js
Normal file
36
server/routers/edateam/auth.js
Normal file
@ -0,0 +1,36 @@
|
||||
const router = require('express').Router();
|
||||
const checkPassword = require('pbkdf2-password')();
|
||||
const jwt = require('jsonwebtoken');
|
||||
const {EDATEAM_JWT_TOKEN} = require('./key');
|
||||
|
||||
const {getUser, _idToId, getResponse, requiredFields, signUp} = require('./controllers');
|
||||
|
||||
router.post('/sign-in', requiredFields(['email','password']), async (req, res)=>{
|
||||
try{
|
||||
const user = await getUser(req.body);
|
||||
|
||||
checkPassword({password:req.body.password, salt:user.salt},async(err, pass, salt, hash )=>{
|
||||
if(err){
|
||||
throw new Error(err);
|
||||
}
|
||||
|
||||
if(user.password === hash){
|
||||
const {password, salt:_salt, ...rest} = user;
|
||||
const token = jwt.sign(_idToId(rest), EDATEAM_JWT_TOKEN);
|
||||
return res.send(getResponse(null, token));
|
||||
}
|
||||
return res.status(400).send(getResponse('Wrong email or password!'));
|
||||
} )
|
||||
}
|
||||
catch(error){
|
||||
res.status(400).send(getResponse(error.message));
|
||||
}
|
||||
});
|
||||
|
||||
router.post('/sign-up', requiredFields(['email', 'login', 'password']), async (req, res) => {
|
||||
let error = null
|
||||
const data = await signUp(req.body).catch((e) => error = e.message)
|
||||
return res.status(error ? 400 : 200).send(getResponse(error, data))
|
||||
})
|
||||
|
||||
module.exports = router;
|
217
server/routers/edateam/controllers.js
Normal file
217
server/routers/edateam/controllers.js
Normal file
@ -0,0 +1,217 @@
|
||||
const ObjectId = require('mongodb').ObjectId;
|
||||
const getHash = require('pbkdf2-password')();
|
||||
const { getDB } = require('../../utils/mongo');
|
||||
|
||||
const USERS_COLLECTION = 'users';
|
||||
const RECIPES_COLLECTION = 'recipes_collection';
|
||||
const FAVORITES_USER = 'favorites_user'
|
||||
let db =null;
|
||||
|
||||
const connect = async () => {
|
||||
db = await getDB('edateam');
|
||||
};
|
||||
|
||||
const init = async () => {
|
||||
await connect();
|
||||
};
|
||||
|
||||
init();
|
||||
|
||||
const _idToId = (data) => {
|
||||
const { _id, ...rest } = data;
|
||||
return {
|
||||
id: _id,
|
||||
...rest
|
||||
};
|
||||
}
|
||||
|
||||
const _idToArray = (data) => {
|
||||
const _idToMap = data.map((item) => _idToId(item));
|
||||
return _idToMap;
|
||||
}
|
||||
|
||||
const getResponse = (error, data, success = true) => {
|
||||
if (error) {
|
||||
return {
|
||||
success: false,
|
||||
error,
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
success,
|
||||
data,
|
||||
}
|
||||
}
|
||||
|
||||
const signUp = async ({ email, login, password }) => {
|
||||
try {
|
||||
db = await getDB('edateam');
|
||||
const userCollection = db.collection(USERS_COLLECTION);
|
||||
|
||||
const userData = await userCollection.findOne({
|
||||
$or: [
|
||||
{ login },
|
||||
{ email }
|
||||
]
|
||||
})
|
||||
|
||||
if (userData?.login === login) {
|
||||
throw new Error('This login already in db!\nPlease come up with another login!');
|
||||
}
|
||||
|
||||
if (userData?.email === email) {
|
||||
throw new Error('This email already in db!\nPlease come up with another email!');
|
||||
}
|
||||
|
||||
return new Promise((resolve, reject) => {
|
||||
getHash({ password }, async (err, pass, salt, hash) => {
|
||||
if (err) {
|
||||
return reject(err);
|
||||
}
|
||||
const insertedCount = await userCollection.insertOne({ email, login, password: hash, salt });
|
||||
|
||||
if (!insertedCount) {
|
||||
return reject(new Error('Insert error!'));
|
||||
}
|
||||
resolve({});
|
||||
});
|
||||
});
|
||||
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
throw error;
|
||||
}
|
||||
};
|
||||
|
||||
const getUser = async ({ email }) => {
|
||||
if (db === null) {
|
||||
throw new Error('no db connection :((');
|
||||
}
|
||||
|
||||
try {
|
||||
const userCollection = db.collection(USERS_COLLECTION);
|
||||
const userData = await userCollection.findOne({ email });
|
||||
if (userData) {
|
||||
return userData;
|
||||
}
|
||||
throw new Error('Wrong email or password!');
|
||||
} catch (error) {
|
||||
throw new Error(error);
|
||||
}
|
||||
}
|
||||
|
||||
const getListRecipes = async () => {
|
||||
try {
|
||||
db = await getDB('edateam');
|
||||
const recipesCollection = db.collection(RECIPES_COLLECTION);
|
||||
const recipesData = await recipesCollection.find().toArray();
|
||||
|
||||
if (recipesData.length > 0) {
|
||||
return _idToArray(recipesData);
|
||||
} else {
|
||||
throw new Error('No recipes found in the database!');
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Error in getListRecipes:', error.message);
|
||||
throw new Error(error.message);
|
||||
}
|
||||
};
|
||||
|
||||
const getRecipe = async (dishId ) => {
|
||||
try {
|
||||
db = await getDB('edateam');
|
||||
const recipesCollection = db.collection(RECIPES_COLLECTION);
|
||||
const id = dishId.id;
|
||||
const recipeData = await recipesCollection.findOne({ _id :new ObjectId(id) } );
|
||||
if (recipeData!=null) {
|
||||
return _idToId(recipeData);
|
||||
}
|
||||
|
||||
throw new Error('Not found recipe');
|
||||
} catch (error) {
|
||||
throw new Error(error);
|
||||
}
|
||||
}
|
||||
|
||||
const addRecipe = async (recipe) => {
|
||||
try {
|
||||
db = await getDB('edateam');
|
||||
const recipesCollection = db.collection(RECIPES_COLLECTION);
|
||||
const result = await recipesCollection.insertOne(recipe);
|
||||
|
||||
if (!result.insertedId) {
|
||||
throw new Error('Recipe insertion failed');
|
||||
}
|
||||
|
||||
return {
|
||||
success: true,
|
||||
id: result.insertedId
|
||||
};
|
||||
} catch (error) {
|
||||
console.error('Error in addRecipe:', error.message);
|
||||
throw new Error(error.message);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
const requiredFields = (fields) => (req, res, next) => {
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
for (const fieldName of fields) {
|
||||
if (!req.body[fieldName]) {
|
||||
throw new Error(`Параметр ${fieldName} не установлен`)
|
||||
}
|
||||
}
|
||||
|
||||
next()
|
||||
}
|
||||
|
||||
const addFavorite = async (userId, recipeId) => {
|
||||
|
||||
try {
|
||||
db = await getDB('edateam');
|
||||
const favoritesCollection = db.collection(FAVORITES_USER);
|
||||
const result = await favoritesCollection.updateOne(
|
||||
{ userId: new ObjectId(userId) },
|
||||
{ $addToSet: { favorites: new ObjectId(recipeId) } },
|
||||
{ upsert: true }
|
||||
);
|
||||
return result;
|
||||
} catch (error) {
|
||||
throw new Error('Error adding favorite: ' + error.message);
|
||||
}
|
||||
};
|
||||
|
||||
const getFavorites = async (userId) => {
|
||||
try {
|
||||
db = await getDB('edateam');
|
||||
const favoritesCollection = db.collection(FAVORITES_USER);
|
||||
const userFavorites = await favoritesCollection.findOne({ userId: new ObjectId(userId) });
|
||||
|
||||
if (!userFavorites || !userFavorites.favorites || userFavorites.favorites.length === 0) {
|
||||
return [];
|
||||
}
|
||||
|
||||
const recipesCollection = db.collection(RECIPES_COLLECTION);
|
||||
const favoriteRecipes = await recipesCollection.find({ _id: { $in: userFavorites.favorites } }).toArray();
|
||||
|
||||
return favoriteRecipes;
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
throw new Error("Failed to get user favorites with recipes");
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = {
|
||||
getUser,
|
||||
signUp,
|
||||
getResponse,
|
||||
_idToId,
|
||||
_idToArray,
|
||||
getListRecipes,
|
||||
getRecipe,
|
||||
addRecipe,
|
||||
requiredFields,
|
||||
getFavorites,
|
||||
addFavorite
|
||||
};
|
@ -1,15 +1,25 @@
|
||||
const router = require('express').Router();
|
||||
|
||||
router.get('/recipe-data', (request, response) => {
|
||||
response.send(require('./json/recipe-data/success.json'));
|
||||
});
|
||||
|
||||
router.get('/userpage-data', (req, res)=>{
|
||||
res.send(require('./json/userpage-data/success.json'));
|
||||
response.send(require('../json/recipe-data/success.json'));
|
||||
});
|
||||
|
||||
router.get('/homepage-data', (req, res)=>{
|
||||
res.send(require('./json/homepage-data/success.json'));
|
||||
router.get('/userpage-data', (req, res) => {
|
||||
res.send(require('../json/userpage-data/success.json'));
|
||||
});
|
||||
|
||||
router.post('/userpage-data', (req, res) => {
|
||||
res.send(require('../json/userpage-data/success.json'));
|
||||
});
|
||||
|
||||
router.get('/homepage-data', (req, res) => {
|
||||
res.send(require('../json/homepage-data/success.json'));
|
||||
});
|
||||
|
||||
router.use('/auth', require('./auth'));
|
||||
|
||||
router.use('/recipe', require('./user'));
|
||||
|
||||
router.use('/main', require('./main'));
|
||||
|
||||
module.exports = router;
|
||||
|
3
server/routers/edateam/key.js
Normal file
3
server/routers/edateam/key.js
Normal file
@ -0,0 +1,3 @@
|
||||
const EDATEAM_JWT_TOKEN = 'secretyk token';
|
||||
|
||||
module.exports = {EDATEAM_JWT_TOKEN};
|
51
server/routers/edateam/main.js
Normal file
51
server/routers/edateam/main.js
Normal file
@ -0,0 +1,51 @@
|
||||
const { getListRecipes , getRecipe, addFavorite , getFavorites} = require('./controllers');
|
||||
|
||||
const router = require('express').Router();
|
||||
|
||||
router.get('/recipes', async (req, res) => {
|
||||
try {
|
||||
const result = await getListRecipes();
|
||||
return res.status(200).json({ success: true, data: result });
|
||||
} catch (error) {
|
||||
console.error('Error in GET /recipes:', error.message);
|
||||
return res.status(500).json({ success: false, message: error.message });
|
||||
}
|
||||
});
|
||||
|
||||
router.post('/recipe', async(req,res)=>{
|
||||
try{
|
||||
const result = await getRecipe(req.body);
|
||||
|
||||
return res.status(200).json({success:true, data: result});
|
||||
}
|
||||
catch(error){
|
||||
console.error('Error in GET /recipes:', error.message);
|
||||
return res.status(500).json({ success: false, message: error.message });
|
||||
}
|
||||
})
|
||||
|
||||
router.post('/favorites', async (req, res) => {
|
||||
try {
|
||||
|
||||
const { userId, recipeId } = req.body;
|
||||
const result = await addFavorite(userId, recipeId);
|
||||
return res.status(200).json({ success: true, data: result });
|
||||
} catch (error) {
|
||||
console.error('Error in POST /favorites:', error.message);
|
||||
return res.status(500).json({ success: false, message: error.message });
|
||||
}
|
||||
});
|
||||
|
||||
router.post('/get-favorites', async(req,res) =>{
|
||||
try {
|
||||
const { userId } = req.body;
|
||||
const result = await getFavorites(userId);
|
||||
console.log(result)
|
||||
return res.status(200).json({ success: true, data: result });
|
||||
} catch (error) {
|
||||
console.error('Error in POST /get-favorites:', error.message);
|
||||
return res.status(500).json({ success: false, message: error.message });
|
||||
}
|
||||
});
|
||||
|
||||
module.exports = router;
|
35
server/routers/edateam/user.js
Normal file
35
server/routers/edateam/user.js
Normal file
@ -0,0 +1,35 @@
|
||||
const { requiredFields , getFavorites, addRecipe} = require('./controllers');
|
||||
|
||||
const router = require('express').Router();
|
||||
|
||||
router.post('/favorites', requiredFields('id'), async(req,res)=>{
|
||||
try{
|
||||
const recipes = await getFavorites(req.body);
|
||||
res.status(200).send(getResponse(recipes));
|
||||
}
|
||||
catch(error){
|
||||
res.status(400).send(getResponse(error.message));
|
||||
}
|
||||
})
|
||||
|
||||
router.post('/add-recept', async (req, res) => {
|
||||
let error = null;
|
||||
let result = null;
|
||||
|
||||
try {
|
||||
result = await addRecipe(req.body);
|
||||
} catch (e) {
|
||||
error = e.message;
|
||||
}
|
||||
|
||||
if (error) {
|
||||
console.error(`Error in POST /add-recept: ${error}`);
|
||||
}
|
||||
|
||||
return res.status(error ? 500 : 201).json({
|
||||
message: error ? error : 'Recipe added successfully',
|
||||
id: result?.id
|
||||
});
|
||||
});
|
||||
|
||||
module.exports = router;
|
103
server/routers/kazan-explore/index.js
Normal file
103
server/routers/kazan-explore/index.js
Normal file
@ -0,0 +1,103 @@
|
||||
const router = require('express').Router();
|
||||
//const loginMiddleware = require('../middleware/login-middleware');
|
||||
|
||||
// First page
|
||||
router.get('/getInfoAboutKazan', (request, response) => {
|
||||
response.send(require('./json/first/info-about-kazan/success.json'))
|
||||
})
|
||||
|
||||
router.get('/getNews', (request, response) => {
|
||||
response.send(require('./json/first/news/success.json'))
|
||||
})
|
||||
|
||||
// Sport page
|
||||
router.get('/getSportData', (request, response) => {
|
||||
response.send(require('./json/sport/sport-data.json'))
|
||||
})
|
||||
|
||||
// Places page
|
||||
router.get('/getPlacesData', (request, response) => {
|
||||
response.send(require('./json/places/places-data.json'))
|
||||
})
|
||||
|
||||
// Transport page
|
||||
router.get('/getInfoAboutTransportPage', (request, response) => {
|
||||
response.send(require('./json/transport/info-about-page.json'))
|
||||
})
|
||||
|
||||
router.get('/getBus', (request, response) => {
|
||||
response.send(require('./json/transport/bus-numbers.json'))
|
||||
})
|
||||
|
||||
router.get('/getTral', (request, response) => {
|
||||
response.send(require('./json/transport/tral-numbers.json'))
|
||||
})
|
||||
|
||||
router.get('/getEvents', (request, response) => {
|
||||
response.send(require('./json/transport/events-calendar.json'))
|
||||
})
|
||||
|
||||
router.get('/getTripSchedule', (request, response) => {
|
||||
response.send(require('./json/transport/trip-schedule/success.json'))
|
||||
})
|
||||
|
||||
router.get('/getInfoAboutInstitutions', (request, response) => {
|
||||
response.send(require('./json/transport/info-about-institutions.json'))
|
||||
})
|
||||
|
||||
// Education page
|
||||
router.get('/getInfoAboutKFU', (request, response) => {
|
||||
response.send(require('./json/education/info-about-kfu.json'))
|
||||
})
|
||||
|
||||
// Login
|
||||
router.post('/entrance', (request, response) => {
|
||||
const { email, password } = request.body.entranceData;
|
||||
|
||||
try {
|
||||
const users = require('../json/users-information/success.json');
|
||||
const user = users.data.find(user => user.email === email && user.password === password);
|
||||
|
||||
if (!user) {
|
||||
return response.status(401).send('Неверные учетные данные');
|
||||
}
|
||||
|
||||
const responseObject = {
|
||||
email: user.email,
|
||||
}
|
||||
|
||||
if (user.cardId){
|
||||
responseObject.cardId = user.cardId || "";
|
||||
}
|
||||
return response.json(responseObject);
|
||||
} catch (error) {
|
||||
console.error('Ошибка чтения файла:', error);
|
||||
response.status(500).send('Внутренняя ошибка сервера');
|
||||
}
|
||||
})
|
||||
|
||||
router.post('/registration', async (request, response) => {
|
||||
const { email, password, confirmPassword } = request.body.registerData;
|
||||
|
||||
try {
|
||||
if (password !== confirmPassword) {
|
||||
return response.status(400).send('Пароли не совпадают!');
|
||||
}
|
||||
const users = require('../json/users-information/success.json');
|
||||
|
||||
const existingUser = users.data.find(user => user.email === email);
|
||||
|
||||
if (existingUser) {
|
||||
return response.status(400).send('Пользователь с такой почтой уже существует!');
|
||||
}
|
||||
|
||||
return response.json({ email: email});
|
||||
} catch (error) {
|
||||
console.error('Ошибка регистрации пользователя:', error);
|
||||
response.status(500).send('Внутренняя ошибка сервера');
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
module.exports = router;
|
0
server/routers/kazan-explore/json/data/success.json
Normal file
0
server/routers/kazan-explore/json/data/success.json
Normal file
@ -0,0 +1,4 @@
|
||||
[
|
||||
"Казанский (Приволжский) федеральный университет (полное наименование — федеральное государственное автономное образовательное учреждение высшего образования «Казанский (Приволжский) федеральный университет», тат. Казан (Идел буе) федераль университеты) — высшее учебное заведение в Казани, один из старейших российских университетов (основан в 1804 году) и один из десяти федеральных университетов (с 2010 года).",
|
||||
"В состав университетского учебно-научного комплекса входят научная библиотека, научно-исследовательские институты химии, математики и механики, 7 музеев, ботанический сад, астрономические обсерватории, центр информационных технологий, издательство, центр и лаборатория оперативной полиграфии, культурно-спортивный комплекс, спортивно-оздоровительный лагерь и другие подразделения."
|
||||
]
|
@ -0,0 +1,3 @@
|
||||
[
|
||||
"Казань — древний город с богатой историей, где слились воедино культуры Востока и Запада. Подобно драгоценному камню, сияющему в ожерелье городов России, Казань покоряет своей красотой и многообразием. Её красивая архитектура и гостеприимные жители создают уютную атмосферу, привлекающую туристов со всего мира."
|
||||
]
|
32
server/routers/kazan-explore/json/first/news/success.json
Normal file
32
server/routers/kazan-explore/json/first/news/success.json
Normal file
@ -0,0 +1,32 @@
|
||||
[
|
||||
{
|
||||
"id": "1",
|
||||
"image": "new1",
|
||||
"title": "На предприятиях в Казани объявили эвакуацию",
|
||||
"text": "В Казани на некоторых предприятиях объявлена необходимость эвакуации. Об этом сообщили в пресс-службе главы Татарстана. «В отдельных районах Казани на предприятиях объявлена необходимость эвакуации», — сообщили в пресс-службе главы Татарстана. Информацию передает ТАСС. Telegram-канал Shot пишет об эвакуации сотрудников химической компании «Казаньоргсинтез»."
|
||||
},
|
||||
{
|
||||
"id": "2",
|
||||
"image": "new2",
|
||||
"title": "В Казани обсудили взаимодействие детей с гаджетами",
|
||||
"text": "В Казани состоялась конференция, посвящённая проблемам воспитания в эпоху технического прогресса. Участники встречи, среди которых психологи, педагоги и родители, обсудили методы противодействия гаджетозависимости и возможности использования технологий для развития молодёжи. «Ничего плохого нет в том, что ребёнок сидит в телефоне. Главное — правильно его направить», - поделилась своим опытом Альфия Валеева, педагог с 16-летним стажем."
|
||||
},
|
||||
{
|
||||
"id": "3",
|
||||
"image": "new3",
|
||||
"title": "Казанский УНИКС проиграл ЦСКА, счёт в серии 0-3",
|
||||
"text": "В третьем матче финала Единой лиги ВТБ ЦСКА на своей площадке оказался сильнее УНИКСа — 80:72. Счет в серии стал 3−0 в пользу ЦСКА. Если армейцы выиграют еще раз, то станут чемпионами. В отличие от предыдущей игры казанцы уверенно начали. Первую четверть они выиграли 17:13, а на старте второй вели 21:13. Однако ЦСКА быстро сравнял счет, а затем вышел вперед. "
|
||||
},
|
||||
{
|
||||
"id": "4",
|
||||
"image": "new4",
|
||||
"title": "Синоптики предупредили о грозе и сильном ветре в Казани",
|
||||
"text": "Сегодня вечером в Татарстане, включая Казань, ожидаются гроза и сильный юго-западный ветер порывами 15–20 м/с, местами – до 23 м/с. Об этом предупреждает Гидрометцентр РТ."
|
||||
},
|
||||
{
|
||||
"id": "5",
|
||||
"image": "new5",
|
||||
"title": "Между столицей РТ и аэропортом запустят дополнительные рейсы",
|
||||
"text": "На маршруте Казань – Аэропорт – Казань два дня будут курсировать дополнительные пригородные поезда. Это связано с проведением концертов в МВЦ «Казань Экспо». Дополнительные поезда проследуют без промежуточных остановок, сообщили в пресс-службе АО «Содружество»."
|
||||
}
|
||||
]
|
78
server/routers/kazan-explore/json/places/places-data.json
Normal file
78
server/routers/kazan-explore/json/places/places-data.json
Normal file
@ -0,0 +1,78 @@
|
||||
[
|
||||
{
|
||||
"id": "1",
|
||||
"type": "Достопримечательности",
|
||||
"image": "kremlin",
|
||||
"head": "Кремль",
|
||||
"text": "Строительство кремля продолжалось с X по XVI век. После завоевания Казани Иваном Грозным в 1552 году татарский кремль был разрушен. На его месте псковские зодчие построили мощные белокаменные стены, оставив лишь некоторые фрагменты старого сооружения. В XVIII веке кремль потерял военное значение, но долго оставался административным и культурным центром Поволжья."
|
||||
},
|
||||
{
|
||||
"id": "2",
|
||||
"image": "kulsharif",
|
||||
"head": "Мечеть Кул-Шариф",
|
||||
"text": "Это одна из визитных карточек Казани. Кроме того, Кул-Шариф ещё и главная джума-мечеть Татарстана. Её возведение началось в 1996 году для восстановления важной архитектурной реликвии Казанского ханства, разрушенной войсками Ивана Грозного в 1552 году. Мечеть получила название в честь последнего имама Казани Кул-Шарифа."
|
||||
},
|
||||
{
|
||||
"id": "3",
|
||||
"image": "suumbike",
|
||||
"head": "Башня Сююмбике",
|
||||
"text": "Сооружение впервые упоминается в документах 1703 года, однако точных сведений ни о дате постройки, ни о происхождении названия нет. По одной из версий, это была сторожевая башня, потому что с её вершины хорошо просматриваются окрестности, а также реки Казанка и Волга."
|
||||
},
|
||||
{
|
||||
"id": "4",
|
||||
"type": "Активный отдых",
|
||||
"image": "cyrc",
|
||||
"head": "Казанский цирк",
|
||||
"text": "Один из ярких памятников советского модернизма. Издалека здание цирка напоминает летающую тарелку. Такую «космическую» форму он получил после масштабной реконструкции 1967 года. Тогда для строительства применили авангардные архитектурные и инженерные решения."
|
||||
},
|
||||
{
|
||||
"id": "5",
|
||||
"image": "park",
|
||||
"head": "Экстрим-парк УРАМ",
|
||||
"text": "УРАМ — самый большой экстрим-парк в России, который состоит из двух частей — открытой и крытой. Уличная часть, объединяющая профессиональные экстрим-зоны и места для прогулок, открылась летом 2020 года и стала одним из самых популярных общественных пространств Казани, а также местом, где спортсмены готовились к соревнованиями мирового масштаба, например, к Олимпиаде в Токио."
|
||||
},
|
||||
{
|
||||
"id": "6",
|
||||
"image": "zoo",
|
||||
"head": "Зоопарк Река-Замбези",
|
||||
"text": "Зоопарк «Река Замбези» Казанский зооботсад - один из старейших зооботсадов в Европе. Увлекательное путешествие в мир животных и растений. Это уникальное место, где посетители могут насладиться богатством флоры и фауны. Он предлагает разнообразные экспозиции, включая животных различных континентов, от экзотических видов до местных жителей."
|
||||
},
|
||||
{
|
||||
"id": "7",
|
||||
"type": "Театры и музеи",
|
||||
"head": "Театр кукол Экият",
|
||||
"text": "Театр кукол Экият в Казани представляет уникальное сочетание традиционного и современного искусства. Он известен своими яркими постановками, привлекающими внимание как детей, так и взрослых. Расположенный в центре города, он стал неотъемлемой частью культурной жизни региона.",
|
||||
"image": "akiyat"
|
||||
},
|
||||
{
|
||||
"id": "8",
|
||||
"head": "Театр оперы и балета",
|
||||
"text": "Театр оперы и балета в Казани является вершиной музыкального и театрального искусства в регионе. С его помощью зрители могут наслаждаться высококлассными оперными постановками и великолепными балетными представлениями, которые оставляют незабываемые впечатления.",
|
||||
"image": "opera"
|
||||
},
|
||||
{
|
||||
"id": "9",
|
||||
"head": "Театр им. К.Тинчурина",
|
||||
"text": "Театр имени Тинчурина воплощает традиции классического искусства, предлагая зрителям широкий выбор спектаклей, начиная от драм и комедий до мюзиклов и балетов. История театра имени К. Тинчурина насчитывает десятилетия искусства и культурного наследия.",
|
||||
"image": "tinchurina"
|
||||
},
|
||||
{
|
||||
"id": "10",
|
||||
"type": "Еда и напитки",
|
||||
"head": "Тюбетей",
|
||||
"text": "«Тюбетей» - это уютное заведение в Казани, предлагающее посетителям широкий выбор блюд татарской кухни в атмосфере гостеприимства и комфорта. Здесь можно насладиться татарскими блюдами, такими как чак-чак, шашлык, манты и другие.",
|
||||
"image": "tubetey"
|
||||
},
|
||||
{
|
||||
"id": "11",
|
||||
"head": "MORE & MORE",
|
||||
"text": "Этот ресторан специализируется на морепродуктах и рыбе. Ресторан More & More – концептуальный проект от ALBA GROUP с акцентом на seafood and wine. По казанским меркам место дорогое, но блюда и ингредиенты оправдывают стоимость",
|
||||
"image": "more"
|
||||
},
|
||||
{
|
||||
"id": "12",
|
||||
"head": "Палома Кантина",
|
||||
"text": "«Палома Кантина» — это мексиканское кафе. Его открыли основатели петербургского бара El Copitas, который попал в мировой рейтинг The World’s 50 Best Bars. Если в Казани вы почувствуете себя одиноко, захотите ярких красок, вам сюда.",
|
||||
"image": "paloma"
|
||||
}
|
||||
]
|
87
server/routers/kazan-explore/json/sport/sport-data.json
Normal file
87
server/routers/kazan-explore/json/sport/sport-data.json
Normal file
@ -0,0 +1,87 @@
|
||||
[
|
||||
{
|
||||
"id": "1",
|
||||
"type": "Баскетбол",
|
||||
"title": "УНИКС ",
|
||||
"text": "Баскетбольный клуб УНИКС — российский мужской баскетбольный клуб. Основан в 1991 году. Представляет город Казань, столицу Республики Татарстан. Выступает в Профессиональной баскетбольной лиге. «УНИКС» расшифровывается как «Университет — Культура — Спорт».",
|
||||
"logo": "unics_logo",
|
||||
"logo_alt": "Логотип УНИКСа",
|
||||
"image": "unics_img",
|
||||
"img_alt": "Фотография игроков УНИКСа с первым чемпионским кубком единой Лиги ВТБ",
|
||||
"link": "https://www.unics.ru/"
|
||||
},
|
||||
{
|
||||
"id": "2",
|
||||
"title": "Казаночка ",
|
||||
"text": "Казаночка участвует в женской баскетбольной суперлиге и представляет город Казань на национальном уровне. «Казаночка» играет важную роль в развитии женского баскетбола в регионе и активно соревнуется на международной арене.",
|
||||
"logo": "kazanochka_logo",
|
||||
"logo_alt": "Логотип спортивного клуба Казаночка",
|
||||
"image": "kazanochka_img",
|
||||
"img_alt": "Фотография игроков Казаночки",
|
||||
"link": "https://bckazanochka.ru/"
|
||||
},
|
||||
{
|
||||
"id": "3",
|
||||
"type": "Хоккей",
|
||||
"title": "Ак Барс ",
|
||||
"text": "Хоккейный клуб «Ак Барс» из Казани — это один из наиболее известных и успешных профессиональных хоккейных клубов в России. Он был основан в 1956 году и является членом Континентальной Хоккейной Лиги (КХЛ), самой престижной лиги в России и одной из сильнейших в мире.",
|
||||
"logo": "akbars_logo",
|
||||
"logo_alt": "Логотип Ак Барса",
|
||||
"image": "akbars_img",
|
||||
"img_alt": "Фотография игроков Ак Барса",
|
||||
"link": "https://www.ak-bars.ru/"
|
||||
},
|
||||
{
|
||||
"id": "4",
|
||||
"title": "Динамо-Ак Барс ",
|
||||
"text": "«Динамо-Казань» — команда по хоккею с мячом из Казани. Играет в суперлиге чемпионата России. Действующий чемпион России.",
|
||||
"logo": "hockey_dinamo_logo",
|
||||
"logo_alt": "Логотип Динамо-Казань",
|
||||
"image": "hockey_dinamo_img",
|
||||
"img_alt": "Фотография игроков Динамо-Казань",
|
||||
"link": "https://hcdinamo-kazan.ru/"
|
||||
},
|
||||
{
|
||||
"id": "5",
|
||||
"type": "Футбол",
|
||||
"title": "Рубин ",
|
||||
"text": "«Рубин» (тат. Рубин Казан футбол төркеме) — российский футбольный клуб из Казани. Один из ведущих российских футбольных клубов второй половины 2000-х годов. Ведёт свою историю с 1936 года, но официальной датой основания считается 1958 год.",
|
||||
"logo": "rubin_logo",
|
||||
"logo_alt": "Логотип Рубина",
|
||||
"image": "rubin_img",
|
||||
"img_alt": "Фотография игроков Рубина",
|
||||
"link": "https://www.rubin-kazan.ru/"
|
||||
},
|
||||
{
|
||||
"id": "6",
|
||||
"type": "Волейбол",
|
||||
"title": "Зенит-Казань ",
|
||||
"text": "«Зенит» (Казань) — российский мужской волейбольный клуб. Основан в 2000 году, до 2004 года назывался «Динамо», с 2005 по июнь 2008 года — «Динамо-Таттрансгаз». 4-кратный чемпион России, 3-кратный обладатель Кубка России, победитель Лиги чемпионов сезонов 2007/08 и 2011/12 годов. Основные цвета: бело-синие.",
|
||||
"logo": "zenit_logo",
|
||||
"logo_alt": "Логотип Зенита",
|
||||
"image": "zenit_img",
|
||||
"img_alt": "Фотография игроков Зенита",
|
||||
"link": "https://zenit-kazan.com/"
|
||||
},
|
||||
{
|
||||
"id": "7",
|
||||
"title": "Динамо-Ак Барс ",
|
||||
"text": "«Динамо-Казань» Казань (до 2008 — «Казаночка») — российский женский волейбольный клуб.",
|
||||
"logo": "vol_dinamo_logo",
|
||||
"logo_alt": "Логотип Динамо-Казань",
|
||||
"image": "vol_dinamo_img",
|
||||
"img_alt": "Фотография игроков Динамо-Казань",
|
||||
"link": "https://dinamo-kazan.com/"
|
||||
},
|
||||
{
|
||||
"id": "8",
|
||||
"type": "Водное поло",
|
||||
"title": "Синтез ",
|
||||
"text": "Толчком развития водного поло в Казани стало строительство первого в Республике 50-ти метрового плавательного бассейна «Оргсинтез», закончившееся в 1973 году. Именно на базе бассейна «Оргсинтез» и была создана взрослая команда «Синтез», добившаяся права играть в первой группе чемпионата РСФСР.",
|
||||
"logo": "waterpolo_logo",
|
||||
"logo_alt": "Логотип Синтеза",
|
||||
"image": "waterpolo_img",
|
||||
"img_alt": "Фотография игроков Синтеза",
|
||||
"link": "https://www.sintez-kazan.ru/index.php/ru/"
|
||||
}
|
||||
]
|
59
server/routers/kazan-explore/json/transport/bus-numbers.json
Normal file
59
server/routers/kazan-explore/json/transport/bus-numbers.json
Normal file
@ -0,0 +1,59 @@
|
||||
[
|
||||
1,
|
||||
2,
|
||||
4,
|
||||
5,
|
||||
6,
|
||||
9,
|
||||
10,
|
||||
"10a",
|
||||
11,
|
||||
15,
|
||||
18,
|
||||
22,
|
||||
23,
|
||||
25,
|
||||
28,
|
||||
"28a",
|
||||
29,
|
||||
30,
|
||||
31,
|
||||
33,
|
||||
34,
|
||||
35,
|
||||
"35a",
|
||||
36,
|
||||
"36a",
|
||||
37,
|
||||
40,
|
||||
42,
|
||||
43,
|
||||
45,
|
||||
46,
|
||||
47,
|
||||
49,
|
||||
53,
|
||||
54,
|
||||
55,
|
||||
56,
|
||||
60,
|
||||
62,
|
||||
63,
|
||||
68,
|
||||
70,
|
||||
71,
|
||||
72,
|
||||
74,
|
||||
75,
|
||||
77,
|
||||
78,
|
||||
84,
|
||||
"84a",
|
||||
88,
|
||||
89,
|
||||
"89a",
|
||||
90,
|
||||
91,
|
||||
93,
|
||||
94
|
||||
]
|
178
server/routers/kazan-explore/json/transport/events-calendar.json
Normal file
178
server/routers/kazan-explore/json/transport/events-calendar.json
Normal file
@ -0,0 +1,178 @@
|
||||
[
|
||||
{
|
||||
"month": "ЯНВАРЬ",
|
||||
"name": "Республиканский фестиваль народного творчества «Кукморские валенки» #ItekFest",
|
||||
"body": "Программа фестиваля традиционно включает творческие номера от команд-участников и представление ростовых фигур в форме пары валенок. На фестивале работают торговые ряды, где можно приобрести знаменитые кукморские валенки и другие сувениры, изготовленные местными умельцами.",
|
||||
"place": "Кукморский район, г.Кукмор"
|
||||
},
|
||||
{
|
||||
"name": "Международный оперный фестиваль им.Федора Шаляпина",
|
||||
"month": "ФЕВРАЛЬ",
|
||||
"body": "Один из культурных брендов Республики Татарстан. В традиционной фестивальной программе – спектакли, в которых выступал сам великий бас Федор Шаляпин.",
|
||||
"place": "г.Казань, Татарский академический государственный театр оперы и балета им.М.Джалиля"
|
||||
},
|
||||
{
|
||||
"name": "Фестиваль креативных санок SUNNYФЕСТ",
|
||||
"body": "Со всех городов республики и даже других регионов России сюда съезжаются санки разных форм и размеров. Презентовав созданные своими руками невообразимые конструкции, участники пробуют их в деле – скатываются с горы, на ходу разыгрывая сценки или исполняя песни. Также зрителей ждут ярмарка, тематические фотосессии и прочие зимние забавы.",
|
||||
"place": "Мамадышский район, г.Мамадыш"
|
||||
},
|
||||
{
|
||||
"name": "III спортивно-исторический фестиваль «Кыш Батыр. Не просто Зимние игры»",
|
||||
"body": "На площадке фестиваля пройдут соревнования по лыжным гонкам и по историческому биатлону среди разных возрастных категорий, победителей лыжных гонок определят по 16 номинациям. Также гостей фестиваля ждет спортивная зарядка под зажигательную музыку, танцы, стрельба из лука и арбалета, метание топориков, поднятие штанги, приседание с коромыслами, бои на импровизированных мечах.",
|
||||
"place": "г.Казань, Горкинско-Ометьевский лес"
|
||||
},
|
||||
{
|
||||
"month": "МАРТ",
|
||||
"name": "Масленица",
|
||||
"body": "Яркая и веселая Масленица с песнями, танцами, играми, угощениями и, конечно, сжиганием чучела проходит во многих городах Татарстана – в Казани (на озере Лебяжье), на острове-граде Свияжск, в Алексеевском, в Чистополе.",
|
||||
"place": "Города Татарстана"
|
||||
},
|
||||
{
|
||||
"month": "АПРЕЛЬ",
|
||||
"name": "Международный фестиваль «Рахлинские сезоны»",
|
||||
"body": "Фестиваль «Рахлинские сезоны» посвящен памяти первого художественного руководителя и главного дирижера Государственного симфонического оркестра Татарстана Н.Рахлина.",
|
||||
"place": "г.Казань, Большой концертный зал имени Сайдашева"
|
||||
},
|
||||
{
|
||||
"month": "МАЙ",
|
||||
"name": "Международный фестиваль классического балета им. Рудольфа Нуриева",
|
||||
"body": "Крупнейший фестиваль балетного искусства, один из старейших в России. С 1993 года носит имя величайшего танцовщика XX века Рудольфа Нуриева, принявшего участие в фестивале в 1992 году.",
|
||||
"place": "г.Казань, Татарский академический государственный театр оперы и балета им. М. Джалиля"
|
||||
},
|
||||
{
|
||||
"name": "Фестиваль русского фольклора «Каравон»",
|
||||
"body": "Программа фольклорного праздника включает красочное театрализованное представление, игры и забавы, выставку-продажу изделий народных ремесел. Кульминацией праздника становится общий дружный хоровод.",
|
||||
"place": "Лаишевский район, с. Никольское"
|
||||
},
|
||||
{
|
||||
"name": "Религиозный праздник «Изге Болгар жиены»",
|
||||
"body": "Торжественные мероприятия, посвященные годовщине принятия ислама Волжскими Булгарами в 922 году, на которые съезжаются тысячи верующих из разных регионов России и стран мира.",
|
||||
"place": "Спасский район, г.Болгар"
|
||||
},
|
||||
{
|
||||
"name": "Ак Барс Банк Казанский марафон",
|
||||
"body": "Участники марафона, который проходит с 2015 года, увидят главные достопримечательности Казани, расположенные на всем протяжении соревновательной трассы. На выбор предлагаются четыре дистанции: 3 км, 10 км, 21,1 км, 42,2 км, отдельные старты запланированы для самых юных спортсменов.",
|
||||
"place": "г.Казань"
|
||||
},
|
||||
{
|
||||
"name": "Международный фестиваль медиаискусства «НУР»",
|
||||
"body": "Участники фестиваля создают медиаарт-работы с помощью света, звука, компьютерных технологий и дополненной реальности в десятках казанских локаций. Кроме инсталляций, выставок цифрового искусства и аудиовизуальных перформансов, на фестивале организуются образовательная программа с лекциями, воркшопами и медиалабораториями, ночная музыкальная программа.",
|
||||
"place": "г.Казань"
|
||||
},
|
||||
{
|
||||
"name": "Татарский национальный праздник «Сабантуй»",
|
||||
"month": "ИЮНЬ",
|
||||
"body": "Праздник проходит в три этапа. В первую субботу по окончании весеннего сева – в селах и деревнях республики, через неделю – в крупных городах Татарстана, а еще через неделю – в столице проходит главный Сабантуй. В районах Казани организуются майданы для проведения состязаний, площадки для выступления мастеров культуры и искусств Татарстана, народные гулянья. На центральном ипподроме города проводятся скачки.",
|
||||
"place": "Города Татарстана"
|
||||
},
|
||||
{
|
||||
"name": "Международный музыкальный фестиваль Бориса Березовского «Летние вечера в Елабуге»",
|
||||
"body": "Этот фестиваль проводится в формате open-air (на открытом воздухе). Художественным руководителем проекта является заслуженный артист России Борис Березовский. Помимо него участие в фестивале принимают известные музыканты, оркестры и коллективы.",
|
||||
"place": "Елабужский район, г.Елабуга, Шишкинские пруды"
|
||||
},
|
||||
{
|
||||
"name": "Фестиваль колокольного звона и русской песни «Алексеевские перезвоны»",
|
||||
"body": "Фестиваль – визитная карточка Алексеевского района. Музыкальная часть фестиваля включает звон-концерт лучших звонарей России и других стран, выступления авторов и исполнителей духовной и народной музыки, фольклорных и танцевальных коллективов различных жанров. Также гостей фестивальной площадки ждут ярмарка «Город мастеров», где можно приобрести сувениры, созданные мастерами-ремесленниками, мастер-классы по изготовлению изделий декоративно-прикладного творчества, детские активности.",
|
||||
"place": "Алексеевский район, пгт. Алексеевское, Соборная площадь"
|
||||
},
|
||||
{
|
||||
"name": "Республиканский фестиваль марийской культуры «Семык»",
|
||||
"body": "«Семык» – один из любимых традиционных праздников марийцев, знаменующий начало летнего праздничного цикла. На фестивале неизменно присутствуют элементы марийской культуры: национальные костюмы, инструментальная музыка, народные песни, танцы, игры, традиционная кухня.",
|
||||
"place": "Мамадышский район, с.Большая Шия"
|
||||
},
|
||||
{
|
||||
"name": "Фестиваль чувашей Закамья «Учук»",
|
||||
"body": "Фестиваль проводится ежегодно с 2006 года в последнюю субботу июня. Во время праздника недалеко от фестивальной площадки старейшинами села варится традиционная каша на родниковой воде. Затем проходят специальные моления с просьбой о дожде для посевов. После молебна приготовленную ритуальную кашу дождя раздают всем присутствующим.",
|
||||
"place": "Альметьеввский район, с.Старое Суркино"
|
||||
},
|
||||
{
|
||||
"name": "Республиканский удмуртский праздник «Гырон Быдтон»",
|
||||
"body": "Праздник традиционно проводится после завершения весенней пахоты и сева яровых, перед сенокосом. Гостей праздника угощают ритуальной кашей, которая варится на кострах. Национальный напиток – кумышку – гостям полагается пить из чаши, прикрепленной к концу посоха, который держит в руках хозяйка. Гость руками к чаше и посоху не прикасается, так что приходится выпивать «до дна».",
|
||||
"place": "Менделеевский район, с.Енабердино"
|
||||
},
|
||||
{
|
||||
"name": "Республиканский праздник мордовской культуры «Валда шинясь»",
|
||||
"body": "Праздник приурочен ко дню летнего солнцестояния, отражающему мифологические представления мордовского народа о мире. Праздник объединяет в себе два основных субэтноса мордовского народа – эрзя и мокшу, а также уникальную этнографическую группу мокшан-каратаев, проживающих в Камско-Устьинском районе Татарстана. Праздник традиционно проходит на большой поляне, где презентуется мордовская национальная культура – быт, обряды, национальная кухня.",
|
||||
"place": "Тетюшский район, с. Кильдюшево"
|
||||
},
|
||||
{
|
||||
"name": "День рыбака",
|
||||
"month": "ИЮЛЬ",
|
||||
"body": "Праздник проходит в Тетюшах, где День города и День рыбака отмечают одновременно, весело и задорно. В этот день гостей ждут театрализованные представления, конкурс на самый крупный улов, танцы и песни, богатый рыбный стол.",
|
||||
"place": "Тетюшский район, г. Тетюши"
|
||||
},
|
||||
{
|
||||
"name": "Республиканский праздник чувашской культуры «Уяв»",
|
||||
"body": "Уяв – старинный чувашский обрядовый праздник, бережно хранимый и передаваемый из поколения в поколение, с особыми ритуалами, хороводами народными забавами и игрищами. На площадках майдана также можно увидеть выставку изделий декоративно-прикладного искусства, поучаствовать в мастер-классах, оценить творческие состязания частушечников и гармонистов.",
|
||||
"place": "Алькеевский район, с. Сиктерме"
|
||||
},
|
||||
{
|
||||
"name": "Республиканский праздник культуры кряшен «Питрау»",
|
||||
"body": "«Питрау» – один из важных обрядовых праздников кряшен. Он приходится на самую макушку лета и олицетворяет переход на новый календарный цикл. После Петрова дня массово выходят на сенокос.",
|
||||
"place": "Мамадышский район, с. Зюри"
|
||||
},
|
||||
{
|
||||
"name": "Республиканский праздник славянской культуры «Иван Купала»",
|
||||
"body": "«Иван Купала» – народный праздник восточных славян, посвященный летнему солнцестоянию и наивысшему расцвету природы. Праздник воссоздает традиционные купальские обряды – плетение венков, гадание на венках, украшение купальского дерева – березы, зажигание купальского костра и прыжки через него. Для участников праздника работают интерактивные площадки, ярмарка товаров народно-художественных промыслов, мастер-классы по плетению венков, изготовлению оберегов, кукол, талисманов.",
|
||||
"place": "Зеленодольский район"
|
||||
},
|
||||
{
|
||||
"name": "Всероссийский фестиваль «Скорлупино»",
|
||||
"body": "Фестиваль - визитная карточка Пестречинского района. Ежегодно на празднике устанавливается необычный гастрономический рекорд. Результат предоставляется возможность продегустировать всем гостям. Традиционно программа фестиваля включает ярмарку народных художественных промыслов с мастер-классами от ремесленников, яркие тематические фотозоны, забавные игры с призами, музыкальные площадки.",
|
||||
"place": "Пестречинский район"
|
||||
},
|
||||
{
|
||||
"name": "Фестиваль современной татарской культуры «Печән базары»",
|
||||
"body": "В день проведения колоритного фестиваля, погружающего в татарскую культуру, работает ярмарка мастеров, где можно приобрести аутентичные и необычные подарки и сувениры на память о Татарстане: одежду, аксессуары и украшения с татарским орнаментом, посуду ручной работы, игрушки, натуральную косметику и многое другое. Также гостей фестиваля ждут лекции, концертная программа, мастер-классы для детей и другие активности, которые помогут узнать много интересного о Татарстане и его культуре.",
|
||||
"place": "г.Казань, Старо-татарская слобода, набережная озера Кабан"
|
||||
},
|
||||
{
|
||||
"name": "Фестиваль «Ага-Базар»",
|
||||
"body": "Идея фестиваля - в возрождении традиций «Восточного базара», который находился в пригороде средневекового Болгара и считался торгово-ремесленным и культурным центром Волжской Булгарии. На фестивале можно услышать этноколлективы, посетить национальные подворья, чтобы познакомиться с обычаями и традициями народов Поволжья. Одна из центральных площадок - стилизованный средневековый рынок Волжской Булгарии, на котором можно было приобрести товары ручной работы.",
|
||||
"place": "Спасский район, г.Болгар, Болгарский музей-заповедник"
|
||||
},
|
||||
{
|
||||
"name": "Международный этнический фестиваль «Крутушка»",
|
||||
"month": "АВГУСТ",
|
||||
"body": "Фестиваль проводится для истинных ценителей качественной этнической музыки и живого фольклорного наследия. По традиции здесь можно поучаствовать в разнообразных мастер-классах: научиться танцам разных народов, основам игры на традиционных инструментах, изготовить собственными руками изделия из глины, кожи, войлока, лозы, дерева, бисера и бересты",
|
||||
"place": "г.Казань, пос.Крутушка"
|
||||
},
|
||||
{
|
||||
"name": "Всероссийская Спасская ярмарка",
|
||||
"body": "В ярмарке принимают участие более 1000 мастеров декоративно-прикладного искусства, художественного творчества и народных промыслов из 150 городов и поселений России и других стран. Проходят выступления фольклорных и цирковых коллективов, работают национальные подворья, «Город мастеров».",
|
||||
"place": "Елабужский район, г.Елабуга"
|
||||
},
|
||||
{
|
||||
"name": "Музейно-фольклорный праздник «Яблочный Спас в Красновидово»",
|
||||
"body": "Издревле село Красновидово славилось своими плодоносными яблоневыми садами. Основа праздника – это концертная программа с выступлением вокального ансамбля «Оберег» и творческих коллективов Республики Татарстан. Также в программе мероприятия и проведение мастер-классов по изготовлению предметов народных промыслов.",
|
||||
"place": "Камско-Устьинский район, село Красновидово"
|
||||
},
|
||||
{
|
||||
"name": "День Казани и Республики Татарстан",
|
||||
"body": "Главный праздник для жителей Татарстана: он широко отмечается во всех городах республики, а казанцы в этот день, 30 августа, справляют еще и день города. На многочисленных праздничных площадках проводятся театрализованные представления, концерты, мотошоу, конкурсы. Завершается день праздничным салютом.",
|
||||
"place": "г.Казань и города Татарстана"
|
||||
},
|
||||
{
|
||||
"name": "Казанский международный фестиваль мусульманского кино",
|
||||
"month": "СЕНТЯБРЬ",
|
||||
"body": "Фестиваль проходит в столице Татарстана с 2005 года. В программу фестиваля отбираются фильмы, отражающие общечеловеческие ценности и культурные традиции, несущие идеи веротерпимости и гуманизма вне зависимости от вероисповедания автора. Помимо основной, зрителей ожидает обширная внеконкурсная программа, которая представит зрителям лучшие образцы российского игрового, документального и анимационного кино, ретроспективные и тематические программы.",
|
||||
"place": "г.Казань"
|
||||
},
|
||||
{
|
||||
"name": "Казанский национальный полумарафон",
|
||||
"body": "На полумарафоне традиционно проходят забеги на дистанциях в 3, 10, 21,1 км, а также детский старт TIMERKIDS для юных спортсменов в разных возрастных категориях. Старт и финиш организуются у стадиона «Ак Барс Арена».",
|
||||
"place": "г.Казань"
|
||||
},
|
||||
{
|
||||
"name": "Международный фестиваль современной музыки им. Софии Губайдулиной Concordia",
|
||||
"month": "НОЯБРЬ",
|
||||
"body": "Фестиваль проходит с 2011 года. Он носит имя известного российского композитора, автора более сотни симфонических произведений Софии Губайдуллиной. Главное направление фестиваля — современная музыка. Традиционно на фестивале звучат и творения самой Софии Губайдуллиной.",
|
||||
"place": "г.Казань, Большой концертный зал имени Сайдашева"
|
||||
},
|
||||
{
|
||||
"name": "«КышДаКар-фест»",
|
||||
"month": "ДЕКАБРЬ",
|
||||
"body": "Новогодний фестиваль открывает свои двери в конце декабря и продолжает работу все новогодние праздники. Нарядные домики традиционно устанавливаются возле главной городской елки у Центра семьи «Казан». Все желающие могут попробовать необычные лакомства, оценить национальную кухню, приобрести сувениры и принять участие в кулинарных мастер-классах. На фестивале свою продукцию представляют индивидуальные предприниматели, самозанятые и фермеры из районов Татарстана.",
|
||||
"place": "г.Казань"
|
||||
}
|
||||
]
|
@ -0,0 +1,6 @@
|
||||
[
|
||||
"Наиболее развитая сеть в городе – автобусная. Она обеспечивает беспересадочные перевозки пассажиров между всеми районами города.",
|
||||
"Трамвайная и троллейбусная маршрутная сеть образует радиально-кольцевую систему. Трамвайным и троллейбусным транспортом обслуживаются все районы города.",
|
||||
"Метрополитен г. Казани – современный, высококомфортабельный и скоростной вид транспорта. Поезда, оснащенные новейшими системами автоматики, позволяют на высоком уровне обслуживать пассажиров.",
|
||||
"Казань также обладает различными туристическими объектами, такими как пешеходные улицы, парки и набережные, которые часто становятся популярными местами для прогулок и отдыха."
|
||||
]
|
@ -0,0 +1,12 @@
|
||||
[
|
||||
1,
|
||||
2,
|
||||
3,
|
||||
5,
|
||||
6,
|
||||
7,
|
||||
8,
|
||||
9,
|
||||
12,
|
||||
13
|
||||
]
|
@ -0,0 +1,450 @@
|
||||
[
|
||||
{
|
||||
"id": "1",
|
||||
"from": "Речной порт",
|
||||
"to": "жилой массив Дербышки",
|
||||
"route_length": "18,03 км",
|
||||
"operating_mode_weekdays": "Будни: начало движения — 5:24. Отправление в последний рейс А — 22:32. Отправление в последний рейс Б — 21:27. Интервал движения: утро — 6,9 мин, вечер — 7,3 мин.",
|
||||
"operating_mode_weekend": " В выходные: начало движения — 5:30. Отправление в последний рейс А — 22:44. Отправление в последний рейс Б — 21:55. Интервал движения 7,5 мин."
|
||||
},
|
||||
{
|
||||
"id": "2",
|
||||
"from": "Станция метро «Аметьево»",
|
||||
"to": "ул.Привокзальная",
|
||||
"route_length": "20,9 км",
|
||||
"operating_mode_weekdays": "Будни: начало движения — 5:40. Отправление в последний рейс А — 21:54. Отправление в последний рейс Б — 21:01. Интервал движения 8,5 мин.",
|
||||
"operating_mode_weekend": "В выходные: начало движения — 5:40. Отправление в последний рейс А — 21:34. Отправление в последний рейс Б — 20:32. Интервал движения 9 мин."
|
||||
},
|
||||
{
|
||||
"id": "4",
|
||||
"from": "Жилой массив Ферма-2",
|
||||
"to": "жилой массив Новая Сосновка",
|
||||
"route_length": "24,59 км",
|
||||
"operating_mode_weekdays": "Будни: начало движения — 5:30. Отправление в последний рейс А — 21:02. Отправление в последний рейс Б — 20:50. Интервал движения 14,8 мин.",
|
||||
"operating_mode_weekend": "В выходные: начало движения — 5:30. Отправление в последний рейс А — 21:07. Отправление в последний рейс Б — 21:20. Интервал движения 22 мин."
|
||||
},
|
||||
{
|
||||
"id": "5",
|
||||
"from": "ЦУМ",
|
||||
"to": "ул.Халитова",
|
||||
"route_length": "27,42 км",
|
||||
"operating_mode_weekdays": "Будни: начало движения — 5:43. Отправление в последний рейс А — 22:05. Отправление в последний рейс Б — 20:45. Интервал движения: утро 6,7 мин, вечер 7 мин.",
|
||||
"operating_mode_weekend": "В выходные: начало движения — 5:31. Отправление в последний рейс А — 22:15. Отправление в последний рейс Б — 21:03. Интервал движения 7,6 мин."
|
||||
},
|
||||
{
|
||||
"id": "6",
|
||||
"from": "Речной порт",
|
||||
"to": "жилой массив Северный",
|
||||
"route_length": "20,9 км",
|
||||
"operating_mode_weekdays": "Будни: начало движения — 5:00. Отправление в последний рейс А — 22:24. Отправление в последний рейс Б — 21:32. Интервал движения 7,8 мин.",
|
||||
"operating_mode_weekend": "В выходные: начало движения — 5:45. Отправление в последний рейс А — 22:07. Отправление в последний рейс Б — 21:20. Интервал движения 8,4 мин."
|
||||
},
|
||||
{
|
||||
"id": "9",
|
||||
"from": "Жилой массив Дербышки",
|
||||
"to": "жилой массив Аки",
|
||||
"route_length": "4,52 км",
|
||||
"operating_mode_weekdays": "Будни: начало движения — 6:00. Отправление в последний рейс А — 19:10. Отправление в последний рейс Б — 19:40.",
|
||||
"operating_mode_weekend": "В выходные: начало движения — 6:00. Отправление в последний рейс А — 19:10. Отправление в последний рейс Б — 19:40."
|
||||
},
|
||||
{
|
||||
"id": "10",
|
||||
"from": "Ул.Серова",
|
||||
"to": "ул.Академика Губкина (кольцевой)",
|
||||
"route_length": "15,3 км",
|
||||
"operating_mode_weekdays": "Будни: начало движения — 5:20. Отправление в последний рейс А — 22:12. Отправление в последний рейс Б — 23:04. Интервал движения 5,7 мин.",
|
||||
"operating_mode_weekend": "В выходные: начало движения — 6:00. Отправление в последний рейс А — 21:30. Отправление в последний рейс Б — 22:30. Интервал движения 7,1 мин."
|
||||
},
|
||||
{
|
||||
"id": "10a",
|
||||
"from": "Ул.Серова",
|
||||
"to": "ул.Академика Губкина (кольцевой)",
|
||||
"route_length": "14,82 км",
|
||||
"operating_mode_weekdays": "Будни: начало движения — 5:19. Отправление в последний рейс А — 21:52. Отправление в последний рейс Б — 22:23. Интервал движения 5,9 мин.",
|
||||
"operating_mode_weekend": "В выходные: начало движения — 6:00. Отправление в последний рейс А — 21:55. Отправление в последний рейс Б — 22:25. Интервал движения 7,2 мин."
|
||||
},
|
||||
{
|
||||
"id": "11",
|
||||
"from": "Жилой массив Дербышки",
|
||||
"to": "жилой массив Малые Дербышки",
|
||||
"route_length": "10,56 км",
|
||||
"operating_mode_weekdays": "Будни: начало движения — 6:00. Отправление в последний рейс А — 18:45. Отправление в последний рейс Б — 19:10.",
|
||||
"operating_mode_weekend": "В выходные: начало движения — 6:00. Отправление в последний рейс А — 18:45. Отправление в последний рейс Б — 19:10."
|
||||
},
|
||||
{
|
||||
"id": "15",
|
||||
"from": "Комбинат «Здоровье»",
|
||||
"to": "ул.Адоратского",
|
||||
"route_length": "10,38 км",
|
||||
"operating_mode_weekdays": "Будни: начало движения — 5:30. Отправление в последний рейс А — 22:51. Отправление в последний рейс Б — 22:22. Интервал движения 6 мин.",
|
||||
"operating_mode_weekend": "В выходные: начало движения — 6:00. Отправление в последний рейс А — 22:50. Отправление в последний рейс Б — 22:30. Интервал движения 7 мин.99"
|
||||
},
|
||||
{
|
||||
"id": "18",
|
||||
"from": "Ул.Северополюсная",
|
||||
"to": "переулок Дуслык",
|
||||
"route_length": "31,41 км",
|
||||
"operating_mode_weekdays": "Будни: начало движения — 4:50. Отправление в последний рейс А — 22:01. Отправление в последний рейс Б — 20:20. Интервал движения 8,5 мин.",
|
||||
"operating_mode_weekend": "В выходные: начало движения — 5:40. Отправление в последний рейс А — 21:58. Отправление в последний рейс Б — 20:14. Интервал движения 10,2 мин."
|
||||
},
|
||||
{
|
||||
"id": "22",
|
||||
"from": "Ул.Можайского",
|
||||
"to": "жилой массив Ферма-2",
|
||||
"route_length": "24,45 км",
|
||||
"operating_mode_weekdays": "5:30. Отправление в последний рейс А — 21:38. Отправление в последний рейс Б — 20:34. Интервал движения: утро 7,1 мин, вечер 7,4 мин.",
|
||||
"operating_mode_weekend": "В выходные: начало движения — 5:40. Отправление в последний рейс А — 21:19. Отправление в последний рейс Б — 20:01. Интервал движения 10,1 мин."
|
||||
},
|
||||
{
|
||||
"id": "23",
|
||||
"from": "Ул.Р.Яхина",
|
||||
"to": "жилой массив Мирный",
|
||||
"route_length": "13,58 км",
|
||||
"operating_mode_weekdays": "Будни: начало движения — 5:20. Отправление в последний рейс А — 22:11. Отправление в последний рейс Б — 21:40. Интервал движения: утро 12,9 мин, вечер 15,1 мин.",
|
||||
"operating_mode_weekend": "В выходные: начало движения — 5:20. Отправление в последний рейс А — 21:05. Отправление в последний рейс Б — 21:13. Интервал движения 15 мин."
|
||||
},
|
||||
{
|
||||
"id": "25",
|
||||
"from": "Ул.Техническая",
|
||||
"to": "жилой массив Дербышки",
|
||||
"route_length": "20,66 км",
|
||||
"operating_mode_weekdays": "Будни: начало движения — 5:30. Отправление в последний рейс А — 19:30. Отправление в последний рейс Б — 18:30. Интервал движения 13,2 мин.",
|
||||
"operating_mode_weekend": "В выходные: начало движения — 6:10. Отправление в последний рейс А — 18:10. Отправление в последний рейс Б — 17:50. Интервал движения 20 мин."
|
||||
},
|
||||
{
|
||||
"id": "28",
|
||||
"from": "ЦПКиО",
|
||||
"to": "ул.Короленко (кольцевой)",
|
||||
"route_length": "8,81 км",
|
||||
"operating_mode_weekdays": "Будни: начало движения — 6:00. Отправление в последний рейс А — 21:45. Отправление в последний рейс Б — 22:02. Интервал движения 7,6 мин.",
|
||||
"operating_mode_weekend": "В выходные: начало движения — 6:00. Отправление в последний рейс А — 21:38. Отправление в последний рейс Б — 22:01. Интервал движения 15 мин."
|
||||
},
|
||||
{
|
||||
"id": "28a",
|
||||
"from": "Чеховский рынок",
|
||||
"to": "ул.Короленко (кольцевой)",
|
||||
"route_length": "10,74 км",
|
||||
"operating_mode_weekdays": "Будни: начало движения — 6:00. Отправление в последний рейс А — 21:30. Отправление в последний рейс Б — 22:01. Интервал движения 8 мин.",
|
||||
"operating_mode_weekend": "В выходные: начало движения — 6:00. Отправление в последний рейс А — 21:30. Отправление в последний рейс Б — 22:01. Интервал движения 15 мин."
|
||||
},
|
||||
{
|
||||
"id": "29",
|
||||
"from": "Строительный институт",
|
||||
"to": "ул.Гудованцева",
|
||||
"route_length": "17,23 км",
|
||||
"operating_mode_weekdays": "Будни: начало движения — 5:30. Отправление в последний рейс А — 22:30. Отправление в последний рейс Б — 21:40. Интервал движения 7,2 мин.",
|
||||
"operating_mode_weekend": "В выходные: начало движения — 6:00. Отправление в последний рейс А — 22:30. Отправление в последний рейс Б — 21:40. Интервал движения 9,2 мин."
|
||||
},
|
||||
{
|
||||
"id": "30",
|
||||
"from": "Переулок Дуслык",
|
||||
"to": "станция Лагерная",
|
||||
"route_length": "27,05 км",
|
||||
"operating_mode_weekdays": "Будни: начало движения — 4:38. Отправление в последний рейс А — 21:24. Отправление в последний рейс Б — 22:40. Интервал движения: утро 6,6 мин, вечер 6,8 мин.",
|
||||
"operating_mode_weekend": "В выходные: начало движения — 5:01. Отправление в последний рейс А — 20:56. Отправление в последний рейс Б — 22:18. Интервал движения 8,1 мин."
|
||||
},
|
||||
{
|
||||
"id": "31",
|
||||
"from": "Магазин «IKEA»",
|
||||
"to": "жилой массив Старое Победилово",
|
||||
"route_length": "29,48 км",
|
||||
"operating_mode_weekdays": "Будни: начало движения — 5:15. Отправление в последний рейс А — 22:10. Отправление в последний рейс Б — 21:46. Интервал движения: утро 6,6 мин, вечер 6,8 мин.",
|
||||
"operating_mode_weekend": "В выходные: начало движения — 5:30. Отправление в последний рейс А — 22:10. Отправление в последний рейс Б — 21:51. Интервал движения 8 мин."
|
||||
},
|
||||
{
|
||||
"id": "33",
|
||||
"from": "Ул.Ленинградская",
|
||||
"to": "жилой массив Ферма-2",
|
||||
"route_length": "99999",
|
||||
"operating_mode_weekdays": "88888",
|
||||
"operating_mode_weekend": "99999"
|
||||
},
|
||||
{
|
||||
"id": "34",
|
||||
"from": "Жилой массив Ферма-2",
|
||||
"to": "ДК им.Саид-Галеева",
|
||||
"route_length": "25,39 км",
|
||||
"operating_mode_weekdays": "Будни: начало движения — 5:25. Отправление в последний рейс А — 18:51. Отправление в последний рейс Б — 19:59. Интервал движения 14,8 мин.",
|
||||
"operating_mode_weekend": "В выходные: начало движения — 6:00. Отправление в последний рейс А — 17:44. Отправление в последний рейс Б — 18:48. Интервал движения 17,5 мин."
|
||||
},
|
||||
{
|
||||
"id": "35",
|
||||
"from": "Станция метро «Площадь Г.Тукая»",
|
||||
"to": "ул.Гаврилова (кольцевой)",
|
||||
"route_length": "14,33 км",
|
||||
"operating_mode_weekdays": "Будни: начало движения — 6:00. Отправление в последний рейс А — 22:26. Отправление в последний рейс Б — 21:35. Интервал движения 7 мин.",
|
||||
"operating_mode_weekend": "В выходные: начало движения — 6:00. Отправление в последний рейс А — 22:15. Отправление в последний рейс Б — 21:21. Интервал движения 9,4 мин."
|
||||
},
|
||||
{
|
||||
"id": "35a",
|
||||
"from": "Станция метро «Площадь Г.Тукая»",
|
||||
"to": "Авторынок (кольцевой)",
|
||||
"route_length": "14,06 км",
|
||||
"operating_mode_weekdays": "Будни: начало движения — 6:00. Отправление в последний рейс А — 22:37. Отправление в последний рейс Б — 21:45. Интервал движения утро 6,4 мин, вечер 6,9 мин.",
|
||||
"operating_mode_weekend": "В выходные: начало движения — 6:00. Отправление в последний рейс А — 22:20. Отправление в последний рейс Б — 21:30. Интервал движения 9 мин."
|
||||
},
|
||||
{
|
||||
"id": "36",
|
||||
"from": "Вещевой рынок",
|
||||
"to": "Осиново",
|
||||
"route_length": "29,9 км",
|
||||
"operating_mode_weekdays": "Будни: начало движения — 5:14. Отправление в последний рейс А — 21:42. Отправление в последний рейс Б — 20:28. Интервал движения: утро 6,8 мин, вечер 7,1 мин.",
|
||||
"operating_mode_weekend": "В выходные: начало движения — 5:30. Отправление в последний рейс А — 21:41. Отправление в последний рейс Б — 20:21. Интервал движения 11 мин."
|
||||
},
|
||||
{
|
||||
"id": "36a",
|
||||
"from": "Жилой массив Залесный",
|
||||
"to": "Новониколаевский",
|
||||
"route_length": "14,98 км",
|
||||
"operating_mode_weekdays": "Будни: начало движения — 6:00. Отправление в последний рейс А — 19:00. Отправление в последний рейс Б — 19:15.",
|
||||
"operating_mode_weekend": "В выходные: начало движения — 6:00. Отправление в последний рейс А — 19:00. Отправление в последний рейс Б — 19:15."
|
||||
},
|
||||
{
|
||||
"id": "37",
|
||||
"from": "Жилой массив Ферма-2",
|
||||
"to": "жилой массив Сухая Река",
|
||||
"route_length": "30,26 км",
|
||||
"operating_mode_weekdays": "Будни: начало движения — 4:58. Отправление в последний рейс А — 21:47. Отправление в последний рейс Б — 21:32. Интервал движения 10 мин.",
|
||||
"operating_mode_weekend": "В выходные: начало движения — 5:30. Отправление в последний рейс А — 21:48. Отправление в последний рейс Б — 20:54. Интервал движения 13,7 мин."
|
||||
},
|
||||
{
|
||||
"id": "40",
|
||||
"from": "Ул.Гаврилова",
|
||||
"to": "кафе «Ак Барс»",
|
||||
"route_length": "19,5 км",
|
||||
"operating_mode_weekdays": "Будни: начало движения — 6:00. Отправление в последний рейс А — 20:00. Отправление в последний рейс Б — 20:55.",
|
||||
"operating_mode_weekend": "В выходные: начало движения — 6:00. Отправление в последний рейс А — 20:00. Отправление в последний рейс Б — 20:00."
|
||||
},
|
||||
{
|
||||
"id": "42",
|
||||
"from": "КДК им.Ленина",
|
||||
"to": "жилой массив Борисоглебское",
|
||||
"route_length": "8,56 км",
|
||||
"operating_mode_weekdays": "Будни: начало движения — 6:00. Отправление в последний рейс А — 19:10. Отправление в последний рейс Б -19:40.",
|
||||
"operating_mode_weekend": "В выходные: начало движения — 6:00. Отправление в последний рейс А — 19:10. Отправление в последний рейс Б 19:40."
|
||||
},
|
||||
{
|
||||
"id": "43",
|
||||
"from": "Ул. Химическая",
|
||||
"to": "ул.Техническая",
|
||||
"route_length": "27,37 км",
|
||||
"operating_mode_weekdays": "Будни: начало движения — 5:00. Отправление в последний рейс А — 21:45. Отправление в последний рейс Б — 21:45. Интервал движения 7,9 мин.",
|
||||
"operating_mode_weekend": "В выходные: начало движения — 5:12. Отправление в последний рейс А — 20:32. Отправление в последний рейс Б — 22:02. Интервал движения 11,3 мин."
|
||||
},
|
||||
{
|
||||
"id": "45",
|
||||
"from": "Жилой массив Ферма-2",
|
||||
"to": "Су Анасы",
|
||||
"route_length": "39,28 км",
|
||||
"operating_mode_weekdays": "Будни: начало движения — 4:57. Отправление в последний рейс А — 22:01. Отправление в последний рейс Б — 22:17. Интервал движения утро 7,1 мин, вечер 7,9 мин.",
|
||||
"operating_mode_weekend": "В выходные: начало движения — 5:00. Отправление в последний рейс А — 21:46. Отправление в последний рейс Б — 22:00. Интервал движения 7,6 мин."
|
||||
},
|
||||
{
|
||||
"id": "46",
|
||||
"from": "Жилой комплекс «Экопарк „Дубрава“»",
|
||||
"to": "Профилакторий",
|
||||
"route_length": "41,42 км",
|
||||
"operating_mode_weekdays": "Будни: начало движения — 5:20. Отправление в последний рейс А — 22:19. Отправление в последний рейс Б — 21:46. Интервал движения 7,1 мин.",
|
||||
"operating_mode_weekend": "В выходные: начало движения — 5:45. Отправление в последний рейс А — 22:01. Отправление в последний рейс Б — 22:01. Интервал движения 8,1 мин."
|
||||
},
|
||||
{
|
||||
"id": "47",
|
||||
"from": "Ул.Батыршина",
|
||||
"to": "Деревня Универсиады",
|
||||
"route_length": "20,67 км",
|
||||
"operating_mode_weekdays": "Будни: начало движения — 5:30. Отправление в последний рейс А — 21:48. Отправление в последний рейс Б — 22:51. Интервал движения 6,6 мин",
|
||||
"operating_mode_weekend": "В выходные: начало движения — 6:00. Отправление в последний рейс А — 21:18. Отправление в последний рейс Б — 22:20. Интервал движения 8,2 мин."
|
||||
},
|
||||
{
|
||||
"id": "49",
|
||||
"from": "Вещевой рынок",
|
||||
"to": "станция Лагерная",
|
||||
"route_length": "21,52 км",
|
||||
"operating_mode_weekdays": "Будни: начало движения — 5:30. Отправление в последний рейс А — 20:48. Отправление в последний рейс Б — 19:48. Интервал движения утро 8,3 мин, вечер 8,9 мин.",
|
||||
"operating_mode_weekend": "В выходные: начало движения — 6:00. Отправление в последний рейс А — 20:43. Отправление в последний рейс Б — 19:50. Интервал движения 11,4 мин."
|
||||
},
|
||||
{
|
||||
"id": "53",
|
||||
"from": "Речной порт",
|
||||
"to": "ул.Ленинградская",
|
||||
"route_length": "16,73 км",
|
||||
"operating_mode_weekdays": "Будни: начало движения — 5:30. Отправление в последний рейс А — 22:10. Отправление в последний рейс Б — 21:14. Интервал движения 9,1 мин.",
|
||||
"operating_mode_weekend": "В выходные: начало движения — 5:20. Отправление в последний рейс А — 21:41. Отправление в последний рейс Б — 20:47. Интервал движения 12,4 мин."
|
||||
},
|
||||
{
|
||||
"id": "54",
|
||||
"from": "Речной порт",
|
||||
"to": "ул.Гаврилова",
|
||||
"route_length": "13,14 км",
|
||||
"operating_mode_weekdays": "Будни: начало движения — 5:30. Отправление в последний рейс А — 22:26. Отправление в последний рейс Б — 21:41. Интервал движения 5,6 мин.",
|
||||
"operating_mode_weekend": "В выходные: начало движения — 6:00. Отправление в последний рейс А — 22:20. Отправление в последний рейс Б — 21:35. Интервал движения 9,1 мин."
|
||||
},
|
||||
{
|
||||
"id": "55",
|
||||
"from": "39-й квартал",
|
||||
"to": "жилой комплекс «Лесной городок»",
|
||||
"route_length": "22,22 км",
|
||||
"operating_mode_weekdays": "Будни: начало движения — 5:35. Отправление в последний рейс А — 22:02. Отправление в последний рейс Б — 22:22. Интервал движения 8,7 мин.",
|
||||
"operating_mode_weekend": "В выходные: начало движения — 6:00. Отправление в последний рейс А — 22:02. Отправление в последний рейс Б — 22:02. Интервал движения 15 мин."
|
||||
},
|
||||
{
|
||||
"id": "56",
|
||||
"from": "Ул.Р.Яхина",
|
||||
"to": "жилой массив Петровский",
|
||||
"route_length": "17,10 км",
|
||||
"operating_mode_weekdays": "Будни: начало движения — 5:40. Отправление в последний рейс А — 21:30. Отправление в последний рейс Б — 20:46.",
|
||||
"operating_mode_weekend": "В выходные: начало движения — 5:50. Отправление в последний рейс А — 18:11. Отправление в последний рейс Б — 19:05."
|
||||
},
|
||||
{
|
||||
"id": "60",
|
||||
"from": "Ул. Химическая",
|
||||
"to": "жилой массив Дербышки",
|
||||
"route_length": "26,62 км",
|
||||
"operating_mode_weekdays": "Будни: начало движения — 5:15. Отправление в последний рейс А — 22:15. Отправление в последний рейс Б — 21:08. Интервал движения утро 7,7 мин, вечер 8,5 мин.",
|
||||
"operating_mode_weekend": "В выходные: начало движения — 5:15. Отправление в последний рейс А — 21:55. Отправление в последний рейс Б — 20:43. Интервал движения 8,2 мин."
|
||||
},
|
||||
{
|
||||
"id": "62",
|
||||
"from": "ДВВС",
|
||||
"to": "жилой комплекс «Салават Купере»",
|
||||
"route_length": "29,33 км",
|
||||
"operating_mode_weekdays": "Будни: начало движения — 5:00. Отправление в последний рейс А — 21:00. Отправление в последний рейс Б — 21:19. Интервал движения 12,5 мин.",
|
||||
"operating_mode_weekend": "В выходные: начало движения — 5:30. Отправление в последний рейс А — 21:06. Отправление в последний рейс Б — 20:06. Интервал движения 12 мин."
|
||||
},
|
||||
{
|
||||
"id": "63",
|
||||
"from": "Ул.Комиссара Габишева",
|
||||
"to": "жилой массив Левченко",
|
||||
"route_length": "30,90 км",
|
||||
"operating_mode_weekdays": "Будни: начало движения — 5:45. Отправление в последний рейс А — 21:20. Отправление в последний рейс Б — 22:41. Интервал движения 8,6 мин.",
|
||||
"operating_mode_weekend": "В выходные: начало движения — 6:00. Отправление в последний рейс А — 20:56. Отправление в последний рейс Б — 22:26. Интервал движения 11,5 мин."
|
||||
},
|
||||
{
|
||||
"id": "68",
|
||||
"from": "Ж/д вокзал",
|
||||
"to": "ул.Иман",
|
||||
"route_length": "20,87 км",
|
||||
"operating_mode_weekdays": "Будни: начало движения — 5:00. Отправление в последний рейс А — 21:47. Отправление в последний рейс Б — 20:46. Интервал движения 10 мин.",
|
||||
"operating_mode_weekend": "В выходные: начало движения — 5:00. Отправление в последний рейс А — 21:14. Отправление в последний рейс Б — 20:15. Интервал движения 12,5 мин."
|
||||
},
|
||||
{
|
||||
"id": "70",
|
||||
"from": "Чеховский рынок",
|
||||
"to": "жилой комплекс «Весна»",
|
||||
"route_length": "11,09 км",
|
||||
"operating_mode_weekdays": "Будни: начало движения — 5:50. Отправление в последний рейс А — 21:30. Отправление в последний рейс Б — 21:00.",
|
||||
"operating_mode_weekend": "В выходные: начало движения — 5:50. Отправление в последний рейс А — 21:21. Отправление в последний рейс Б — 20:39."
|
||||
},
|
||||
{
|
||||
"id": "71",
|
||||
"from": "Городская клиническая больница №5",
|
||||
"to": "жилой массив Константиновка",
|
||||
"route_length": "17,29 км",
|
||||
"operating_mode_weekdays": "Будни: начало движения — 6:00. Отправление в последний рейс А — 21:35. Отправление в последний рейс Б — 20:53.",
|
||||
"operating_mode_weekend": "В выходные: начало движения — 6:00. Отправление в последний рейс А — 21:30. Отправление в последний рейс Б — 20:45."
|
||||
},
|
||||
{
|
||||
"id": "72",
|
||||
"from": "Площадь Вахитова",
|
||||
"to": "Профилакторий",
|
||||
"route_length": "27,33 км",
|
||||
"operating_mode_weekdays": "Будни: начало движения — 5:40. Отправление в последний рейс А — 22:25. Отправление в последний рейс Б — 21:59.",
|
||||
"operating_mode_weekend": "В выходные: начало движения — 6:10. Отправление в последний рейс А — 20:45. Отправление в последний рейс Б — 20:14."
|
||||
},
|
||||
{
|
||||
"id": "74",
|
||||
"from": "ДВВС",
|
||||
"to": "10-й микрорайон",
|
||||
"route_length": "22,39 км",
|
||||
"operating_mode_weekdays": "Будни: начало движения — 6:00. Отправление в последний рейс А — 21:47. Отправление в последний рейс Б — 20:45.",
|
||||
"operating_mode_weekend": "В выходные: начало движения — 6:00. Отправление в последний рейс А — 21:40. Отправление в последний рейс Б — 20:38."
|
||||
},
|
||||
{
|
||||
"id": "75",
|
||||
"from": "Комбинат «Здоровье»",
|
||||
"to": "Универсам-2",
|
||||
"route_length": "11,60 км",
|
||||
"operating_mode_weekdays": "Будни: начало движения — 5:40. Отправление в последний рейс А — 22:25. Отправление в последний рейс Б — 21:59.",
|
||||
"operating_mode_weekend": "В выходные: начало движения — 6:10. Отправление в последний рейс А — 20:45. Отправление в последний рейс Б — 20:14."
|
||||
},
|
||||
{
|
||||
"id": "77",
|
||||
"from": "Переулок Дуслык",
|
||||
"to": "Нефтебаза",
|
||||
"route_length": "28,10 км",
|
||||
"operating_mode_weekdays": "Будни: начало движения — 4:45. Отправление в последний рейс А — 19:23. Отправление в последний рейс Б — 20:20.",
|
||||
"operating_mode_weekend": "В выходные: начало движения — 5:00. Отправление в последний рейс А — 19:03. Отправление в последний рейс Б — 20:22."
|
||||
},
|
||||
{
|
||||
"id": "78",
|
||||
"from": "Ул.Волгоградская",
|
||||
"to": "жилой массив Крутушка",
|
||||
"route_length": " 18,74 км",
|
||||
"operating_mode_weekdays": "Будни: начало движения — 6:00. Отправление в последний рейс А — 19:35. Отправление в последний рейс Б — 20:20.",
|
||||
"operating_mode_weekend": "В выходные: начало движения — 6:00. Отправление в последний рейс А — 19:35. Отправление в последний рейс Б — 20:20."
|
||||
},
|
||||
{
|
||||
"id": "84",
|
||||
"from": "Ул. Халитова",
|
||||
"to": "жилой массив Чебакса",
|
||||
"route_length": "15,32 км",
|
||||
"operating_mode_weekdays": "Будни: начало движения — 6:15. Отправление в последний рейс А — 17:10. Отправление в последний рейс Б — 18:00.",
|
||||
"operating_mode_weekend": "В выходные: начало движения — 6:15. Отправление в последний рейс А — 17:10. Отправление в последний рейс Б — 18:00."
|
||||
},
|
||||
{
|
||||
"id": "84a",
|
||||
"from": "Ул. Халитова",
|
||||
"to": "жилой массив Чебакса",
|
||||
"route_length": "17,48 км",
|
||||
"operating_mode_weekdays": "Будни: начало движения — 6:15. Отправление в последний рейс А — 17:10. Отправление в последний рейс Б — 18:00.",
|
||||
"operating_mode_weekend": "В выходные: начало движения — 6:15. Отправление в последний рейс А — 17:10. Отправление в последний рейс Б — 18:00."
|
||||
},
|
||||
{
|
||||
"id": "88",
|
||||
"from": "Жилой массив Дербышки",
|
||||
"to": "жилой массив Кульсеитово",
|
||||
"route_length": "9,69 км",
|
||||
"operating_mode_weekdays": "Будни: начало движения — 5:30. Отправление в последний рейс А — 22:05. Отправление в последний рейс Б — 20:57. Интервал движения утро 7,4 мин, вечер 7,7 мин.",
|
||||
"operating_mode_weekend": "В выходные: начало движения — 5:30. Отправление в последний рейс А — 21:30. Отправление в последний рейс Б — 20:00. Интервал движения 9,4 мин."
|
||||
},
|
||||
{
|
||||
"id": "89",
|
||||
"from": "Ул.Академика Сахарова",
|
||||
"to": "ул.Гудованцева",
|
||||
"route_length": "27,98 км",
|
||||
"operating_mode_weekdays": "Будни: начало движения — 5:18. Отправление в последний рейс А — 22:13. Отправление в последний рейс Б — 21:04. Интервал движения 7,3 мин.",
|
||||
"operating_mode_weekend": "В выходные: начало движения — 5:30. Отправление в последний рейс А — 22:11. Отправление в последний рейс Б — 20:40. Интервал движения 9,1 мин."
|
||||
},
|
||||
{
|
||||
"id": "90",
|
||||
"from": "Станция метро «Площадь Г.Тукая»",
|
||||
"to": "Куюки",
|
||||
"route_length": "22,02 км",
|
||||
"operating_mode_weekdays": "Будни: начало движения — 5:30. Отправление в последний рейс А — 21:10. Отправление в последний рейс Б — 20:13. Интервал движения 13,8 мин.",
|
||||
"operating_mode_weekend": "В выходные: начало движения — 5:45. Отправление в последний рейс А — 21:10. Отправление в последний рейс Б — 20:04. Интервал движения 19 мин."
|
||||
},
|
||||
{
|
||||
"id": "91",
|
||||
"from": "ЦУМ",
|
||||
"to": "Высокая Гора (АРЗ)",
|
||||
"route_length": "26,71 км",
|
||||
"operating_mode_weekdays": "Будни: начало движения — 5:30. Отправление в последний рейс А — 22:05. Отправление в последний рейс Б — 20:57. Интервал движения утро 7,4 мин, вечер 7,7 мин.",
|
||||
"operating_mode_weekend": "В выходные: начало движения — 5:30. Отправление в последний рейс А — 21:30. Отправление в последний рейс Б — 20:00. Интервал движения 9,4 мин."
|
||||
},
|
||||
{
|
||||
"id": "93",
|
||||
"from": "КДК им.Ленина",
|
||||
"to": "н.п.Берновые Ковали",
|
||||
"route_length": "21,20 км",
|
||||
"operating_mode_weekdays": "Будни: начало движения — 6:00. Отправление в последний рейс А — 18:10. Отправление в последний рейс Б — 18:55.",
|
||||
"operating_mode_weekend": "В выходные: начало движения — 6:00. Отправление в последний рейс А — 16:30. Отправление в последний рейс Б — 17:15."
|
||||
},
|
||||
{
|
||||
"id": "94",
|
||||
"from": "остановка Дубравная",
|
||||
"to": "жилой массив Привольный",
|
||||
"route_length": "6,65 км",
|
||||
"operating_mode_weekdays": "Будни: начало движения — 6:00. Отправление в последний рейс А — 19:30. Отправление в последний рейс Б — 20:00.",
|
||||
"operating_mode_weekend": "В выходные: начало движения — 6:00. Отправление в последний рейс А — 19:30. Отправление в последний рейс Б — 20:00."
|
||||
}
|
||||
]
|
@ -0,0 +1,29 @@
|
||||
{
|
||||
"data": [
|
||||
{
|
||||
"name": "Kamila",
|
||||
"email": "kamila@gmail.com",
|
||||
"password": "qwerty"
|
||||
},
|
||||
{
|
||||
"name": "Liliya",
|
||||
"email": "liliya@mail.ru",
|
||||
"password": "12121"
|
||||
},
|
||||
{
|
||||
"name": "Guzel",
|
||||
"email": "guzel@gmail.com",
|
||||
"password": "12345"
|
||||
},
|
||||
{
|
||||
"name": "Labeyrie",
|
||||
"email": "superlu@unics.ru",
|
||||
"password": "qwertyqwe"
|
||||
},
|
||||
{
|
||||
"name": "Ismael Bako",
|
||||
"email": "bako@unics.ru",
|
||||
"password": "21"
|
||||
}
|
||||
]
|
||||
}
|
30
server/routers/my/index.js
Normal file
30
server/routers/my/index.js
Normal file
@ -0,0 +1,30 @@
|
||||
const router = require('express').Router();
|
||||
|
||||
router.get('/catalog-data', (request, response) => {
|
||||
response.send(require('./stubs/json/catalog-data/success.json'))
|
||||
})
|
||||
|
||||
router.get('/item-data', (request, response) => {
|
||||
response.send(require('./stubs/json/catalog-data/newsuccess.json'))
|
||||
})
|
||||
router.post('/search', (request, response) => {
|
||||
const searchTerm = request.body.search.toLowerCase();
|
||||
|
||||
try {
|
||||
const itemsData = require('./stubs/json/catalog-data/newsuccess.json');
|
||||
const itemData = itemsData.data.find(item => item.name.toLowerCase().includes(searchTerm));
|
||||
|
||||
if (itemData) {
|
||||
return response.json({ data: itemData });
|
||||
} else {
|
||||
console.log('Item not found');
|
||||
return response.status(404).send('Item not found');
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Error reading file:', error);
|
||||
return response.status(500).send('Internal server error');
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
module.exports = router;
|
52
server/routers/my/json/catalog-data/success.json
Normal file
52
server/routers/my/json/catalog-data/success.json
Normal file
@ -0,0 +1,52 @@
|
||||
{
|
||||
"data":[
|
||||
[{
|
||||
"id": 1,
|
||||
"photo": "shirt7_1x",
|
||||
"alt" :"ФУТБОЛКА 'ЧЕРНОЕ МОРЕ'",
|
||||
"name": "ФУТБОЛКА 'ЧЕРНОЕ МОРЕ'",
|
||||
"price": "1500 руб.",
|
||||
"setphoto": ["shirt7_1x","shirt7_2x","shirt7_4x"]
|
||||
},
|
||||
{
|
||||
"id":2,
|
||||
"photo": "shirt8_1x",
|
||||
"alt" :"ЗИП МУЖСКОЙ",
|
||||
"name": "ЗИП МУЖСКОЙ",
|
||||
"price": "1500 руб.",
|
||||
"setphoto": ["shirt8_1x","shirt8_2x","shirt8_4x"]
|
||||
},
|
||||
{
|
||||
"id": 3,
|
||||
"photo": "shirt1_1x",
|
||||
"alt" :"Фотография футболки белого цвета с цитатой из К/ф Кавказская пленница",
|
||||
"name": "ФУТБОЛКА С ПРИНТОМ МОСФИЛЬМ",
|
||||
"price": "1500 руб.",
|
||||
"setphoto": ["shirt1_1x","shirt1_2x","shirt1_4x"]
|
||||
}],
|
||||
[{
|
||||
"id": 4,
|
||||
"photo": "shirt9_1x",
|
||||
"alt" :"ЛАВАНДОВОЕ ХУДИ",
|
||||
"name": "ЛАВАНДОВОЕ ХУДИ",
|
||||
"price": "1500 руб.",
|
||||
"setphoto": ["shirt9_1x","shirt9_2x","shirt9_4x"]
|
||||
},
|
||||
{
|
||||
"id": 5,
|
||||
"photo": "shirt10_1x",
|
||||
"alt" :"ФУТБОЛКА АНИМЕ",
|
||||
"name": "ФУТБОЛКА АНИМЕ",
|
||||
"price": "1500 руб.",
|
||||
"setphoto": ["shirt10_1x","shirt10_2x","shirt10_4x"]
|
||||
},
|
||||
{
|
||||
"id": 6,
|
||||
"photo":"shirt11_1x",
|
||||
"alt" :"ФУТБОЛКА ОВЕРСАЙЗ С ПРИНТОМ ЭРАРТА",
|
||||
"name": "ФУТБОЛКА ОВЕРСАЙЗ С ПРИНТОМ ЭРАРТА",
|
||||
"price": "1500 руб.",
|
||||
"setphoto": ["shirt11_1x","shirt11_2x", "shirt11_4x"]
|
||||
}]
|
||||
]
|
||||
}
|
179
server/routers/my/json/item-data/newsuccess.json
Normal file
179
server/routers/my/json/item-data/newsuccess.json
Normal file
@ -0,0 +1,179 @@
|
||||
{
|
||||
"data":[
|
||||
{
|
||||
"id": 1,
|
||||
"photo": ["shirt7_1x", "shirt7_1_1x"],
|
||||
"alt" :"ФУТБОЛКА 'ЧЕРНОЕ МОРЕ'",
|
||||
"name": "ФУТБОЛКА 'ЧЕРНОЕ МОРЕ'",
|
||||
"price": "1500 руб.",
|
||||
"color" : "Серый",
|
||||
"colorid" : 7,
|
||||
"colorcss": ["#606060","#FFFFFF"],
|
||||
"setphoto": ["shirt7_1x","shirt7_1_1x","shirt7_2x","shirt7_1_2x", "shirt7_4x", "shirt7_1_4x"],
|
||||
"size": ["XS/S","M/L","XL/XLL"],
|
||||
"body": ["79653",
|
||||
"Весна-Лето 2023",
|
||||
"Черное море",
|
||||
"без застежки",
|
||||
"светло-серый",
|
||||
"100% Хлопок",
|
||||
"свободный",
|
||||
"картина",
|
||||
"удлиненная",
|
||||
"101-78-96",
|
||||
"178",
|
||||
"M (48)",
|
||||
"без карманов",
|
||||
"160",
|
||||
"Женский"]
|
||||
},
|
||||
{
|
||||
"id":2,
|
||||
"photo": ["shirt8_1x", "shirt8_1_1x"],
|
||||
"alt" :"ЗИП МУЖСКОЙ",
|
||||
"name": "ЗИП МУЖСКОЙ",
|
||||
"price": "1500 руб.",
|
||||
"setphoto": ["shirt8_1x","shirt8_1_1x","shirt8_2x","shirt8_1_2x", "shirt8_4x", "shirt8_1_4x"],
|
||||
"size": ["XS/S","M/L","XL/XLL"],
|
||||
"body": ["7934",
|
||||
"Весна-Осень 2023",
|
||||
"Третьяковская галерея",
|
||||
"с застежкой",
|
||||
"черный",
|
||||
"100% Хлопок",
|
||||
"свободный",
|
||||
"надпись",
|
||||
"удлиненная",
|
||||
"90-80-96",
|
||||
"182",
|
||||
"L (50)",
|
||||
"с карманами",
|
||||
"160",
|
||||
"Мужской"]
|
||||
},
|
||||
{
|
||||
"id": 3,
|
||||
"photo": ["shirt1_1x", "shirt1_1_1x"],
|
||||
"alt" :"Фотография футболки белого цвета с цитатой из К/ф Кавказская пленница",
|
||||
"name": "Футболка с принтом Мосфильм",
|
||||
"price": "1500 руб.",
|
||||
"setphoto": ["shirt1_1x","shirt1_1_1x","shirt1_2x","shirt1_1_2x", "shirt1_4x", "shirt1_1_4x"],
|
||||
"size": ["XS/S","M/L","XL/XLL"],
|
||||
"body": ["79776",
|
||||
"Весна-Лето 2021",
|
||||
"Третьяковская галерея",
|
||||
"без застежки",
|
||||
"темно-серый",
|
||||
"100% Хлопок",
|
||||
"свободный",
|
||||
"надписи",
|
||||
"удлиненная",
|
||||
"101-78-96",
|
||||
"189",
|
||||
"L (50)",
|
||||
"без карманов",
|
||||
"160",
|
||||
"Женский"]
|
||||
},
|
||||
{
|
||||
"id": 4,
|
||||
"photo": ["shirt9_1x", "shirt9.1_1x"],
|
||||
"alt" :"ЛАВАНДОВОЕ ХУДИ",
|
||||
"name": "ЛАВАНДОВОЕ ХУДИ",
|
||||
"price": "1500 руб.",
|
||||
"setphoto": ["shirt9_1x","shirt9.1_1x","shirt9_2x","shirt9.1_2x", "shirt9_4x", "shirt9.1_4x"],
|
||||
"size": ["XS/S","M/L","XL/XLL"],
|
||||
"body": ["79276",
|
||||
"Весна-Лето 2021",
|
||||
"Третьяковская галерея",
|
||||
"без застежки",
|
||||
"лавандовы",
|
||||
"100% Хлопок",
|
||||
"свободный",
|
||||
"надписи",
|
||||
"удлиненная",
|
||||
"101-78-96",
|
||||
"184",
|
||||
"L (50)",
|
||||
"с карманами",
|
||||
"160",
|
||||
"Женский"]
|
||||
},
|
||||
{
|
||||
"id": 5,
|
||||
"photo": ["shirt10_1x", "shirt10.1_1x"],
|
||||
"alt" :"ФУТБОЛКА АНИМЕ",
|
||||
"name": "ФУТБОЛКА АНИМА",
|
||||
"price": "1500 руб.",
|
||||
"setphoto": ["shirt10_1x","shirt10.1_1x","shirt10_2x","shirt10.1_2x", "shirt10_4x", "shirt10.1_4x"],
|
||||
"size": ["XS/S","M/L","XL/XLL"],
|
||||
"body": ["79276",
|
||||
"Лето 2024",
|
||||
"Третьяковская галерея",
|
||||
"без застежки",
|
||||
"фистошковый",
|
||||
"100% Хлопок",
|
||||
"свободный",
|
||||
"картина",
|
||||
"удлиненная",
|
||||
"101-78-96",
|
||||
"189",
|
||||
"L (50)",
|
||||
"без карманов",
|
||||
"160",
|
||||
"Мужской"]
|
||||
},
|
||||
{
|
||||
"id": 6,
|
||||
"photo": ["shirt11_1x", "shirt11.1_1x"],
|
||||
"alt" :"ФУТБОЛКА ОВЕРСАЙЗ С ПРИНТОМ ЭРАРТА",
|
||||
"name": "ФУТБОЛКА ОВЕРСАЙЗ С ПРИНТОМ ЭРАРТА",
|
||||
"price": "1500 руб.",
|
||||
"setphoto": ["shirt11_1x","shirt11.1_1x","shirt11_2x","shirt11.1_2x", "shirt11_4x", "shirt11.1_4x"],
|
||||
"size": ["XS/S","M/L","XL/XLL"],
|
||||
"body": ["79276",
|
||||
"Лето 2024",
|
||||
"Третьяковская галерея",
|
||||
"без застежки",
|
||||
"черный",
|
||||
"100% Хлопок",
|
||||
"свободный",
|
||||
"картина",
|
||||
"удлиненная",
|
||||
"101-78-96",
|
||||
"189",
|
||||
"L (50)",
|
||||
"без карманов",
|
||||
"160",
|
||||
"Женский"]
|
||||
},
|
||||
{
|
||||
"id": 7,
|
||||
"photo": ["shirt7_1x", "shirt7_1_1x"],
|
||||
"alt" :"ФУТБОЛКА 'ЧЕРНОЕ МОРЕ'",
|
||||
"name": "ФУТБОЛКА 'ЧЕРНОЕ МОРЕ'",
|
||||
"price": "1500 руб.",
|
||||
"color" : "Белый",
|
||||
"colorid" : 1,
|
||||
"colorcss": ["#606060","#FFFFFF"],
|
||||
"setphoto": ["shirt7_1x","shirt7_1_1x","shirt7_2x","shirt7_1_2x", "shirt7_4x", "shirt7_1_4x"],
|
||||
"size": ["XS/S","M/L","XL/XLL"],
|
||||
"body": ["79653",
|
||||
"Весна-Лето 2023",
|
||||
"Черное море",
|
||||
"без застежки",
|
||||
"светло-серый",
|
||||
"100% Хлопок",
|
||||
"свободный",
|
||||
"картина",
|
||||
"удлиненная",
|
||||
"101-78-96",
|
||||
"178",
|
||||
"M (48)",
|
||||
"без карманов",
|
||||
"160",
|
||||
"Женский"]
|
||||
}
|
||||
]
|
||||
|
||||
}
|
49
server/routers/school-stage/index.js
Normal file
49
server/routers/school-stage/index.js
Normal file
@ -0,0 +1,49 @@
|
||||
/*const router = require('express').Router();
|
||||
|
||||
module.exports = router;
|
||||
|
||||
router.get('/teachers', (request, response) => {
|
||||
response.send(require('../json/teachers/success.json'))
|
||||
})
|
||||
|
||||
router.get('/account', (request, response) => {
|
||||
response.send(require('../json/account/account.json'))
|
||||
})
|
||||
|
||||
router.post('/login', (request, response) => {
|
||||
response.send(require('../json/login/success.json'))
|
||||
})*/
|
||||
const router = require('express').Router();
|
||||
|
||||
router.get('/teachers', (request, response) => {
|
||||
response.send(require('./json/teachers/success.json'))
|
||||
})
|
||||
|
||||
router.get('/account', (request, response) => {
|
||||
response.send(require('./json/account/account.json'))
|
||||
})
|
||||
|
||||
router.post('/login', (request, response) => {
|
||||
const login = request.body.login;
|
||||
const password = request.body.password;
|
||||
|
||||
try {
|
||||
const users = require('./json/account/account.json');
|
||||
const user = users.data.find(user => user.login === login && user.password === password);
|
||||
|
||||
if (!user) {
|
||||
return response.status(401).send('Неверные данные');
|
||||
}
|
||||
|
||||
const responseObject = {
|
||||
login: user.login,
|
||||
}
|
||||
return response.json(responseObject);
|
||||
} catch (error) {
|
||||
console.error('Error reading file:', error);
|
||||
response.status(400).send('Internal server error');
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
module.exports = router;
|
28
server/routers/school-stage/json/account/account.json
Normal file
28
server/routers/school-stage/json/account/account.json
Normal file
@ -0,0 +1,28 @@
|
||||
{
|
||||
"data": [
|
||||
{
|
||||
"login": "user1",
|
||||
"password":"1234",
|
||||
"photo": "boy",
|
||||
"surname": "Иванов",
|
||||
"name": "Иван",
|
||||
"class": "2",
|
||||
"group": "1",
|
||||
"number": "+7 927 030 13 00",
|
||||
"teacher": "Иванова Валерия Константиновна",
|
||||
"lessons": ["02.05", "07.05", "14.05", "17.05", "21.05", "24.05", "28.05"]
|
||||
},
|
||||
{
|
||||
"login": "user2",
|
||||
"password":"123",
|
||||
"photo": "boy",
|
||||
"surname": "Александров",
|
||||
"name": "Евгений",
|
||||
"class": "2",
|
||||
"group": "1",
|
||||
"number": "+7 927 030 13 00",
|
||||
"teacher": "Иванова Валерия Константиновна",
|
||||
"lessons": ["02.05", "07.05", "14.05", "17.05", "21.05", "24.05", "28.05"]
|
||||
}
|
||||
]
|
||||
}
|
14
server/routers/school-stage/json/login/success.json
Normal file
14
server/routers/school-stage/json/login/success.json
Normal file
@ -0,0 +1,14 @@
|
||||
{
|
||||
"data":
|
||||
{
|
||||
"login": "user1",
|
||||
"photo": "boy",
|
||||
"surname": "Иванов",
|
||||
"name": "Иван",
|
||||
"class": "2",
|
||||
"group": "1",
|
||||
"number": "+7 927 030 13 00",
|
||||
"teacher": "Иванова Валерия Константиновна",
|
||||
"lessons": ["02.05", "07.05", "14.05", "17.05", "21.05", "24.05", "28.05"]
|
||||
}
|
||||
}
|
15
server/routers/school-stage/json/teachers/success.json
Normal file
15
server/routers/school-stage/json/teachers/success.json
Normal file
@ -0,0 +1,15 @@
|
||||
{
|
||||
"data":
|
||||
[
|
||||
{
|
||||
"imageUrl": "teacher1",
|
||||
"name": "Иванова Валерия Константинова",
|
||||
"status": "Педагог с бакалаврской степенью по театральному искусству. Обладает более чем 15-летним опытом работы на театральной сцене, является действующим актером театра и кино."
|
||||
},
|
||||
{
|
||||
"imageUrl": "teacher2",
|
||||
"name": "Рогов Сергей Владимирович",
|
||||
"status": "Педагог по актерскому мастерству с высшим образованием в области режиссуры, постановщик спектаклей. Опыт работы с детьми 10 лет."
|
||||
}
|
||||
]
|
||||
}
|
Loading…
Reference in New Issue
Block a user