Skip to content

Commit 8609adb

Browse files
authored
Merge pull request #291 from AmericaSCORESBayArea/fix/waiver-and-waiver-history
Fixes for Waiver (get, post) and new endpoint for WaiverHistory
2 parents 574648c + ea0b675 commit 8609adb

File tree

4 files changed

+215
-79
lines changed

4 files changed

+215
-79
lines changed

docs/Scores - Salesforce Data API.postman_collection.json

+23
Original file line numberDiff line numberDiff line change
@@ -859,6 +859,29 @@
859859
}
860860
},
861861
"response": []
862+
},
863+
{
864+
"name": "/waiverHistory",
865+
"request": {
866+
"method": "GET",
867+
"header": [],
868+
"url": {
869+
"raw": "{{base_url}}/waiverHistory?contactId=003UQ00000GXyAfYAL",
870+
"host": [
871+
"{{base_url}}"
872+
],
873+
"path": [
874+
"waiverHistory"
875+
],
876+
"query": [
877+
{
878+
"key": "contactId",
879+
"value": "003UQ00000GXyAfYAL"
880+
}
881+
]
882+
}
883+
},
884+
"response": []
862885
}
863886
]
864887
},

src/main/mule/waiver.xml

+146-77
Original file line numberDiff line numberDiff line change
@@ -1,96 +1,165 @@
1-
<?xml version="1.0" encoding="UTF-8"?>
2-
3-
<mule xmlns:salesforce="http://www.mulesoft.org/schema/mule/salesforce" xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core"
4-
xmlns="http://www.mulesoft.org/schema/mule/core"
5-
xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
6-
http://www.mulesoft.org/schema/mule/ee/core http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd
7-
http://www.mulesoft.org/schema/mule/salesforce http://www.mulesoft.org/schema/mule/salesforce/current/mule-salesforce.xsd">
8-
<flow name="get:\waiver:salesforce-data-api-config" doc:id="dd4a0323-53eb-475f-8d22-1e47cef4fe56" >
9-
<flow-ref doc:name="entry-flow" doc:id="b1e71f84-e7aa-432a-96ce-1a44bc65e41c" name="entry-flow"/>
10-
<ee:transform doc:name="Transform Message" doc:id="0955be0d-6f6d-43f2-93d8-db11c0e90793" >
11-
<ee:message >
12-
</ee:message>
13-
<ee:variables >
14-
<ee:set-variable variableName="region" ><![CDATA[attributes.queryParams.'region']]></ee:set-variable>
15-
</ee:variables>
16-
</ee:transform>
17-
<salesforce:query doc:name="Query" doc:id="f7eea34a-c7f6-4ff7-ba4b-e76c55c9d153" config-ref="Salesforce_Config">
18-
<salesforce:salesforce-query ><![CDATA[SELECT Id,Name,WaiverRegion__c,WaiverSource_email__c,WaiverSource__c,WaiverText__c,Waiver_Active_End__c,Waiver_Active_Start__c FROM Waiver__c WHERE WaiverRegion__c = ':region']]></salesforce:salesforce-query>
19-
<salesforce:parameters ><![CDATA[#[output application/java
1+
<mule xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core" xmlns:salesforce="http://www.mulesoft.org/schema/mule/salesforce" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd http://www.mulesoft.org/schema/mule/ee/core http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd http://www.mulesoft.org/schema/mule/salesforce http://www.mulesoft.org/schema/mule/salesforce/current/mule-salesforce.xsd">
2+
<flow doc:id="dd4a0323-53eb-475f-8d22-1e47cef4fe56" name="get:\waiver:salesforce-data-api-config">
3+
<flow-ref doc:id="b1e71f84-e7aa-432a-96ce-1a44bc65e41c" doc:name="entry-flow" name="entry-flow"></flow-ref>
4+
<ee:transform doc:id="0955be0d-6f6d-43f2-93d8-db11c0e90793" doc:name="Transform Message">
5+
<ee:message></ee:message>
6+
<ee:variables>
7+
<ee:set-variable variableName="region">
8+
<![CDATA[attributes.queryParams.'region']]>
9+
</ee:set-variable>
10+
</ee:variables>
11+
</ee:transform>
12+
<salesforce:query config-ref="Salesforce_Config" doc:id="f7eea34a-c7f6-4ff7-ba4b-e76c55c9d153" doc:name="Query">
13+
<salesforce:salesforce-query>
14+
<![CDATA[SELECT Id,Name,WaiverRegion__c,WaiverSource_email__c,WaiverSource__c,WaiverText__c,Waiver_Active_End__c,Waiver_Active_Start__c, Archived__c FROM Waiver__c WHERE WaiverRegion__c = ':region']]>
15+
</salesforce:salesforce-query>
16+
<salesforce:parameters>
17+
<![CDATA[#[output application/java
2018
---
2119
{
2220
region : vars.region
23-
}]]]></salesforce:parameters>
24-
</salesforce:query>
25-
<ee:transform doc:name="Transform Message" doc:id="07e0a122-9cec-42b7-8487-a2be14f422b2">
26-
<ee:message>
27-
<ee:set-payload><![CDATA[%dw 2.0
21+
}]]]>
22+
</salesforce:parameters>
23+
</salesforce:query>
24+
<ee:transform doc:id="filter-transform" doc:name="Filter Archived Items">
25+
<ee:message>
26+
<ee:set-payload>
27+
<![CDATA[%dw 2.0
2828
output application/json
2929
---
30-
payload map ( payload01 ,indexOfPayload01 ) -> {
31-
WaiverId: payload01.Id as String default "",
32-
Name: payload01.Name as String default "",
33-
Region: payload01.WaiverRegion__c as String default "",
34-
SourceEmail: payload01.WaiverSource_email__c as String default "",
35-
Source: payload01.WaiverSource__c as String default "",
36-
Content: payload01.WaiverText__c as String default "",
37-
ValidFrom: payload01.Waiver_Active_End__c as String default "",
38-
ValidUntil: payload01.Waiver_Active_Start__c as String default "",
39-
PaperReceived: payload01.Paper_Form_Received__c as Boolean default false
40-
}]]></ee:set-payload>
41-
</ee:message>
42-
</ee:transform>
43-
<flow-ref doc:name="exit-flow" doc:id="00c2dda1-3348-4a07-90c8-7840a86d048d" name="exit-flow"/>
44-
</flow>
45-
<flow name="post:\waiver\(waiverId):application\json:salesforce-data-api-config" doc:id="8b1473c4-3931-4408-9c18-5d77ac8fc694" >
46-
<flow-ref doc:name="entry-flow" doc:id="4e9a74ac-9da5-4a28-ab4c-1f74f9c952cd" name="entry-flow" />
47-
<choice doc:name="Choice" doc:id="bplsbn" >
48-
<when expression="#[vars.waiverId == null]">
49-
<ee:transform doc:name="Transform Message" doc:id="72ce180c-ba71-4658-ad7a-4162acfea0a9" >
50-
<ee:variables >
51-
<ee:set-variable variableName="waiverId" ><![CDATA[attributes.uriParams.'waiverId']]></ee:set-variable>
52-
</ee:variables>
53-
</ee:transform>
54-
</when>
55-
</choice>
56-
<salesforce:create doc:name="Create" doc:id="152574e4-872a-4c9e-89d9-bbf784f017c0" config-ref="Salesforce_Config" type="Waiver_History__c">
57-
<salesforce:records ><![CDATA[#[output application/java
30+
(payload default [])
31+
// Filter out archived items
32+
filter (payload01) -> not (payload01.Archived__c as Boolean)
33+
]]>
34+
</ee:set-payload>
35+
</ee:message>
36+
</ee:transform>
37+
<ee:transform doc:id="map-transform" doc:name="Map Filtered Items">
38+
<ee:message>
39+
<ee:set-payload>
40+
<![CDATA[%dw 2.0
41+
output application/json
42+
---
43+
payload
44+
// Map the filtered items to the desired format
45+
map (payload01) -> {
46+
WaiverId: payload01.Id as String default "",
47+
Name: payload01.Name as String default "",
48+
Region: payload01.WaiverRegion__c as String default "",
49+
SourceEmail: payload01.WaiverSource_email__c as String default "",
50+
Source: payload01.WaiverSource__c as String default "",
51+
Content: payload01.WaiverText__c as String default "",
52+
ValidFrom: payload01.Waiver_Active_End__c as String default "",
53+
ValidUntil: payload01.Waiver_Active_Start__c as String default "",
54+
Archived: payload01.Archived__c as Boolean default false
55+
}
56+
]]>
57+
</ee:set-payload>
58+
</ee:message>
59+
</ee:transform>
60+
<flow-ref doc:id="00c2dda1-3348-4a07-90c8-7840a86d048d" doc:name="exit-flow" name="exit-flow"></flow-ref>
61+
</flow>
62+
<flow doc:id="8b1473c4-3931-4408-9c18-5d77ac8fc694" name="post:\waiver\(waiverId):application\json:salesforce-data-api-config">
63+
<flow-ref doc:id="4e9a74ac-9da5-4a28-ab4c-1f74f9c952cd" doc:name="entry-flow" name="entry-flow"></flow-ref>
64+
<choice doc:id="bplsbn" doc:name="Choice">
65+
<when expression="#[vars.waiverId == null]">
66+
<ee:transform doc:id="72ce180c-ba71-4658-ad7a-4162acfea0a9" doc:name="Transform Message">
67+
<ee:variables>
68+
<ee:set-variable variableName="waiverId">
69+
<![CDATA[attributes.uriParams.'waiverId']]>
70+
</ee:set-variable>
71+
</ee:variables>
72+
</ee:transform>
73+
</when>
74+
</choice>
75+
<salesforce:create config-ref="Salesforce_Config" doc:id="152574e4-872a-4c9e-89d9-bbf784f017c0" doc:name="Create" type="Waiver_History__c">
76+
<salesforce:records>
77+
<![CDATA[#[output application/java
5878
---
5979
[{
6080
Waiver__c: vars.waiverId,
6181
WaiverEvent__c: payload.waiverResponse,
6282
WaiverEvent_DateTime__c: payload.datetime as DateTime {format: "yyyy-MM-dd'T'HH:mm:ssz"},
6383
Waiver_Contact__c: payload.contactId,
6484
WaiverSignature_email__c: payload.contactEmail,
65-
Paper_Form_Received__c: payload.PaperReceived
66-
}]]]]></salesforce:records>
67-
</salesforce:create>
68-
<choice doc:name="Choice" doc:id="b35bd46b-d29e-4976-8e2b-b74f74afa199">
69-
<when expression="#[payload.successful == false and payload..errors != null]">
70-
<logger level="INFO" doc:name="Logger" doc:id="2b354024-fa67-4edf-9d72-97886e5b084e" message="#[payload.items[0].message]" />
71-
<ee:transform doc:name="Transform Message" doc:id="bce41c8d-176f-45bd-b28f-8e1fb95f3744">
72-
<ee:message>
73-
<ee:set-payload><![CDATA[%dw 2.0
85+
Signed_Paper_Form_Received__c: payload.PaperReceived
86+
}]]]]>
87+
</salesforce:records>
88+
</salesforce:create>
89+
<choice doc:id="b35bd46b-d29e-4976-8e2b-b74f74afa199" doc:name="Choice">
90+
<when expression="#[payload.successful == false and payload..errors != null]">
91+
<logger doc:id="2b354024-fa67-4edf-9d72-97886e5b084e" doc:name="Logger" level="INFO" message="#[payload.items[0].message]"></logger>
92+
<ee:transform doc:id="bce41c8d-176f-45bd-b28f-8e1fb95f3744" doc:name="Transform Message">
93+
<ee:message>
94+
<ee:set-payload>
95+
<![CDATA[%dw 2.0
7496
output application/json
7597
---
76-
message: "Waiver History creation failed"]]></ee:set-payload>
77-
</ee:message>
78-
</ee:transform>
79-
<raise-error doc:name="Raise error" doc:id="d316eae0-0b40-413b-8346-38a855763a8f" type="CREATECONTACT:CONFLICT" />
80-
</when>
81-
<otherwise>
82-
<ee:transform doc:name="Create response" doc:id="e46654f4-c283-433b-ae4d-d2a4ae4ae206" xsi:schemaLocation="http://www.mulesoft.org/schema/mule/ee/core http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd">
83-
<ee:message>
84-
<ee:set-payload><![CDATA[%dw 2.0
98+
message: "Waiver History creation failed"]]>
99+
</ee:set-payload>
100+
</ee:message>
101+
</ee:transform>
102+
<raise-error doc:id="d316eae0-0b40-413b-8346-38a855763a8f" doc:name="Raise error" type="CREATECONTACT:CONFLICT"></raise-error>
103+
</when>
104+
<otherwise>
105+
<ee:transform doc:id="e46654f4-c283-433b-ae4d-d2a4ae4ae206" doc:name="Create response" xsi:schemaLocation="http://www.mulesoft.org/schema/mule/ee/core http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd">
106+
<ee:message>
107+
<ee:set-payload>
108+
<![CDATA[%dw 2.0
85109
output application/json
86110
---
87111
{
88112
WaiverHistory: payload.items[0].id
89-
}]]></ee:set-payload>
90-
</ee:message>
91-
<ee:variables />
92-
</ee:transform>
93-
</otherwise>
94-
</choice>
95-
</flow>
113+
}]]>
114+
</ee:set-payload>
115+
</ee:message>
116+
<ee:variables></ee:variables>
117+
</ee:transform>
118+
</otherwise>
119+
</choice>
120+
</flow>
121+
<flow name="get:\waiverHistory:salesforce-data-api-config">
122+
<ee:transform doc:id="0955be0d-6f6d-43f2-933d8-db11c0e90793" doc:name="Get ContactID">
123+
<ee:message></ee:message>
124+
<ee:variables>
125+
<ee:set-variable variableName="contactId">
126+
<![CDATA[attributes.queryParams.'contactId']]>
127+
</ee:set-variable>
128+
</ee:variables>
129+
</ee:transform>
130+
<salesforce:query config-ref="Salesforce_Config" doc:id="f37eea34a-c7f6-4ff7-ba4b-e76c55c9d153" doc:name="Query to Retrieve `Waiver_History__c`">
131+
<salesforce:salesforce-query>
132+
<![CDATA[SELECT Id, Name, Waiver__c, Signed_Paper_Form_Received__c, Waiver_Contact__c, WaiverSignature_email__c, Date_Signed_Paper_Form_Received__c, Waiver_Creation_Date__c FROM Waiver_History__c WHERE Waiver_Contact__c = ':region']]>
133+
</salesforce:salesforce-query>
134+
<salesforce:parameters>
135+
<![CDATA[#[output application/java
136+
---
137+
{
138+
region : vars.contactId
139+
}]]]>
140+
</salesforce:parameters>
141+
</salesforce:query>
142+
<ee:transform doc:id="map-transform-2" doc:name="Map Items">
143+
<ee:message>
144+
<ee:set-payload>
145+
<![CDATA[%dw 2.0
146+
output application/json
147+
---
148+
payload
149+
// Map the filtered items to the desired format
150+
map (payload01) -> {
151+
WaiverHistoryId: payload01.Id as String default "",
152+
Name: payload01.Name as String default "",
153+
WaiverId: payload01.Waiver__c as String default "",
154+
PaperReceived: payload01.Signed_Paper_Form_Received__c as Boolean default false,
155+
ContactId: payload01.Waiver_Contact__c as String default "",
156+
ContactEmail: payload01.WaiverSignature_email__c as String default "",
157+
PaperReceivedDate: payload01.Date_Signed_Paper_Form_Received__c as String default "",
158+
WaiverCreationDate: payload01.Waiver_Creation_Date__c as String default ""
159+
}
160+
]]>
161+
</ee:set-payload>
162+
</ee:message>
163+
</ee:transform>
164+
</flow>
96165
</mule>

src/main/resources/api/datatypes.raml

+19-1
Original file line numberDiff line numberDiff line change
@@ -785,5 +785,23 @@ types:
785785
type: string
786786
required: false
787787

788-
788+
WaiverHistory:
789+
type: object
790+
properties:
791+
WaiverHistoryId:
792+
type: SalesforceUniqueId
793+
Name:
794+
type: string
795+
WaiverId:
796+
type: SalesforceUniqueId
797+
PaperReceived:
798+
type: boolean
799+
ContactId:
800+
type: SalesforceUniqueId
801+
ContactEmail:
802+
type: string
803+
PaperReceivedDate:
804+
type: date-only
805+
WaiverCreatedDate:
806+
type: date-only
789807

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

+27-1
Original file line numberDiff line numberDiff line change
@@ -575,7 +575,33 @@ uses:
575575
body:
576576
application/json:
577577
example:
578-
message: Waiver not found
578+
message: Waiver not found
579+
/waiverHistory:
580+
get:
581+
displayName: Retrieve waiver history
582+
description: Retrieves waiver history for a given contact
583+
queryParameters:
584+
contactId:
585+
displayName: contactId
586+
description: Contact Id
587+
type: string
588+
required: true
589+
pattern: ^[a-zA-Z0-9]{15}|[a-zA-Z0-9]{18}$ # Enforces 15 or 18 alphanumeric characters
590+
responses:
591+
200:
592+
body:
593+
application/json:
594+
type: types.WaiverHistory[]
595+
400:
596+
body:
597+
application/json:
598+
example:
599+
message: Bad Request
600+
404:
601+
body:
602+
application/json:
603+
example:
604+
message: Waiver history not found
579605
/sessions:
580606
post:
581607
displayName: Create a session

0 commit comments

Comments
 (0)