From 806e882d5cdd61b8a4d5f064330dba1b448ad569 Mon Sep 17 00:00:00 2001 From: Bryce Covert Date: Tue, 29 Oct 2019 22:11:57 -0700 Subject: [PATCH] lots of improvements. --- src/clj/auto_ap/graphql/clients.clj | 14 ++++++++++- src/clj/auto_ap/parse/csv.clj | 11 +++++--- src/clj/auto_ap/routes/auth.clj | 25 +++++++++++-------- .../auto_ap/views/pages/admin/clients.cljs | 19 ++++++++++++-- 4 files changed, 51 insertions(+), 18 deletions(-) diff --git a/src/clj/auto_ap/graphql/clients.clj b/src/clj/auto_ap/graphql/clients.clj index fd4a3fe2..38429723 100644 --- a/src/clj/auto_ap/graphql/clients.clj +++ b/src/clj/auto_ap/graphql/clients.clj @@ -25,6 +25,9 @@ id (or (:db/id client) "new-client") _ (println id) _ (println edit_client) + _ (when client + @(d/transact (d/connect uri) + (mapv (fn [lm] [:db/retractEntity (:db/id lm)]) (:client/location-matches client)))) transactions [(remove-nils {:db/id id :client/code (if (str/blank? (:client/code client)) (:code edit_client) @@ -64,7 +67,16 @@ })] result @(d/transact (d/connect uri) transactions)] (println result "ID" id) - (-> result :tempids (get id) (or id) d-clients/get-by-id ->graphql))) + (-> result :tempids (get id) (or id) d-clients/get-by-id + (update :client/location-matches + (fn [lms] + (mapcat (fn [lm] + (map (fn [m] + {:location-match/match m + :location-match/location (:location-match/location lm)}) + (:location-match/matches lm))) + lms))) + ->graphql))) (defn get-client [context args value] diff --git a/src/clj/auto_ap/parse/csv.clj b/src/clj/auto_ap/parse/csv.clj index f70b7727..318ee98d 100644 --- a/src/clj/auto_ap/parse/csv.clj +++ b/src/clj/auto_ap/parse/csv.clj @@ -20,16 +20,19 @@ (defmethod parse-csv :mama-lus [rows] - (println "MAMA LU") + (println "MAMA LU4") (transduce (comp (drop 1) (map (fn [[_ po-number despatch-number invoice-number invoice-date customer value :as row]] {:vendor-code "Mama Lu's Foods" :customer-identifier customer :invoice-number (str po-number "-" invoice-number ) - :date (u/parse-value :clj-time "MM/dd/yy HH:ss" invoice-date) - :total value - :text (str/join " " row)}))) + :date (try (u/parse-value :clj-time "M/d/yyyy HH:ss" invoice-date) + (catch Exception _ + (u/parse-value :clj-time "M/d/yyyy" invoice-date))) + :total (str/replace value #"," "") + :text (str/join " " row) + :full-text (str/join " " row)}))) conj [] rows)) diff --git a/src/clj/auto_ap/routes/auth.clj b/src/clj/auto_ap/routes/auth.clj index 1a8e3141..627cc7d6 100644 --- a/src/clj/auto_ap/routes/auth.clj +++ b/src/clj/auto_ap/routes/auth.clj @@ -19,6 +19,7 @@ (defroutes routes (GET "/oauth" {{:strs [code]} :query-params :keys [scheme] :as r {:strs [host]} :headers} + (println "Authenticating with" r "..." code) (try (let [auth (-> "https://accounts.google.com/o/oauth2/token" (http/post @@ -44,17 +45,19 @@ ;; TODO - these namespaces are not being transmitted/deserialized properly (if (and token user) - {:status 301 - :headers {"Location" (str "/?jwt=" (jwt/sign (doto {:user (:name profile) - :exp (time/plus (time/now) (time/days 30)) - :user/clients (map (fn [c] - (dissoc c :client/bank-accounts )) - (:user/clients user)) - :user/role (name (:user/role user)) - :user/name (:name profile)} - println) - (:jwt-secret env) - {:alg :hs512}))}} + (let [jwt (jwt/sign (doto {:user (:name profile) + :exp (time/plus (time/now) (time/days 30)) + :user/clients (map (fn [c] + (dissoc c :client/bank-accounts :client/location-matches)) + (:user/clients user)) + :user/role (name (:user/role user)) + :user/name (:name profile)} + println) + (:jwt-secret env) + {:alg :hs512})] + (println "authenticated. using jwt" jwt) + {:status 301 + :headers {"Location" (str "/?jwt=" jwt)}}) {:status 401 :body "Couldn't authenticate"})) (catch Exception e diff --git a/src/cljs/auto_ap/views/pages/admin/clients.cljs b/src/cljs/auto_ap/views/pages/admin/clients.cljs index cc2b0ee9..41e4098c 100644 --- a/src/cljs/auto_ap/views/pages/admin/clients.cljs +++ b/src/cljs/auto_ap/views/pages/admin/clients.cljs @@ -31,6 +31,7 @@ ::edit-client-clicked (fn [{:keys [db]} [_ client-id]] {:db (-> db + (forms/stop-form ::new-client) (forms/start-form ::new-client (get (:clients db) client-id)))})) (re-frame/reg-sub @@ -120,6 +121,18 @@ (update :location-matches conj (:location-match client)) (dissoc :location-match)))) +(re-frame/reg-event-db + ::remove-location-match + [(forms/in-form ::new-client) (re-frame/path [:data])] + (fn [client [_ i]] + (-> client + (update :location-matches (fn [lm] + (->> lm + (map vector (range)) + (filter (fn [[index item]] + (not= index i))) + (map second))))))) + (re-frame/reg-event-db ::add-new-bank-account [(forms/in-form ::new-client) (re-frame/path [:data])] @@ -402,9 +415,11 @@ :event change-event :subscription new-client}]]] [:p.control [:button.button.is-primary {:on-click (dispatch-event [::add-new-location-match])} "Add"]]] + [:ul - (for [{:keys [location match]} (:location-matches new-client)] - ^{:key location} [:li match "->" location ])]]] + (for [[index {:keys [location match]}] (map vector (range) (:location-matches new-client))] + ^{:key index} [:li match "->" location [:a {:on-click (dispatch-event [::remove-location-match index])} [:span.icon + [:span.fa.fa-times]]]])]]] [:div {:style {:padding-bottom "0.75em" :padding-top "0.75em"}} [:h2.subtitle "Address"]