--- title: "HelperFunctions" slug: "helperfunctions" updated: 2023-03-29T17:53:42Z published: 2023-03-29T17:53:42Z canonical: "help.rapididentity.com/helperfunctions" --- > ## Documentation Index > Fetch the complete documentation index at: https://help.rapididentity.com/llms.txt > Use this file to discover all available pages before exploring further. # HelperFunctions The HelperFunctions Adapter contains common functions used in RapidIdentity Cloud Implementations [AddAttributeChangeToObject](/docs/helperfunctions#addattributechangetoobject) [CalculateDateDiff](/docs/helperfunctions#calculatedatediff) [CalculateGradYear](/docs/helperfunctions#calculategradyear) [ConvertRecordToPascalCase](/docs/helperfunctions#convertrecordtopascalcase) [ConvertStringToPascalCase](/docs/helperfunctions#convertstringtopascalcase) [HasRecordChanged](/docs/helperfunctions#hasrecordchanged) ## AddAttributeChangeToObject The `AddAttributeChangeToObject` is meant to add in attributes to the `HasRecordChanged` return object. The `HasRecordChanged` return object is useful for logging and log audit events within RapidIdentity Connect. An example for a `HasRecordChanged` return object is below. ``` { "givenName": { "old_value": "Henry", "new_value": "Indiana" } "sn": { "old_value": "Ford", "new_value": "Jones" }, "idautoPersonJobTitles": { "old_value": ["IT Administrator", "HR Administrator"], "new_value": ["Teacher", "Coach"] } } ``` ### Input Parameters #### object: object `HasRecordChanged` return object to add new changed value #### fieldName: string The field name to add to the `object` #### oldFieldValue: object The `old_value` of the `fieldName` #### newFieldValue: object The `new_value` of the `fieldName` ### Return Value The return value type is an object ### Example ``` record1 = createRecordFromObject({ "givenName": "Henry", "sn": "Ford", "idautoPersonJobTitles": [ "IT Administrator", "HR Administrator" ] }) record2 = createRecordFromObject({ "givenName": "Indiana", "sn": "Jones", "idautoPersonJobTitles": [ "Teacher", "Coach" ] }) hasChanged = HasRecordChanged(record2, record1, true) hasChanged = AddAttributeChangeToObject(hasChanged, "idautoPersonPriLocCode", 123, 456) ``` ## CalculateDateDiff The `CalculateDateDiff` action takes 2 dates and returns the difference between those dates in days ### Input Parameters #### initialDate: string The first date to compare in the format of `yyyyMMdd` #### compareDate: string The second date to compare in the format of `yyyyMMdd` #### invertDateDiffResult: boolean Negates number of days. If the difference between the 2 dates in 98 and `invertDateDiffResult` is `true` then the return would be -98 ### Return Value The return value type is a Number ### Example ``` diffDays = CalculateDateDiff("20230831", "20230531", false) log(diffDays) // 92 ``` ## CalculateGradYear The `CalculateGradYear` action returns the graduation year for a specific grade level based on the current date. If the current month is greater than June the `CalculateGradYear` will add 1 to the overall calculation. ### Input Parameters #### grade_level: string The grade level to calculate the graduation year #### graduation_grade_level: string The grade level in which a student graduates. The default is 12 #### non_numeric_mapping_file_path: string The path to a json file containing mappings from non numeric grade levels to numeric grade levels. The default is PK to -1 and KG to 0. An example of a json mapping file is below: ``` { "IT": -4, "PR": -3, "PK": -2, "TK": -1, "KG": 0 } ``` ### Return Value The return value type is a Number ### Example Current date during this example is 03/15/2023 ``` gradYearFourthGrade = CalculateGradYear(4) log(gradYearFourthGrade) // 2031 gradYearFourthGradeWithGradYearTen = CalculateGradYear("4", 10) log(gradYearFourthGradeWithGradYearTen) // 2029 gradYearKindergarten = CalculateGradYear("KG") log(gradYearKindergarten) // 2035 ``` ## ConvertRecordToPascalCase The `ConvertRecordToPascalCase` action takes a record and converts all fields with a string value to Pascal Case. ### Input Parameters #### record: record The record to convert to Pascal Case ### Return Value The return value type is a record ### Example ``` record = CreateRecordFromObject({ "title": "start with why", "author": "simon sinek", "year": 2009 }) record = ConvertRecordToPascalCase(record) log(record) // { "title": Start With Why, "author": "Simon Sinek", "year": 2009 } ``` ## ConvertStringToPascalCase The `ConvertStringToPascalCase` action takes a string and converts it to Pascal Case. ### Input Parameters #### input: string The string to convert to Pascal Case #### unique_mapping_file_path The path to a json mapping file for unique Pascal Case mappings. An example of this file is below: ``` { "MCBRIDE": "McBride", "START WITH WHY": "Start with Why" } ``` ### Return Value The return value type is a string ### Example ``` str = "in west philadelphia born and raised on the playground is where i spent most of my days" out = ConvertStringToPascalCase(str) log(out) // In West Philadelphia Born And Raised On The Playground Is Where I Spent Most Of My Days ``` ## HasRecordChanged The `HasRecordChanged` action compares two records and returns an object containing the changes. An example of a `HasRecordChanged` object is below: ``` { "givenName": { "old_value": "Henry", "new_value": "Indiana" } "sn": { "old_value": "Ford", "new_value": "Jones" }, "idautoPersonJobTitles": { "old_value": ["IT Administrator", "HR Administrator"], "new_value": ["Teacher", "Coach"] } } ``` ### Input Parameters #### new_record: record The new record to be used in the comparison #### old_record The old record to be used in the comparison #### sortArrays: boolean Determines whether to sort return `HasRecordChanged` object ### Return Value The return value type is an object ### Example ``` record1 = createRecordFromObject({ "givenName": "Henry", "sn": "Ford", "idautoPersonJobTitles": [ "IT Administrator", "HR Administrator" ] }) record2 = createRecordFromObject({ "givenName": "Indiana", "sn": "Jones", "idautoPersonJobTitles": [ "Teacher", "Coach" ] }) hasChanged = HasRecordChanged(record2, record1, true) ```