diff --git a/src/clj/auto_ap/graphql/clients.clj b/src/clj/auto_ap/graphql/clients.clj index ca27bc18..70c68e3f 100644 --- a/src/clj/auto_ap/graphql/clients.clj +++ b/src/clj/auto_ap/graphql/clients.clj @@ -71,89 +71,88 @@ (assert-admin (:id context)) (when-not (:id edit_client) (assert-client-code-is-unique (:code edit_client))) - + (let [client (when (:id edit_client) (d-clients/get-by-id (:id edit_client))) id (or (:db/id client) "new-client") signature-file (upload-signature-data (:signature_data edit_client)) client-code (if (str/blank? (:client/code client)) (:code edit_client) (:client/code client)) - updated-entity {:db/id id - :client/code client-code - :client/name (:name edit_client) - :client/matches (:matches edit_client) - :client/signature-file signature-file - :client/email (:email edit_client) - :client/locked-until (some-> (:locked_until edit_client) (coerce/to-date)) - :client/locations (filter identity (:locations edit_client)) - :client/week-a-debits (:week_a_debits edit_client) - :client/week-a-credits (:week_a_credits edit_client) - :client/week-b-debits (:week_b_debits edit_client) - :client/square-auth-token (:square_auth_token edit_client) - :client/square-locations (map - (fn [sl] - {:db/id (or (:id sl) (random-tempid)) - :square-location/client-location (:client_location sl)}) - (:square_locations edit_client)) + updated-entity (cond-> {:db/id id + :client/code client-code + :client/name (:name edit_client) + :client/matches (:matches edit_client) + :client/email (:email edit_client) + :client/locked-until (some-> (:locked_until edit_client) (coerce/to-date)) + :client/locations (filter identity (:locations edit_client)) + :client/week-a-debits (:week_a_debits edit_client) + :client/week-a-credits (:week_a_credits edit_client) + :client/week-b-debits (:week_b_debits edit_client) + :client/square-auth-token (:square_auth_token edit_client) + :client/square-locations (map + (fn [sl] + {:db/id (or (:id sl) (random-tempid)) + :square-location/client-location (:client_location sl)}) + (:square_locations edit_client)) - :client/emails (map (fn [e] - {:db/id (or (:id e) - (random-tempid)) - :email-contact/email (:email e) - :email-contact/description (:description e)}) - (:emails edit_client)) + :client/emails (map (fn [e] + {:db/id (or (:id e) + (random-tempid)) + :email-contact/email (:email e) + :email-contact/description (:description e)}) + (:emails edit_client)) - :client/feature-flags (:feature_flags edit_client) - :client/ezcater-locations (map - (fn [el] - {:db/id (or (:id el) (random-tempid)) - :ezcater-location/location (:location el) - :ezcater-location/caterer (:caterer el)}) - (:ezcater_locations edit_client)) - :client/week-b-credits (:week_b_credits edit_client) - :client/location-matches (->> (:location_matches edit_client) - (filter (fn [lm] (and (:location lm) (:match lm)))) - (map (fn [lm] {:db/id (or (:id lm ) (random-tempid)) - :location-match/location (:location lm) - :location-match/matches [(:match lm)]}))) - :client/address (when (seq (filter identity (vals (:address edit_client)))) - {:db/id (or (:id (:address edit_client)) (random-tempid)) - :address/street1 (:street1 (:address edit_client)) - :address/street2 (:street2 (:address edit_client)) - :address/city (:city (:address edit_client)) - :address/state (:state (:address edit_client)) - :address/zip (:zip (:address edit_client))}) - :client/bank-accounts (map (fn [ba] - {:db/id (or (:id ba) (random-tempid)) - :bank-account/code (:code ba) - :bank-account/bank-name (:bank_name ba) - :bank-account/bank-code (:bank_code ba) - :bank-account/start-date (-> (:start_date ba) (coerce/to-date)) - :bank-account/routing (:routing ba) - :bank-account/include-in-reports (:include_in_reports ba) + :client/feature-flags (:feature_flags edit_client) + :client/ezcater-locations (map + (fn [el] + {:db/id (or (:id el) (random-tempid)) + :ezcater-location/location (:location el) + :ezcater-location/caterer (:caterer el)}) + (:ezcater_locations edit_client)) + :client/week-b-credits (:week_b_credits edit_client) + :client/location-matches (->> (:location_matches edit_client) + (filter (fn [lm] (and (:location lm) (:match lm)))) + (map (fn [lm] {:db/id (or (:id lm) (random-tempid)) + :location-match/location (:location lm) + :location-match/matches [(:match lm)]}))) + :client/address (when (seq (filter identity (vals (:address edit_client)))) + {:db/id (or (:id (:address edit_client)) (random-tempid)) + :address/street1 (:street1 (:address edit_client)) + :address/street2 (:street2 (:address edit_client)) + :address/city (:city (:address edit_client)) + :address/state (:state (:address edit_client)) + :address/zip (:zip (:address edit_client))}) + :client/bank-accounts (map (fn [ba] + {:db/id (or (:id ba) (random-tempid)) + :bank-account/code (:code ba) + :bank-account/bank-name (:bank_name ba) + :bank-account/bank-code (:bank_code ba) + :bank-account/start-date (-> (:start_date ba) (coerce/to-date)) + :bank-account/routing (:routing ba) + :bank-account/include-in-reports (:include_in_reports ba) - :bank-account/name (:name ba) - :bank-account/visible (:visible ba) - :bank-account/number (:number ba) - :bank-account/check-number (:check_number ba) - :bank-account/numeric-code (:numeric_code ba) - :bank-account/sort-order (:sort_order ba) - :bank-account/locations (:locations ba) - :bank-account/use-date-instead-of-post-date? (boolean (:use_date_instead_of_post_date ba)) + :bank-account/name (:name ba) + :bank-account/visible (:visible ba) + :bank-account/number (:number ba) + :bank-account/check-number (:check_number ba) + :bank-account/numeric-code (:numeric_code ba) + :bank-account/sort-order (:sort_order ba) + :bank-account/locations (:locations ba) + :bank-account/use-date-instead-of-post-date? (boolean (:use_date_instead_of_post_date ba)) - :bank-account/yodlee-account-id (:yodlee_account_id ba) - :bank-account/type (keyword "bank-account-type" (name (:type ba))) - :bank-account/yodlee-account (when (:yodlee_account ba) - [:yodlee-account/id (:yodlee_account ba)]) - :bank-account/plaid-account (:plaid_account ba) - :bank-account/intuit-bank-account (:intuit_bank_account ba)}) - (:bank_accounts edit_client)) + :bank-account/yodlee-account-id (:yodlee_account_id ba) + :bank-account/type (keyword "bank-account-type" (name (:type ba))) + :bank-account/yodlee-account (when (:yodlee_account ba) + [:yodlee-account/id (:yodlee_account ba)]) + :bank-account/plaid-account (:plaid_account ba) + :bank-account/intuit-bank-account (:intuit_bank_account ba)}) + (:bank_accounts edit_client))} + signature-file (assoc :client/signature-file signature-file)) - } _ (mu/log ::upserting :up updated-entity) _ (assert-no-shared-transaction-sources client-code [[:upsert-entity updated-entity]]) _ (log/info "upserting client" updated-entity) - + result (audit-transact [[:upsert-entity updated-entity]] (:id context))] (when (:square_auth_token edit_client) (square/upsert-locations (-> result :tempids (get id) (or id) d-clients/get-by-id))) @@ -167,18 +166,18 @@ (:client/name updated-client)))}]) (-> updated-client - (update :client/bank-accounts - (fn [bas] - (map #(set/rename-keys % {:bank-account/use-date-instead-of-post-date? :use-date-instead-of-post-date}) bas))) - (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)))) + (update :client/bank-accounts + (fn [bas] + (map #(set/rename-keys % {:bank-account/use-date-instead-of-post-date? :use-date-instead-of-post-date}) bas))) + (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 refresh-all-current-balance []