Skip to content

Commit ca537f2

Browse files
2 parents 598d85e + 15dc0e2 commit ca537f2

File tree

3 files changed

+86
-0
lines changed

3 files changed

+86
-0
lines changed

docs/Scores - Salesforce Data API.postman_collection.json

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2241,6 +2241,40 @@
22412241
},
22422242
"response": []
22432243
},
2244+
{
2245+
"name": "/tasks/{coachId}/stats",
2246+
"request": {
2247+
"method": "GET",
2248+
"header": [
2249+
{
2250+
"key": "client_id",
2251+
"value": "{{sandbox_client_id}}"
2252+
},
2253+
{
2254+
"key": "client_secret",
2255+
"value": "{{sandbox_client_secret}}"
2256+
},
2257+
{
2258+
"key": "Origin",
2259+
"value": "Postman",
2260+
"type": "text"
2261+
}
2262+
],
2263+
"url": {
2264+
"raw": "{{base_url_s}}/tasks/003cX000008IZnXQAW/stats",
2265+
"host": [
2266+
"{{base_url_s}}"
2267+
],
2268+
"path": [
2269+
"tasks",
2270+
"003cX000008IZnXQAW",
2271+
"stats"
2272+
]
2273+
},
2274+
"description": "Response Example:\n\n{ \"Not Started\": 1, \"Started\": 0, \"Complete\": 41}"
2275+
},
2276+
"response": []
2277+
},
22442278
{
22452279
"name": "/tasks/{taskId}",
22462280
"request": {

src/main/mule/tasks.xml

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,44 @@ vars.task ++ { Attendances: [] }]]></ee:set-payload>
214214
</otherwise>
215215
</choice>
216216
</flow>
217+
<flow name="get:\tasks\(coachId)\stats" doc:id="7460545c-3cf6-4ead-b850-398c204fe06b" >
218+
<set-variable value="#[attributes.uriParams.'coachId']" doc:name='Save "coachId"' doc:id="3694e194-ef36-4f13-942b-a4c0c3f4e32e" variableName="coachId"/>
219+
<salesforce:query doc:name='Query to gather stats based on "coachId"' doc:id="eb46a43b-fa44-4334-9db5-187bc74f87b1" config-ref="Salesforce_Config" target="availableStats">
220+
<salesforce:salesforce-query ><![CDATA[SELECT Task_Status__c, COUNT(Id)
221+
FROM SCORES_Task__c
222+
WHERE Assigned_To__c = ':coachId'
223+
GROUP BY Task_Status__c]]></salesforce:salesforce-query>
224+
<salesforce:parameters ><![CDATA[#[output application/java
225+
---
226+
{
227+
coachId: vars.coachId,
228+
}]]]></salesforce:parameters>
229+
</salesforce:query>
230+
<salesforce:describe-sobject type="SCORES_Task__c" doc:name="Get SCORES_Task__c properties (Describe sobject)" doc:id="c1c6e3fb-40db-47d4-a353-7e53fb41197a" config-ref="Salesforce_Config" />
231+
<ee:transform doc:name='Filter "Task_Status__c" values' doc:id="1ef0835c-8476-4229-9f92-069900bfcbd7" >
232+
<ee:message >
233+
<ee:set-payload ><![CDATA[%dw 2.0
234+
output application/json
235+
---
236+
(
237+
payload.fields
238+
filter (field) -> field.name == "Task_Status__c"
239+
)[0].picklistValues
240+
map (item) -> item.value]]></ee:set-payload>
241+
</ee:message>
242+
</ee:transform>
243+
<ee:transform doc:name="Prepare Stats" doc:id="5fcb5f09-d407-4c3c-ae4e-8b09c757672d" >
244+
<ee:message >
245+
<ee:set-payload ><![CDATA[%dw 2.0
246+
output application/json
247+
var memo = vars.availableStats reduce (item, acc = {}) ->
248+
acc ++ {(item.Task_Status__c): item.expr0}
249+
var result = payload map ((item, index) -> {(item): memo[item] default 0})
250+
---
251+
result reduce ((item, acc = {}) -> acc ++ item)]]></ee:set-payload>
252+
</ee:message>
253+
</ee:transform>
254+
</flow>
217255
<flow name="get:\tasks\(taskId)\tags:salesforce-data-api-config">
218256
<logger level="INFO" message="get:\tasks\(taskId)\tags:salesforce-data-api-config"></logger>
219257
<ee:transform doc:id="7e56aada-f163-47f0-8ffc-213f1acd09a8" doc:name="Store Query parameters">

src/main/resources/api/salesforce-data-api.raml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1242,6 +1242,20 @@ uses:
12421242
application/json:
12431243
example:
12441244
message: Task created
1245+
/{coachId}/stats:
1246+
get:
1247+
description: Retrieve summary statistics of SCORES tasks assigned to a specific coach, grouped by status
1248+
responses:
1249+
200:
1250+
body:
1251+
application/json:
1252+
type: object
1253+
example: |
1254+
{
1255+
"Not Started": 1,
1256+
"Started": 0,
1257+
"Complete": 42
1258+
}
12451259
/{taskId}:
12461260
uriParameters:
12471261
taskId:

0 commit comments

Comments
 (0)