really improved vendor dialog code.
This commit is contained in:
@@ -1,146 +0,0 @@
|
||||
(ns auto-ap.events.admin.vendors
|
||||
(:require [re-frame.core :as re-frame]
|
||||
[clojure.spec.alpha :as s]
|
||||
[auto-ap.db :as db]
|
||||
[auto-ap.routes :as routes]
|
||||
[auto-ap.effects :as effects]
|
||||
[auto-ap.forms :as forms]
|
||||
[auto-ap.subs :as subs]
|
||||
[auto-ap.entities.vendors :as entity]
|
||||
[auto-ap.events :as events]
|
||||
[auto-ap.utils :refer [by]]
|
||||
|
||||
[bidi.bidi :as bidi]))
|
||||
|
||||
|
||||
|
||||
(re-frame/reg-event-fx
|
||||
::edit
|
||||
(fn [{:keys [db]} [_ vendor-id]]
|
||||
{:db (assoc-in db [:user-editing-vendor]
|
||||
(-> (get (:vendors db) vendor-id)
|
||||
(assoc :default-account-id (:id (:default-account (get (:vendors db) vendor-id))))))
|
||||
:dispatch [::events/modal-status :auto-ap.views.main/user-editing-vendor {:visible? true}]}))
|
||||
|
||||
(re-frame/reg-event-fx
|
||||
::new
|
||||
(fn [{:keys [db]} _]
|
||||
{:db (assoc-in db [:admin :vendor]
|
||||
{})
|
||||
:dispatch [::events/modal-status :auto-ap.views.pages.admin.vendors/admin-vendor {:visible? true}]}))
|
||||
|
||||
|
||||
|
||||
#_(re-frame/reg-event-fx
|
||||
::merge-submit-clicked
|
||||
[(forms/in-form :auto-ap.views.pages.admin.vendors/merge-vendors)]
|
||||
(fn [{{{:keys [from-id to-id]} :data :as merge-vendors-form} :db :as g} _]
|
||||
(println g)
|
||||
(let [user @(re-frame/subscribe [::subs/token])]
|
||||
(if (and from-id to-id)
|
||||
{:db (-> merge-vendors-form
|
||||
(assoc :status :loading)
|
||||
(assoc :error nil))
|
||||
:graphql
|
||||
{:token user
|
||||
:query-obj {:venia/operation {:operation/type :mutation
|
||||
:operation/name "MergeVendors"}
|
||||
:venia/queries [{:query/data [:merge-vendors
|
||||
{:from from-id :to to-id}
|
||||
[:id]]}]}
|
||||
:on-success [::merge-vendors-complete]
|
||||
:on-error [::forms/save-error :auto-ap.views.pages.admin.vendors/merge-vendors]}}
|
||||
{:db merge-vendors-form}))))
|
||||
|
||||
(re-frame/reg-event-fx
|
||||
::save
|
||||
(fn [{:keys [db]} _]
|
||||
(let [edited-vendor (get-in db [:admin :vendor])
|
||||
fx {:db (assoc-in db [:admin :vendor :saving?] true)}
|
||||
_ (println "EDITED" edited-vendor)]
|
||||
(when (s/valid? ::entity/vendor edited-vendor)
|
||||
(assoc fx :graphql
|
||||
{:token (-> db :user)
|
||||
:query-obj {:venia/operation {:operation/type :mutation
|
||||
:operation/name "UpsertVendor"}
|
||||
|
||||
:venia/queries [{:query/data [:upsert-vendor
|
||||
{:vendor (-> edited-vendor
|
||||
(dissoc :default-account))}
|
||||
events/vendor-query]}]}
|
||||
:on-success [::save-complete]
|
||||
:on-error [::save-error]})))))
|
||||
|
||||
(re-frame/reg-event-fx
|
||||
::remind
|
||||
(fn [{:keys [db] :as fx} [_ id]]
|
||||
{ :http {:method :post
|
||||
:token (:user db)
|
||||
:headers {"Content-Type" "application/edn"}
|
||||
:uri (str "/api/vendors/" id "/remind")
|
||||
:on-success [::reminder-sent]
|
||||
:on-error [::failed "Failed to send reminder"]}
|
||||
:db (assoc-in db [:admin :banner] nil)}))
|
||||
|
||||
(re-frame/reg-event-db
|
||||
::reminder-sent
|
||||
(fn [db [_ error]]
|
||||
(-> db
|
||||
(assoc-in [:admin :banner] "Reminder sent!"))))
|
||||
|
||||
(re-frame/reg-event-db
|
||||
::failed
|
||||
(fn [db [_ error]]
|
||||
(-> db
|
||||
(assoc-in [:admin :banner] error))))
|
||||
|
||||
(re-frame/reg-event-fx
|
||||
::save-complete
|
||||
(fn [{:keys [db]} [_ {vendor :upsert-vendor} ]]
|
||||
{:dispatch [::events/modal-completed :auto-ap.views.pages.admin.vendors/admin-vendor ]
|
||||
:db (-> db
|
||||
|
||||
(assoc-in [:admin :vendor] nil)
|
||||
(assoc-in [:vendors (:id vendor)] vendor))}))
|
||||
|
||||
(re-frame/reg-event-db
|
||||
::save-error
|
||||
(fn [db [_ vendor]]
|
||||
(println "ERROR?")
|
||||
(-> db
|
||||
(assoc-in [:admin :vendor :error] true)
|
||||
(assoc-in [:admin :vendor :saving?] false))))
|
||||
|
||||
(re-frame/reg-event-db
|
||||
::change
|
||||
(fn [db [_ path value]]
|
||||
(println path value)
|
||||
(assoc-in db (concat [:admin :vendor] path)
|
||||
value)))
|
||||
|
||||
(re-frame/reg-event-db
|
||||
::add-relationship
|
||||
(fn [db [_ ]]
|
||||
(-> db
|
||||
(update-in [:admin :vendor :relationships] #(conj (or % [])
|
||||
{:account-number (get-in db [:admin :vendor :new-relationship-account-number])
|
||||
:client-id (get-in db [:admin :vendor :new-relationship-client])}))
|
||||
(update-in [:admin :vendor] dissoc :new-relationship-account-number :new-relationship-client))))
|
||||
|
||||
(re-frame/reg-event-db
|
||||
::remove-relationship
|
||||
(fn [db [_ i]]
|
||||
(-> db
|
||||
(update-in [:admin :vendor :relationships] #(vec (concat (subvec % 0 i) (subvec % (min (count %) (inc i)))))))))
|
||||
|
||||
(re-frame/reg-event-fx
|
||||
::mounted
|
||||
(fn [{:keys [db]} _]
|
||||
{:graphql {:token (:user db)
|
||||
:query-obj {:venia/queries [[:vendor events/vendor-query]]}
|
||||
:on-success [::received-vendors]}}))
|
||||
|
||||
(re-frame/reg-event-db
|
||||
::received-vendors
|
||||
(fn [db [_ vendors]]
|
||||
(assoc db :vendors (by :id (:vendor vendors )))))
|
||||
Reference in New Issue
Block a user