Makes multiple client selection somewhat possible via graphql.
This commit is contained in:
@@ -1,7 +1,8 @@
|
||||
(ns auto-ap.ssr.company-dropdown
|
||||
(:require
|
||||
[auto-ap.datomic :refer [conn pull-many]]
|
||||
[auto-ap.graphql.utils :refer [assert-can-see-client cleanse-query]]
|
||||
[auto-ap.graphql.utils
|
||||
:refer [assert-can-see-client cleanse-query is-admin?]]
|
||||
[auto-ap.solr :as solr]
|
||||
[auto-ap.ssr-routes :as ssr-routes]
|
||||
[auto-ap.ssr.svg :as svg]
|
||||
@@ -125,18 +126,48 @@ function initCompanyDropdown() {
|
||||
")]]])
|
||||
|
||||
(defn active-client [{:keys [identity params] :as request}]
|
||||
(let [client-id (some-> (or (:search-client params) (get params "search-client")) not-empty Long/parseLong)]
|
||||
(println (format "HERE CLIENT ID '%s'" client-id))
|
||||
(let [client-search (or (:search-client params)
|
||||
(get params "search-client"))
|
||||
client-id (try (some-> client-search
|
||||
(not-empty )
|
||||
Long/parseLong)
|
||||
(catch Exception _
|
||||
nil))]
|
||||
(when client-id
|
||||
(assert-can-see-client identity client-id))
|
||||
(let [new-session (assoc (:session request) :client
|
||||
|
||||
(let [new-session (assoc (:session request)
|
||||
|
||||
:client
|
||||
(when client-id
|
||||
(dc/pull (dc/db conn) [:db/id :client/name :client/code] client-id)))]
|
||||
(dc/pull (dc/db conn) [:db/id :client/name :client/code] client-id))
|
||||
|
||||
:clients
|
||||
(cond (int? client-id)
|
||||
[(dc/pull (dc/db conn) [:db/id :client/name :client/code] client-id)]
|
||||
|
||||
(= ":mine" client-search)
|
||||
(->> (dc/q '[:find (pull ?c [:db/id :client/name :client/code])
|
||||
:in $ ?u
|
||||
:where [?u :user/clients ?c]]
|
||||
(dc/db conn)
|
||||
(:db/id identity))
|
||||
(map first))
|
||||
|
||||
(and (or (empty? client-search)
|
||||
(= ":all" client-search))
|
||||
(is-admin? identity))
|
||||
(->> (dc/q '[:find (pull ?c [:db/id :client/name :client/code])
|
||||
:in $ ?u
|
||||
:where [?c :client/code]]
|
||||
(dc/db conn)
|
||||
(:db/id identity))
|
||||
(map first))))]
|
||||
(assoc
|
||||
(html-response
|
||||
(dropdown {:client (:client new-session)
|
||||
:identity identity}))
|
||||
:session
|
||||
new-session
|
||||
:headers
|
||||
{"hx-trigger" "clientSelected"}))))
|
||||
(html-response
|
||||
(dropdown {:client (:client new-session)
|
||||
:identity identity}))
|
||||
:session
|
||||
new-session
|
||||
:headers
|
||||
{"hx-trigger" "clientSelected"}))))
|
||||
|
||||
Reference in New Issue
Block a user