|
34 | 34 | (some #(= (:type job) %) (:secondary_skillset agent))))
|
35 | 35 |
|
36 | 36 | (defn filter-by-skillset
|
37 |
| - [current-job agents] |
38 |
| - (filter #(by-skillset current-job %) agents)) |
| 37 | + [job agents] |
| 38 | + (filter #(by-skillset job %) agents)) |
39 | 39 | ;; -- end of filtering by skillsets --
|
40 | 40 |
|
41 | 41 | ;; -- examples of function use --
|
|
45 | 45 | ;; -- end of examples of function use --
|
46 | 46 |
|
47 | 47 | ;; -- sorting by job type --
|
48 |
| -(defn agent-has-job-type-as-skillset? |
| 48 | +(defn agent-has-job-type-as-primary-skillset? |
49 | 49 | [job-type agent]
|
50 | 50 | (if (some #{job-type} (:primary_skillset agent))
|
51 | 51 | 0
|
52 | 52 | 1))
|
53 | 53 |
|
54 |
| -(defn has-skillset-and-id-pair |
| 54 | +(defn add-has-primary-skillset-key |
55 | 55 | [job-type agent]
|
56 |
| - [(agent-has-job-type-as-skillset? job-type agent) |
57 |
| - (:id agent)]) |
| 56 | + (assoc |
| 57 | + agent |
| 58 | + :has-primary-skillset |
| 59 | + (agent-has-job-type-as-primary-skillset? job-type agent))) |
58 | 60 |
|
59 |
| -(defn find-agent-by-id |
60 |
| - [id agents] |
61 |
| - (->> agents |
62 |
| - (filter (fn [agent] (= id (:id agent)))) |
63 |
| - (first))) |
64 |
| - |
65 |
| -(defn build-agent-by-id |
66 |
| - [agent-id agents] |
67 |
| - {:id agent-id |
68 |
| - :name (:name (find-agent-by-id agent-id agents)) |
69 |
| - :primary_skillset (:primary_skillset (find-agent-by-id agent-id agents)) |
70 |
| - :secondary_skillset (:secondary_skillset (find-agent-by-id agent-id agents))}) |
71 |
| - |
72 |
| -(defn rebuild-agent |
73 |
| - [agent agents] |
74 |
| - (let [agent-id (second agent)] |
75 |
| - (build-agent-by-id agent-id agents))) |
| 61 | +(defn remove-has-primary-skillset-key |
| 62 | + [agent] |
| 63 | + (dissoc agent :has-primary-skillset)) |
76 | 64 |
|
77 | 65 | (defn sorted-agents
|
78 | 66 | [agents job]
|
79 | 67 | (->> agents
|
80 |
| - (map (partial has-skillset-and-id-pair (:type job))) |
81 |
| - (sort-by first) |
82 |
| - (map #(rebuild-agent % agents)))) |
| 68 | + (map (partial add-has-primary-skillset-key (:type job))) |
| 69 | + (sort-by :has-primary-skillset) |
| 70 | + (map remove-has-primary-skillset-key))) |
83 | 71 |
|
84 | 72 | ;; ----- Testing sorted agents -----
|
85 | 73 | (defn testing []
|
|
0 commit comments