summaryrefslogtreecommitdiff
path: root/pages/shop/order.fnl
diff options
context:
space:
mode:
Diffstat (limited to 'pages/shop/order.fnl')
-rw-r--r--pages/shop/order.fnl59
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}