This commit is contained in:
Bryce Covert
2018-04-05 18:17:45 -07:00
parent 7fc02c1d04
commit 33cfc395de
10 changed files with 230 additions and 4 deletions

View File

@@ -0,0 +1,55 @@
(ns auto-ap.events.admin.vendors
(:require [re-frame.core :as re-frame]
[auto-ap.db :as db]
[auto-ap.routes :as routes]
[auto-ap.effects :as effects]
[bidi.bidi :as bidi]))
(re-frame/reg-event-db
::edit
(fn [db [_ vendor-id]]
(assoc-in db [:admin-vendors :editing]
(get (:vendors db) vendor-id))))
(re-frame/reg-event-fx
::save
(fn [{:keys [db]} _]
(let [edited-vendor (get-in db [:admin-vendors :editing])]
{:db (assoc-in db [:admin-vendors :editing :saving?] true)
:http {:method :put
:token (:user db)
:body (pr-str (select-keys edited-vendor [:name :email :data :invoice-reminder-schedule]))
:headers {"Content-Type" "application/edn"}
:uri (str "/api/vendors/" (:id edited-vendor))
:on-success [::save-complete]}})))
(re-frame/reg-event-db
::save-complete
(fn [db [_ vendor]]
(-> db
(assoc-in [:admin-vendors :editing] nil)
(assoc-in [:vendors (:id vendor)] vendor))))
(re-frame/reg-event-db
::change
(fn [db [_ path value]]
(assoc-in db (concat [:admin-vendors :editing] path)
value)))
(re-frame/reg-event-fx
::mounted
(fn [{:keys [db]} _]
{:http {:method :get
:token (:user db)
:uri "/api/vendors"
:on-success [::received-vendors]}}))
(re-frame/reg-event-db
::received-vendors
(fn [db [_ vendors]]
(assoc db :vendors (reduce (fn [vendors vendor]
(assoc vendors (:id vendor) vendor))
{}
vendors))))