diff options
Diffstat (limited to 'pages/shop/order/state.fnl')
| -rw-r--r-- | pages/shop/order/state.fnl | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/pages/shop/order/state.fnl b/pages/shop/order/state.fnl new file mode 100644 index 0000000..1ff1ca9 --- /dev/null +++ b/pages/shop/order/state.fnl @@ -0,0 +1,18 @@ +(local lib (require :lib)) +(local shop (require :shop)) + +(fn render [request db authenticated?] + (if (and (= request.method "POST") authenticated?) + (let [vals (lib.parse-values request.body)] + (if (and vals vals.id + vals.state (or (= vals.state "done") + (= vals.state "canceled"))) + (do + (if (= "done" vals.state) + (shop.finish-order db vals.id) + (shop.cancel-order db vals.id)) + (values 302 {:Location "/shop/order/list"} "")) + (values 400 {} "bad body"))) + (values 404 {} "not found"))) + +{: render} |
