Daniel O'Connell f361882a3f add new stock
2021-02-06 15:43:03 +01:00

42 lines
1.5 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 :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 name]
(for [order (sort-by :day (client-orders id))]
[order-adder (assoc order :key (gensym))])
[order-adder who :class :new-user]
]))]
))