Files
integreat/src/cljs/auto_ap/events/admin/companies.cljs
2018-06-15 12:32:40 -07:00

53 lines
1.6 KiB
Clojure

(ns auto-ap.events.admin.companies
(:require [re-frame.core :as re-frame]
[auto-ap.db :as db]
[auto-ap.events :as events]
[auto-ap.routes :as routes]
[auto-ap.effects :as effects]
[auto-ap.entities.companies :as entity]
[bidi.bidi :as bidi]))
(re-frame/reg-event-fx
::edit
(fn [{:keys [db]} [_ company-id]]
{:dispatch [::events/modal-status :auto-ap.views.pages.admin.companies/edit {:visible? true}]
:db (assoc-in db [:admin :company]
(get (:companies db) company-id))}))
(re-frame/reg-event-fx
::save
(fn [{:keys [db]} _]
(let [edited-company (-> (get-in db [:admin :company])
(dissoc :location))]
{:db (assoc-in db [:admin :company :saving?] true)
:http {:method :put
:token (:user db)
:body (pr-str edited-company)
:headers {"Content-Type" "application/edn"}
:uri (str "/api/companies/" (:id edited-company))
:on-success [::save-complete]
:on-error [::save-error]}})))
(re-frame/reg-event-fx
::save-complete
(fn [{:keys [db]} [_ company]]
{:dispatch [::events/modal-completed :auto-ap.views.pages.admin.companies/edit]
:db (-> db
(assoc-in [:admin :company] nil)
(assoc-in [:companies (:id company)] company))}))
(re-frame/reg-event-db
::save-error
(fn [db [_ company]]
(-> db
(assoc-in [:admin :company :saving?] false)
(assoc-in [:admin :company :error] true))))
(re-frame/reg-event-db
::change
(fn [db [_ path value]]
(assoc-in db (concat [:admin :company] path)
value)))