diff options
| author | unwox <me@unwox.com> | 2025-10-03 11:56:37 +0600 |
|---|---|---|
| committer | unwox <me@unwox.com> | 2025-10-13 23:11:01 +0600 |
| commit | 3f5ade2e7a139bb4405437e8fc5546aafc7b05ef (patch) | |
| tree | 77c437958d74b591f11ec207d16749cf207a51e3 /pages/shop/order.fnl | |
| parent | f5a70e6a446e00969adb866ef2e2d10bf33bc4a8 (diff) | |
WIP shop
Diffstat (limited to 'pages/shop/order.fnl')
| -rw-r--r-- | pages/shop/order.fnl | 59 |
1 files changed, 0 insertions, 59 deletions
diff --git a/pages/shop/order.fnl b/pages/shop/order.fnl deleted file mode 100644 index 50e12da..0000000 --- a/pages/shop/order.fnl +++ /dev/null @@ -1,59 +0,0 @@ -(import-macros {:compile-html HTML} :macros) -(local lib (require :lib)) -(local templates (require :templates)) - -(fn content-template [db basket basket-total] - [(HTML - [:div {:class "side"} - (templates.header "/shop/order")]) - (HTML - [:div {:class "content"} - (if (< 0 (# basket)) - [:section {} - [:h2 {} "Состав заказа"] - [:div {} - (table.unpack - (icollect [_ item (ipairs basket)] - (templates.basket-item item "/shop/order")))] - [:div {} "~~~"] - [:div {:class "basket-total"} (.. "Итого: " basket-total "₽")]] - "") - [:section {} - [:h2 {} "Данные для связи"] - [:form {:class "form" :method "POST"} - [:div {:class "form-row"} - [:label {:for "name"} "Имя"] - [:input {:type "text" :id "name" :name "name" :required "required"}]] - [:div {:class "form-row"} - [:label {:for "contact"} "Телеграм или Email для связи"] - [:input {:type "text" :id "contact" :name "contact" :required "required"}]] - [:div {:class "form-row"} - [:input {:type "checkbox" :id "everything-is-correct" - :name "everything-is-correct" :required "required"}] - [:label {:for "everything-is-correct"} "Данные заказа верны"]] - [:div {:class "form-row"} - [:input {:type "checkbox" :id "agree-to-conditions" - :name "agree-to-conditions" :required "required"}] - [:label {:for "agree-to-conditions"} "Согласен с условиями"]] - [:button {:type "submit"} "Оформить заказ"]]]])]) - -(fn place-order [db order-id form] - (_G.must - (luna.db.exec db - "UPDATE orders SET placement_time = ?, first_name = ?, contact = ?" - [(lib.now) form.name form.contact]))) - -(fn render [request db] - (let [order-id (lib.order-id request) - basket (if order-id (lib.basket db order-id) []) - basket-total (accumulate [sum 0 _ v (ipairs basket)] - (+ sum (* v.quantity v.price-per)))] - (if (= request.method "POST") - (do - (place-order db order-id (lib.parse-values request.body)) - (values 302 {:Location "/shop/success"} "")) - (if (< 0 (# basket)) - (values 200 {} (templates.base (content-template db basket basket-total))) - (values 302 {:Location "/shop"} ""))))) - -{: render} |
