2021-03-06 21:55:41 +01:00

45 lines
1.8 KiB
Clojure

(ns chicken-master.customers
(:require
[re-frame.core :as re-frame]
[reagent.core :as reagent]
[chicken-master.config :refer [settings]]
[chicken-master.products :as prod]
[chicken-master.subs :as subs]
[chicken-master.html :as html]
[chicken-master.events :as event]))
(defn order-adder [order]
(let [state (reagent/atom order)]
(fn []
[:details {:class (or (:class order) :customer-order) :key (gensym) :open (:open @state)}
[:summary {:on-click #(swap! state update :open not)}
[prod/item-adder
:type :date
:value (:day @state)
:class :order-date-picker
:callback (fn [day] (swap! state #(assoc % :day day :open true)))]]
(if (:day @state)
[prod/products-edit (:products @state)
:getter-fn #(re-frame/dispatch [::event/save-order (assoc @state :products %)])])])))
(defn show-customers []
(html/modal
:clients
[:div {:class :customers-modal}
[:h2 "Clienci"]
[prod/item-adder :callback #(re-frame/dispatch [::event/add-customer %]) :button "+"]
(let [client-orders (->> @(re-frame/subscribe [::subs/orders])
vals
(group-by #(get-in % [:who :id])))]
(for [{:keys [name id] :as who} @(re-frame/subscribe [::subs/available-customers])]
[:details {:class "client" :key (gensym)}
[:summary [:span name [:button {:on-click #(re-frame/dispatch
[::event/confirm-action
"na pewno usunąć?"
::event/remove-customer id])} "-"]]]
[order-adder {:who who}]
(for [order (reverse (sort-by :day (client-orders id)))]
[order-adder (assoc order :key (gensym))])
]))]
))