Skip to content

Commit

Permalink
Merge pull request #306 from AmericaSCORESBayArea/latest_enrolled_site
Browse files Browse the repository at this point in the history
New fields to the `contact` object: LatestWaiverDate, LatestEnrolledEndDate, LatestEnrolledSiteId, LatestEnrolledSiteName
  • Loading branch information
Aleksandr-v25 authored Nov 24, 2024
2 parents e555c0c + 83d80e1 commit 3d5f0e6
Show file tree
Hide file tree
Showing 2 changed files with 181 additions and 7 deletions.
179 changes: 172 additions & 7 deletions src/main/mule/contacts.xml
Original file line number Diff line number Diff line change
Expand Up @@ -727,6 +727,45 @@ import * from modules::GlobalModules
</salesforce:query>
</otherwise>
</choice>

<ee:transform doc:name="Set Contact Id" doc:id="set-contactResults2">
<ee:variables>
<ee:set-variable variableName="contactResults" >
<![CDATA[[]]]>
</ee:set-variable>
</ee:variables>
</ee:transform>
<foreach doc:name="Process Each Contact" collection="#[payload]" doc:id="foreach-process-contact2">
<!-- Call External Flow for Each Contact -->
<ee:transform doc:name="Set Contact Id" doc:id="set-contact-id2">
<ee:variables>
<ee:set-variable variableName="contactId">
<![CDATA[payload.Id]]>
</ee:set-variable>
</ee:variables>
</ee:transform>
<flow-ref name="retrieve-latest-enrollment-based-on-contactId" doc:name="Call External Flow" />
<!-- Extract School Site Name -->
<ee:transform doc:id="extract-school-site-name-search2" doc:name="Extract School Site Name">
<ee:variables>
<ee:set-variable variableName="contactResults" doc:name="Add to Results">
<![CDATA[
%dw 2.0
output application/json
---
(vars.contactResults default []) ++ [{
contactId: vars.contactId,
LatestEnrolledEndDate: payload.LatestEnrolledEndDate,
LatestEnrolledSiteId: payload.LatestEnrolledSiteId,
LatestEnrolledSiteName: payload.LatestEnrolledSiteName
}]
]]>
</ee:set-variable>
</ee:variables>
</ee:transform>
</foreach>


<ee:transform doc:id="143eb63d-2152-42b7-9da0-2c0ad80b73f0" 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">
<ee:message>
<ee:set-payload>
Expand Down Expand Up @@ -789,7 +828,10 @@ payload map ( payload01 , indexOfPayload01 ) -> {
DataReleaseWaiver: payload01.Data_Release__c as String default "" ,
YearOfReferenceForGradeInformation: payload01.Year_of_Reference_for_Grade_Information__c as String default "" ,
GradesChildParticipated: payload01.Grades_child_participated__c as String default "",
LatestWaiverDate: payload01.Latest_Waiver_Date__c as String default ""
LatestWaiverDate: payload01.Latest_Waiver_Date__c as String default "",
LatestEnrolledEndDate: vars.contactResults[indexOfPayload01].LatestEnrolledEndDate as String default "",
LatestEnrolledSiteId: vars.contactResults[indexOfPayload01].LatestEnrolledSiteId as String default "",
LatestEnrolledSiteName: vars.contactResults[indexOfPayload01].LatestEnrolledSiteName as String default ""
}]]>


Expand Down Expand Up @@ -910,6 +952,7 @@ payload map ( payload01 , indexOfPayload01 ) -> {

</salesforce:search-string>
<salesforce:parameters>



<![CDATA[#[output application/java
Expand All @@ -922,7 +965,11 @@ payload map ( payload01 , indexOfPayload01 ) -> {

</salesforce:parameters>
</salesforce:search>
<ee:transform doc:id="32f388c1-5da5-43ab-8241-874d02d18d35" doc:name="Transform Message">

<flow-ref name="retrieve-latest-enrollment-based-on-payload-with-contacts" doc:name="Call External Flow to Retrieve all Latest Sites" />


<ee:transform doc:id="32f388c1-5da5-43ab-8241-874d02d18d35" doc:name="Transform Message">
<ee:message>
<ee:set-payload>

Expand Down Expand Up @@ -985,7 +1032,10 @@ Id: payload01.record.Id as String default "",
DataReleaseWaiver: payload01.record.Data_Release__c as String default "",
YearOfReferenceForGradeInformation: payload01.record.Year_of_Reference_for_Grade_Information__c as String default "" ,
GradesChildParticipated: payload01.record.Grades_child_participated__c as String default "",
LatestWaiverDate: payload01.record.Latest_Waiver_Date__c as String default ""
LatestWaiverDate: payload01.record.Latest_Waiver_Date__c as String default "",
LatestEnrolledEndDate: vars.contactResults[indexOfPayload01].LatestEnrolledEndDate as String default "",
LatestEnrolledSiteId: vars.contactResults[indexOfPayload01].LatestEnrolledSiteId as String default "",
LatestEnrolledSiteName: vars.contactResults[indexOfPayload01].LatestEnrolledSiteName as String default ""
}]]>


Expand Down Expand Up @@ -1110,6 +1160,8 @@ substring(cleanedPhoneNumber, stringSize - 4, stringSize)]]>

</salesforce:parameters>
</salesforce:search>
<flow-ref name="retrieve-latest-enrollment-based-on-payload-with-contacts" doc:name="Call External Flow to Retrieve all Latest Sites" />

<ee:transform doc:id="cca12834-e1ee-4cc9-90ef-91c9be555af9" doc:name="Transform Message">
<ee:message>
<ee:set-payload>
Expand All @@ -1118,7 +1170,7 @@ substring(cleanedPhoneNumber, stringSize - 4, stringSize)]]>
<![CDATA[%dw 2.0
output application/json
---
payload.searchRecords map ( payload01 , indexOfpayload01 ) -> {
payload.searchRecords map ( payload01 , indexOfPayload01 ) -> {
Id: payload01.record.Id as String default "",
ContactType: payload01.record.Contact_Type__c as String default "",
ContactRecordType: payload01.record.RecordTypeId as String default "",
Expand Down Expand Up @@ -1174,7 +1226,10 @@ payload.searchRecords map ( payload01 , indexOfpayload01 ) -> {
StudentRecordComplete: payload01.record.Student_Record_Complete__c as Boolean default false,
YearOfReferenceForGradeInformation: payload01.record.Year_of_Reference_for_Grade_Information__c as String default "" ,
GradesChildParticipated: payload01.record.Grades_child_participated__c as String default "",
LatestWaiverDate: payload01.record.Latest_Waiver_Date__c as String default ""
LatestWaiverDate: payload01.record.Latest_Waiver_Date__c as String default "",
LatestEnrolledEndDate: vars.contactResults[indexOfPayload01].LatestEnrolledEndDate as String default "",
LatestEnrolledSiteId: vars.contactResults[indexOfPayload01].LatestEnrolledSiteId as String default "",
LatestEnrolledSiteName: vars.contactResults[indexOfPayload01].LatestEnrolledSiteName as String default ""
}]]>


Expand All @@ -1186,7 +1241,7 @@ payload.searchRecords map ( payload01 , indexOfpayload01 ) -> {
<flow-ref doc:id="3cefb3dd-a787-43f6-b305-ea08ddd5c2ce" doc:name="entry-flow" name="entry-flow"></flow-ref>
<logger doc:id="259840a7-a4b5-4c17-9326-0794dfea6b26" doc:name="Log entry-flow" level="INFO" message="Method and Request Path stored as vars: method=#[vars.method], request path=#[vars.requestPath]. queryparams=#[attributes.queryParams]"></logger>
<choice doc:id="xqgzcq" doc:name="Choice">
<when expression="#[vars.contactId == null]">
<when expression="#[isEmpty(vars.contactId)]">
<ee:transform doc:id="f0ca847c-5413-4e76-bde8-9aec2edd7b7d" doc:name="Store URI parameters">
<ee:variables>
<ee:set-variable variableName="contactId">
Expand All @@ -1200,6 +1255,20 @@ payload.searchRecords map ( payload01 , indexOfpayload01 ) -> {
</ee:transform>
</when>
</choice>
<flow-ref name="retrieve-latest-enrollment-based-on-contactId" doc:name="Call External Flow" />
<ee:transform doc:id="extract-school-site-name" doc:name="Extract School Site Name">
<ee:variables>
<ee:set-variable variableName="schoolSiteName">
<![CDATA[
{
LatestEnrolledEndDate: payload.LatestEnrolledEndDate,
LatestEnrolledSiteId: payload.LatestEnrolledSiteId,
LatestEnrolledSiteName: payload.LatestEnrolledSiteName
}
]]>
</ee:set-variable>
</ee:variables>
</ee:transform>
<salesforce:query config-ref="Salesforce_Config" doc:id="484bbe2a-c7aa-42d5-9463-cd953b4abb1e" doc:name="Query">
<salesforce:salesforce-query>

Expand Down Expand Up @@ -1282,6 +1351,8 @@ payload.searchRecords map ( payload01 , indexOfpayload01 ) -> {

</salesforce:parameters>
</salesforce:query>


<ee:transform doc:id="1032e8df-84aa-4e0e-b9cc-e538858184b9" 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">
<ee:message>
<ee:set-payload>
Expand Down Expand Up @@ -1346,7 +1417,11 @@ payload map ( payload01 , indexOfPayload01 ) -> {
StudentRecordComplete: payload01.Student_Record_Complete__c as Boolean default false,
YearOfReferenceForGradeInformation: payload01.Year_of_Reference_for_Grade_Information__c as String default "" ,
GradesChildParticipated: payload01.Grades_child_participated__c as String default "",
LatestWaiverDate: payload01.Latest_Waiver_Date__c as String default ""
LatestWaiverDate: payload01.Latest_Waiver_Date__c as String default "",
LatestEnrolledEndDate: vars.schoolSiteName.LatestEnrolledEndDate as String default "",
LatestEnrolledSiteId: vars.schoolSiteName.LatestEnrolledSiteId as String default "",
LatestEnrolledSiteName: vars.schoolSiteName.LatestEnrolledSiteName as String default ""
}]]>


Expand Down Expand Up @@ -1670,4 +1745,94 @@ payload map ( payload01 , indexOfPayload01 ) -> {

</choice>
</flow>
<flow name="retrieve-latest-enrollment-based-on-contactId">
<!-- Assume 'contactId' is available as a variable -->

<!-- Build the SOQL query to retrieve the latest enrollment -->
<ee:transform doc:name="Build Query">
<ee:variables>
<ee:set-variable variableName="query">
<![CDATA[
"
SELECT End_Date__c, Team_Season__r.Team__r.School_Site__c, Team_Season__r.Team__r.School_Site__r.Name
FROM Enrollment__c
WHERE Contact__r.Id = ':contactId'
ORDER BY CreatedDate DESC
LIMIT 1
"
]]>
</ee:set-variable>
</ee:variables>
</ee:transform>

<!-- Execute the Salesforce query -->
<salesforce:query doc:name="Query" config-ref="Salesforce_Config">
<salesforce:salesforce-query>
<![CDATA[#[vars.query]]]>
</salesforce:salesforce-query>
<salesforce:parameters>
<![CDATA[#[{contactId: vars.contactId}]]]>
</salesforce:parameters>
</salesforce:query>

<!-- Transform the result to return only the SchoolSiteName or an empty string -->
<ee:transform doc:name="Transform Result">
<ee:message>
<ee:set-payload>
<![CDATA[%dw 2.0
output application/json
---
if (isEmpty(payload)) {
LatestEnrolledEndDate: "",
LatestEnrolledSiteId: "",
LatestEnrolledSiteName: ""
}
else {
LatestEnrolledEndDate: payload[0].End_Date__c,
LatestEnrolledSiteId: payload[0].Team_Season__r.Team__r.School_Site__c,
LatestEnrolledSiteName: payload[0].Team_Season__r.Team__r.School_Site__r.Name
}]]> </ee:set-payload>
</ee:message>
</ee:transform>
</flow>

<flow name="retrieve-latest-enrollment-based-on-payload-with-contacts">
<ee:transform doc:name="Set Contact Id" doc:id="set-contactResults">
<ee:variables>
<ee:set-variable variableName="contactResults" >
<![CDATA[[]]]>
</ee:set-variable>
</ee:variables>
</ee:transform>
<foreach doc:name="Process Each Contact" collection="#[payload.searchRecords]" doc:id="foreach-process-contact">
<!-- Call External Flow for Each Contact -->
<ee:transform doc:name="Set Contact Id" doc:id="set-contact-id">
<ee:variables>
<ee:set-variable variableName="contactId">
<![CDATA[payload.record.Id]]>
</ee:set-variable>
</ee:variables>
</ee:transform>
<flow-ref name="retrieve-latest-enrollment-based-on-contactId" doc:name="Call External Flow" />
<!-- Extract School Site Name -->
<ee:transform doc:id="extract-school-site-name-search" doc:name="Extract School Site Name">
<ee:variables>
<ee:set-variable variableName="contactResults" doc:name="Add to Results">
<![CDATA[
%dw 2.0
output application/json
---
(vars.contactResults default []) ++ [{
contactId: vars.contactId,
LatestEnrolledEndDate: payload.LatestEnrolledEndDate,
LatestEnrolledSiteId: payload.LatestEnrolledSiteId,
LatestEnrolledSiteName: payload.LatestEnrolledSiteName
}]
]]>
</ee:set-variable>
</ee:variables>
</ee:transform>
</foreach>
</flow>

</mule>
9 changes: 9 additions & 0 deletions src/main/resources/api/datatypes.raml
Original file line number Diff line number Diff line change
Expand Up @@ -567,6 +567,15 @@ types:
MediaReleaseWaiver:
type: boolean
required: false
LatestEnrolledEndDate:
type: date-only
required: false
LatestEnrolledSiteId:
type: string
required: false
LatestEnrolledSiteName:
type: string
required: false

ContactPatchModel:
type: object
Expand Down

0 comments on commit 3d5f0e6

Please sign in to comment.