Пример мобильного приложения на Glide для кафе (Часть 5).


Бронирование заказа

Мы с Вами сформировали корзину, просмотрели её, провели изменение (что-то удалили, что-то добавили). Но теперь надо дать знать ‘Администратору кафе‘ что решение принято, и мы хотим послать уведомление о заказе.
Здесь мы рассмотрим, как послать уведомление о заказе, в том числе о времени бронирования, номере столика (если мы уже там были), количестве мест, сумме заказа и других пожеланиях, если они у нас имеются. Примечание. Мы с вами уже имеем перечень блюд и идентификацию пользователя (заказчика) в таблице ‘Корзина’, и администратор уже может ориентироваться о меню



Давайте сначала получим сумму заказа и выведем её на экран вкладки ‘Корзина’. Для этого, давайте перейдём к таблице ‘Корзина’ и создадим новый столбец типа “IF -> Then -> Else” и назовём его “IF_цена заказа”. В строках условия (IF) напишем “Look_user_email” и “is signed-in user” то в строке (THEN) взять данные из колонки “SV_цена”. Т.е. если Email в корзине заказов совпадает с ‘email’ пользователя, то взять цену блюда из колонки “SV_цена” (Рис. 1) (IF_price). Content
Рис.1
Cart options
Рис.2
Иными словами выделить все блюда данного пользователя и их стоимость. Если посмотреть таблицу ‘Корзина’, то можно увидеть что в ней находятся только цены блюд выбранного пользователя.
Теперь нам надо просуммировать стоимость этих блюд. Это на примере блюд мало, а в реальном заказе их может быть достаточно много и пользователь должен ориентироваться в цене заказа. Подсчёт суммы в Glide реализован с помощью функции ‘Rollup’. Поэтому, создадим ещё один столбец типа “Rollup” и назовём его “Roll_сумма заказа”, где в строке суммируйте значения (Summarize the values of) укажем наш полученный столбец, и не забудем в строке ‘Рассчитать’ выбрать из меню значок суммы “Sum” (Рис.2). (Sum) Давайте посмотрим на таблицу ‘Корзина’, то можно видеть, что стоимость заказа появилась во всех строках данной колонки. (Рис.3) (Tabl_sum_cart)

Cart
Рис.3


Но если мы теперь поменяем пользователя, например, вместо ‘Илья’ выберем ‘Наталья’, то в столбце ‘IF_цена заказа’ будут выбраны другие строки, а в столбце ‘Roll_сумма заказа’ будет сумма блюд пользователя Илья. Что нам и надо.

App sum order
Рис.4
Давайте это значение покажем нашему пользователю. Перейдём на вкладку “Layout” и добавим на вкладку ‘Корзина’ новый компонент, здесь я выберу “Action Text” (хотя здесь можно использовать компонент ‘Title’, а также без заголовка компоненты ‘Rich Text’ и ‘Text’). В строке ‘Text’ укажем нашу колонку ‘Roll_сумма заказа’, а в строке ‘Title’ напишем ‘Сумма заказа’, в итоге получим нашу вкладку рис.5. (App_sum_order)

С блюдами мы определились, цена нас устраивает, и мы хотим забронировать наш выбор. Мы должны послать заказ администратору. Что нам надо иметь в заказе? Что нам нужно при бронировании кроме наших блюд?
Во первых, наверное идентифицировать пользователя, но у нас в приложении пользователи уже идентифицированы (мы имеем их имя, email и фото). Я думаю, что фото в заказе будет лишним, а имя (если его указал пользователь) и email (а это обязательный элемент, как в интернет магазинах) должны быть. Также мы можем указать в заказе время заявки, также на какое время мы делаем заказ, еще, наверное, нам надо дать пользователю возможность сделать комментарий. Например, указать число мест, написать пожелание (столик у окна, или столик у оркестра, а может быть даже указать номер столика). Ну и, наверное, указать цену заказа. Можно конечно указать и перечень блюд, но я думаю что он будет лишним, во первых это громоздко, а во вторых администратор и сам их может видеть в таблице ‘Корзина’.

Перейдём на вкладку ‘Data’ создадим новую таблицу и назовём её ‘Заказ’. По умолчанию Glide создал нам таблицу с одним столбцом ‘Name’. Оставим его. Создадим ещё несколько столбцов: “Email” типа ‘Email’, “Время заявки” типа ‘Date & Time’, “На время” типа ‘Date & Time’, “Комментарий” типа ‘Text’, “Стоимость заказа” типа ‘Text’ и неплохо бы создать столбец “Order ID” типа ‘Row ID’. (Рис.5)

Empty order
Рис.5


App order
Рис.6
Вернёмся на вкладку “Layout” и добавим на вкладку ‘Корзина’ новый компонент кнопку “Form Button”, где в строке ‘Label’ поменяем наименование на ‘Забронировать’, а в строке ACTION оставим действие по умолчанию без изменения (Show form screen title Форма). Вот у нас получилась такая вкладка (Рис.6) (App_order)

Нажмём на нашу кнопку ‘Забронировать’ у нас откроется новая вкладка ‘Форма’. App Form
Рис.7
По умолчанию Glide предлагает нам в строке ‘Sheet’ таблицу ‘Лист1’, а нам надо ‘Заказ’. Поменяем. (Смотри окно справа). После этого Glide отобразит нам все столбцы таблицы ‘Заказ’. Но нам здесь нужно оставить только ‘Data Time’ “На время” и ‘Text Entry’ “Комментарий”. Всё остальное удалим. Не будем затруднять пользователя, всё остальное мы будем задавать автоматически, всё данные у нас есть (Рис.7). (App_form). Если вдруг у вас таких компонентов нет создайте их.
Выберем мышью в левом окне компонент ‘Date Time’, перейдём в правое окно на вкладку ‘General’ и проверим, чтобы в строке ‘Column’ у нас был указан столбец “На время”, далее в разделе OPTIONS установим птичку в окошке “Required”(т.е. этот компонент сделаем обязательным для заполнения).
Аналогично выберем компонент ‘Text Entry’ и проверим, чтобы в строке ‘Column’ у нас был указан столбец “Комментарий”, также напишем, чтобы в строке ‘Label’ - ‘Комментарий’ (У меня Glide это проставил по умолчанию), и в строке ‘Size’ я указал средний квадратик, чтобы дать пользователю больше места для комментария.
Теперь добавим новый компонент “Current Date/Time”, он находится в разделе ‘SPECIAL VALUES’, и в строке ‘Column’ укажем столбец “Время заявки”
Content
Рис.8
Следующий компонент ‘Name’мы найдём в разделе компонентов ‘VALUES FROM USER PROFILE’ (Это значения от таблицы ‘Users’ где у нас находятся данные пользователей). И выберем компонент “Name”, проверим в чтобы в строке ‘Column’ на вкладке ‘General’ был выбран столбец ‘Name’ от таблицы ‘Заказ’.
Аналогично найдём компонент “Email” и проверим, чтобы в строке ‘Column’ на вкладке ‘General’ также был выбран столбец ‘Email’.
Следующий компонент мы найдём в блоке значений от экрана ‘VALUES FROM SCREEN’ и это компонент “Roll_сумма заказа”. Осталось проверить, чтобы в строке ‘Column’ на вкладке ‘General’ был выбран столбец ‘Стоимость заказа’.
В итоге у нас выбраны следующие компоненты Рис.8. (Components_form)

App date
Рис.9
App hour
Рис.10
App send form
Рис.11
Давайте посмотрим, что получилось. Нажимаем на окно ‘Data Time’ (На время), указываем последовательно дату, час, минуты (Рис 9, Рис.10).Далее вводим комментарий, например, “Столик у окна №2, 2 места” и нажимаем отправить (рис.11). (App_form_send). Давайте теперь поменяем пользователя ‘Илья’ на пользователя ‘Наталья’ и проделаем аналогичные действия.

Теперь перейдём к таблице заказов (‘Заказ’) и мы видим здесь оба наших заказа. Заказ от Ильи и заказ от Натальи (рис.12). (Tabl_orders) Если же вы повторяли этот пример самостоятельно, то теперь на своём смартфоне вы можете сделать заказ от своего имени, и он у вас сразу же отбразиться в таблице заказов.

Cart
Рис.12


Что нам и нужно было. Но следует сделать маленькое уточнение. В общем всё это применимо для небольших кафе, если же у нас заказы на группы где по несколько одинаковых групп блюд, то целесообразно дополнить выбор блюд столбцом ‘количество’ и вместо (или вместе) цены указать сумму за группу блюд (например 5 вторых, 10 кофе). При этом вместо типа столбца ‘Rollup’ (‘Roll_сумма заказа’) лучше использовать столбец типа “Math”, где можно использовать другие арифметические действия.

В общем наше приложение: “Мобильное кафе реализовано”. Заказ выбран и отправлен администратору кафе. Где тот может увидеть поступление заказа и отправить подтверждение или отказ на email заказчика. Что же должно происходить дальше с выбранными блюдами в корзине заказов. К сожалению, уже после выполнения заказа или в случае его отказа, уже сам администратор должен удалять заказ из корзины, иначе при следующем заказе они опять появятся в корзине у этого пользователя. Можно попробовать сделать фильтрацию по дате заказа, но это уже более сложный вариант, и не для этой статьи.
Но давайте поможем администратору, чтобы он не сидел перед таблицей и периодически проверял поступление заказа, а воспользовался тоже нашим приложением для контроля. Этим мы и займёмся в следующей части статьи.



Последние комментарии:
екатерина
0
# 57
(13:35:18 10.10.2024 г.)
ееееее рексик
Ответить

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

Закрыть
Имя:
786 + 27 =  
Добавить комментарий:
Имя:
786 + 27 =  

Перед публикацией все комментарии проходят обязательную модерацию!

Если Вы хотите задать какой-либо вопрос, то пишите на почту alekskuznech@mail.ru или в соцсети.