Giter Club home page Giter Club logo

nt_form's Introduction

NT_form

Тестовое задание

Это тестовое задание не имеет никаких технических ограничений. Ты можешь использовать любые инструменты.

1. Билеты на событие

После успешной покупки билетов на событие, данные попадают в список заказов. Список заказов сохраняется в таблице phpMyAdmin в виде:

id event_id event_date ticket_adult_price ticket_adult_quantity ticket_kid_price ticket_kid_quantity barcode user_id equal_price created
1 003 2021-08-21 13:00:00 700 1 450 0 11111111 00451 700 2021-01-11 13:22:09
2 006 2021-07-29 18:00:00 1000 0 800 2 22222222 00364 1600 2021-01-12 16:62:08
3 003 2021-08-15 17:00:00 700 4 450 3 33333333 00015 4150 2021-01-13 10:08:45

Где:

  • id - инкрементальный порядковый номер заказа
  • event_id - уникальный ид события. У каждого события есть свое название, описание, расписание, цены и свой уникальный event_id соответственно
  • event_date - дата и время на которое были куплены билеты
  • ticket_adult_price - цена взрослого билета на момент покупки
  • ticket_adult_quantity - количество купленных взрослых билетов в этом заказе
  • ticket_kid_price - цена детского билета на момент покупки
  • ticket_kid_quantity - количество купленных детских билетов в этом заказе
  • barcode уникальный штрих код заказа
  • equal_price - общая сумма заказа
  • created - дата создания заказа

Вопросы:

  1. Некоторые события нужно продавать с дополнительными типами билетов - льготный и групповой, у которых будут свои цены и название. Имеется информация, что вероятно, будут другие типы билетов, которые нужно будет добавить. Нужно уметь сохранять при заказе 2 дополнительных типа билета, льготный и групповой в бд. Задача - Показать конечный вид таблицы с добавленными типами билетов. Объяснить свое решение.

Ответ -

id event_id event_date ticket_adult_price ticket_adult_quantity preferential_ticket_adult_price preferential_ticket_adult_quantity ticket_kid_price ticket_kid_quantity preferential_kid_price preferential_ticked_kid_quantity group_ticket_price group_ticket_quantity barcode user_id equal_price created
1 003 2021-08-21 13:00:00 700 1 400 1 450 0 250 1 null 0 11111111 00451 1350 2021-01-11 13:22:09
2 006 2021-07-29 18:00:00 1000 0 null 0 800 2 null 0 2500 2 22222222 00364 6600 2021-01-12 16:62:08
3 003 2021-08-15 17:00:00 700 4 400 2 450 3 250 2 null 0 33333333 00015 5450 2021-01-13 10:08:45

Льготные билеты могут быть как для взрослых так и для детей, поэтому я добавила столбцы с ценами и количеством билетов отдельно для взрослых и отдельно для детей. Групповые билеты я не стала разделять на детские и взрослые. Для определенного события может не быть какого либо из дополнительных типов билетов, поэтому, если в событии нет какого-либо доп.типа, я указала в колонке с ценой null, т.е. нет цены.

  1. Часто посетители из одного заказа приходят не одновременно на события. Возникает необходимость чекинить их по отдельности. Для этого у каждого билета должен быть свой баркод. Если в одном заказе было куплено несколько билетов, 2 взрослых, 3 детских, 4 льготных - то должно быть 9 баркодов для каждого билета соответственно. Задача - Показать конечный вид таблицы, где у каждого билета свой баркод. Объяснить свое решение.
id event_id event_date ticket_adult_price ticket_adult_quantity ticket_adult_barcodes preferential_ticket_adult_price preferential_ticket_adult_quantity preferential_ticked_adult_barcodes ticket_kid_price ticket_kid_quantity ticked_kid_barcodes preferential_kid_price preferential_ticked_kid_quantity preferential_ticked_kid_barcodes group_ticket_price group_ticket_quantity group_ticked_barcodes barcode user_id equal_price created
1 003 2021-08-21 13:00:00 700 1 12121212 400 1 15151515 450 0 null 250 1 22222222 null 0 null 11111111 00451 1350 2021-01-11 13:22:09
2 006 2021-07-29 18:00:00 1000 0 null null 0 null 800 2 17171717, 18181818 null 0 null 2500 2 25252525, 26262626 22222222 00364 6600 2021-01-12 16:62:08
3 003 2021-08-15 17:00:00 700 4 13131313, 14141414, 15151515, 16161616 400 2 16161616, 17171717 450 3 19191919, 20202020, 21212121 250 2 23232323, 24242424 null 0 null 33333333 00015 5450 2021-01-13 10:08:45

Ответ - Здесь я добавила дополнительные колонки с баркодами для каждого типа билетов. В случае, если по какому-либо типу не было куплено ни одного билета, то я в графе с баркодами указывала null.

2. Время из A в B

Известно расписание отправления теплохода по московскому времени (GMT+3):

  • из A в B:

    • 2021-08-21 18:00:00
    • 2021-08-21 18:30:00
    • 2021-08-21 18:45:00
    • 2021-08-21 19:00:00
    • 2021-08-21 19:15:00
    • 2021-08-21 21:00:00
  • из B в A:

    • 2021-08-21 18:30:00
    • 2021-08-21 18:45:00
    • 2021-08-21 19:00:00
    • 2021-08-21 19:15:00
    • 2021-08-21 19:35:00
    • 2021-08-21 21:50:00
    • 2021-08-21 21:55:00

"из A в B" и "из B в A" стоимость одного билета 700р.

"из A в B и обратно в А" стоимость составного билета 1200р

Время пути в одну сторону 50 минут.

Задача. Сделать страницу (дизайн не имеет значения) на которой пользователь выбрав направление, время и количество билетов сможет посчитать итоговые значения: общую стоимость, время в пути.

Как это должно выглядеть?

На странице пользователь сначала должен выбрать направление:

<select name="route" id="route">
  <option value="из A в B">из A в B</option>
  <option value="из B в A">из B в A</option>
  <option value="из A в B и обратно в А">из A в B и обратно в А</option>
</select>

После чего предлагается пользователю выбрать время. Важно, время показываем в часовом поясе пользователя. Предположим, что на всех его устройствах стоит запрет перевода времени в локальный часовой пояс.

<label for="time">Выберите время</label>
<select name="time" id="time">
  <option value="18:00(из A в B)">18:00(из A в B)</option>
  <option value="18:30(из A в B)">18:30(из A в B)</option>
  <option value="18:45(из A в B)">18:45(из A в B)</option>
  <option value="19:00(из A в B)">19:00(из A в B)</option>
  <option value="19:15(из A в B)">19:15(из A в B)</option>
  <option value="21:00(из A в B)">21:00(из A в B)</option>
  <option value="18:30(из B в A)">18:30(из B в A)</option>
  <option value="18:45(из B в A)">18:45(из B в A)</option>
  <option value="19:00(из B в A)">19:00(из B в A)</option>
  <option value="19:15(из B в A)">19:15(из B в A)</option>
  <option value="19:35(из B в A)">19:35(из B в A)</option>
  <option value="21:50(из B в A)">21:50(из B в A)</option>
  <option value="21:55(из B в A)">21:55(из B в A)</option>
</select>

Если выбрано время "из A в B и обратно в А", то должен показаться дополнительный селект, в котором можно будет выбрать обратное время. Обратите внимание, что время не должно пересекаться. Это значит, что следует учитывать, что если путь из А в В был выбран в 14:00, то обратный путь возможен только по прибытию на место в пункт В.

Далее ползователю прелагается выбрать количество билетов и нажать на кнопку "посчитать".

<label for="num">Количество билетов</label>
<input id="num">
<button>Посчитать</button>

При клике на кнопку "Посчитать" показать результат с направлением, временем в пути, временем отправления и временем прибытия в часовом поясе пользователя.

Например:

Вы выбрали 4 билета по маршруту из A в B стоимостью 4000р.
Это путешествие займет у вас 40 минут. 
Теплоход отправляется в 12-00, а прибудет в 18-00.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.