• Ignacio de la torre
  • NEWBIE
  • 0 Points
  • Member since 2020

  • Chatter
    Feed
  • 0
    Best Answers
  • 0
    Likes Received
  • 0
    Likes Given
  • 6
    Questions
  • 10
    Replies
Hello and thanks for reading :)
This is what I'm trying to achive:

I have a searchbox 
<!--Search Box -->
        <lightning:input type="search" label="Enter character ID" aura:id="characterID" onchange="{!c.APICallout}"/>

that expects a number (this would be an integer ID for a star wars character). When the user inputs this number, the searchbox (onChange) makes a call to the API and returns a valid json (star wars character), looks something like this  
{
    "name": "Luke Skywalker",
    "height": "172",
    "mass": "77",
    "hair_color": "blond",
    "skin_color": "fair",
    "eye_color": "blue",
    "birth_year": "19BBY",
    "gender": "male",
    "homeworld": "https://swapi.dev/api/planets/1/",
    "created": "2014-12-09T13:50:51.644000Z",
    "edited": "2014-12-20T21:17:56.891000Z",
    "url": "https://swapi.dev/api/people/1/"
}
that fills up the form that is beyond the searchbox (can you see both in the component ? ) with the attributes of the character returned from the API callout.

This part is working fine !! (needs fixes, but works)

Second part would be to Save the character by clicking a button in the form.
<lightning:button label="Create Star Wars Character" 
     class="slds-m-top--medium"
      variant="brand"
      onclick="{!c.clickCreate}"/>
this is not working and needs help.

------------------

This is the component
<aura:component controller="starWarsCallout">

    <aura:attribute name="characters" type="SWCharacter__c[]"/>

    <aura:attribute name="newSWCharacter" type="SWCharacter__c"
         default="{ 'sobjectType': 'SWCharacter__c',
                        'Name': '',
                        'Height__c': 0,
                        'SkinColor__c': '',
                        'Gender__c': '',
                        'Planet__c': ''}"/>

    <aura:attribute name="response" type="Map"/>

    <aura:attribute name="CharacterName" type="String"/>
    <aura:attribute name="CharacterHeight" type="Integer"/>
    <aura:attribute name="CharacterSkinColor" type="String"/>
    <aura:attribute name="CharacterPlanet" type="String"/>
    <aura:attribute name="CharacterGender" type="String"/>   

    <aura:attribute name="ListOfFilms" type="String[]"/>
    <aura:attribute name="ListOfSpecies" type="String[]"/>
    <aura:attribute name="ListOfVehicles" type="String[]"/>
    <aura:attribute name="ListOfStarships" type="String[]"/>

    <!--Header -->
    <div class="slds-m-around--medium">
        <!--Search Box -->
        <lightning:input type="search" label="Enter character ID" aura:id="characterID" onchange="{!c.APICallout}"/>

        <!--iterate the list of Films-->    
         <h3 class="slds-section-title--divider">List Of Films</h3>
        <ul class="slds-list--dotted">
            <aura:iteration items="{!v.ListOfFilms}" var="film">
                <li>{!film}</li>
            </aura:iteration>
        </ul>

        <!--iterate the list of Species-->    
        <h3 class="slds-section-title--divider">List Of Species</h3>
        <ul class="slds-list--dotted">
            <aura:iteration items="{!v.ListOfSpecies}" var="specie">
                <li>{!specie}</li>
            </aura:iteration>
        </ul>

        <!--iterate the list of Vehicles-->
        <h3 class="slds-section-title--divider">List Of Vehicles</h3>
        <ul class="slds-list--dotted">
            <aura:iteration items="{!v.ListOfVehicles}" var="vehicle">
                <li>{!vehicle}</li>
            </aura:iteration>
        </ul>

        <!--iterate the list of StarShips-->
        <h3 class="slds-section-title--divider">List Of StarShips</h3>
        <ul class="slds-list--dotted">
            <aura:iteration items="{!v.ListOfStarships}" var="starship">
                <li>{!starship}</li>
            </aura:iteration>
        </ul>
    </div>


    <!-- BOXED AREA -->
        <fieldset class="slds-box slds-theme--default slds-container--small">
        <legend id="characterform" class="slds-text-heading--small 
          slds-p-vertical--medium">
          Add Character
        </legend>
            <!-- CREATE NEW CHARACTER FORM -->
            <form class="slds-form--stacked">          
                <lightning:input type="text" aura:id="peopleform" label="Character Name"
                name="characterName"
               value="{!v.CharacterName}"
                required="true"/> 
                <lightning:input type="number" aura:id="peopleform" label="Height"
                                 name="characterHeight"
      value="{!v.CharacterHeight}"/>
      <lightning:input type="text" aura:id="peopleform" label="Gender"
                                 name="characterGender"
       value="{!v.CharacterGender}"/>
       <lightning:input type="text" aura:id="characterform" label="Planet"            name="characterPlanet"
      value="{!v.CharacterPlanet}"/>
       <lightning:input type="text" aura:id="characterform" label="Skin Color"               name="characterSkincolor"
        value="{!v.CharacterSkinColor}"/>
       <lightning:button label="Create Star Wars Character" 
     class="slds-m-top--medium"
      variant="brand"
      onclick="{!c.clickCreate}"/>
            </form>
        </fieldset>
</aura:component>

This is the c.clickCreate() function
 
clickCreate: function(component, event, helper) {
        var validSWCharacter = component.find('peopleform').reduce(function (validSoFar, inputCmp) {
            // Displays error messages for invalid fields
            inputCmp.showHelpMessageIfInvalid();
            return validSoFar && inputCmp.get('v.validity').valid;
        }, true);
        // If we pass error checking, do some real work
        if(validSWCharacter){

            // Create the new character
            var newSWCharacter = component.get("v.newSWCharacter");
            newSWCharacter.Name = component.get('v.CharacterName');
            newSWCharacter.Height__c = component.get('v.CharacterHeight');
            newSWCharacter.SkinColor__c = component.get('v.CharacterSkinColor');
            newSWCharacter.Planet__c = component.get('v.CharacterPlanet');
            newSWCharacter.Gender__c = component.get('v.CharacterGender');
            console.log("Create Character: " + JSON.stringify(newSWCharacter));
            helper.createSWCharacter(component, newSWCharacter);
        }
    }

this is the createSWCharacter() function
 
createSWCharacter: function(component, character) {
        var action = component.get("c.saveCharacter");
        action.setParams({
            "character": character
        });
        action.setCallback(this, function(response){
            var state = response.getState();
            if (state === "SUCCESS") {
                var characters = component.get("v.characters");
                characters.push(character);
                component.set("v.characters", characters);
            } else{
                console.log('errorrrr2');
            }
        });

        $A.enqueueAction(action);
    }

and finally this is the saveCharacter() method in the APEX controller:
 
@AuraEnabled
public static SWCharacter__c saveCharacter(SWCharacter__c character) {
    // Perform isUpdateable() checking first, then
    insert character;
    return character;
}

So if you read up to hear and understod the code, the problem is here in the "insert character" in the APEX controller that is not working, not saving the character to the data base BUT it is returning the valid character which is weird because it's not saving it properly first :/ 
Hello all !
I'm having big problems doing this:

This is my GetClient class which I now need to test :O
 
global class GetClient{

    @future(callout = true)
    global static void lookForClient(String clientId){
        String controllerName = 'clients';
        String Parameters = 'clientId='+clientId;
        String method = 'GET';
        HttpResponse response = DisputeFOX_Utils.getJSON(controllerName, Parameters, method, false);
        if (response.getStatusCode() == 200 & response.getbody() != null & response.getbody() != '{}') {

            Map<String, Object> result = (Map<String, Object>) JSON.deserializeUntyped(response.getBody());
            List<Object> clients = (List<Object>) result.get('clients');
            Map<String, Object> clientAttributes = (Map<String, Object>) clients[0];
            Map<String, Object> clientCustomFieldAttributes = (Map<String, Object>) clientAttributes.get('clientCustomField');
            Map<String, Object> forms = (Map<String, Object>) clientCustomFieldAttributes.get('map');

            Long timeStamp = long.valueOf(string.valueOf(Datetime.Now().getTime()/1000));
            
            List<DisputeFox_Integration_JSON__c> listToadd = new List<DisputeFox_Integration_JSON__c>();
            
            for(String attributeName : clientAttributes.keySet()){
                if(attributeName == 'clientCustomField'){
                    for(String formName : forms.keySet()){
                        processSubform(forms, clientId, timeStamp, formName);
                    }
                }else{
                    DisputeFox_Integration_JSON__c oDisputeFox_Integration_JSON = DisputeFOX_Utils.processKey(clientAttributes, clientId, timeStamp, attributeName);
                    listToadd.add(oDisputeFox_Integration_JSON);
                }
            }
            
            insert listToadd;
            
            List<Contact> contacts = new List<Contact>();
            Id contactID = getContactID(timeStamp, clientId, contacts);

            sObject contact;
            if(contactID != null){
                System.debug('contactID -------> ' + contactID);
                  contact = getContactByID(contactID);
            } else{
                contact = new Contact();
                System.debug('No contact found');
            }
            if(contact!=null){
                List<DisputeFox_Integration_ObjectMapping__c> mapping_info_all = [Select Id, DisputeFOX_FieldName__c, Salesforce_FieldName__c, DisputeFOX_FieldType__c from DisputeFox_Integration_ObjectMapping__c where API_Name__c = 'client'];
    
                for (DisputeFox_Integration_ObjectMapping__c dfMapping : mapping_info_all){
                    if(clientAttributes.containsKey(dfMapping.DisputeFOX_FieldName__c)){
                        Object jsonKeyValue = clientAttributes.get(dfMapping.DisputeFOX_FieldName__c);
                        contact = (Contact) DisputeFOX_Utils.switchType(dfMapping, jsonKeyValue, contact);
                    } 
                }
                    if(contactID == null){
                        insert contact;

                    } else{
                            update contact;

                        } 
            }
            else{
                // Objeto contact null
      
            }
        } else{
            // Wrong call

            }
    }
    
    public static void processSubform(Map<String, Object> forms, String clientId, long timeStamp, String formName){        
       Map<String, Object> formNameKey = (Map<String, Object>) forms.get(formName);
       Map<String, Object> formNameKeyMap = (Map<String, Object>) formNameKey.get('map');
       List<DisputeFox_Integration_JSON__c> listJsonToInsert = new List<DisputeFox_Integration_JSON__c>();
                            for(String jsonKey : formNameKeyMap.keySet()){
                                   DisputeFox_Integration_JSON__c oDisputeFox_Integration_JSON = new DisputeFox_Integration_JSON__c();
                                oDisputeFox_Integration_JSON.DisputeFOX_clientId__c = clientId;
                                oDisputeFox_Integration_JSON.Timespan__c = timeStamp;
                                oDisputeFox_Integration_JSON.JSON_Key__c = jsonKey;
                                oDisputeFox_Integration_JSON.JSON_Value__c = (String) formNameKeyMap.get(jsonKey);
                                  listJsonToInsert.add(oDisputeFox_Integration_JSON);
                            }
                                if(listJsonToInsert.size() > 0)
                                insert listJsonToInsert;
    }
    
    public static Id getContactID(long timeStamp, String clientId, List<Contact> contacts){
        List<DisputeFox_Integration_JSON__c> jsonKeySsn = [SELECT JSON_Value__c, JSON_Key__c from DisputeFox_Integration_JSON__c where JSON_Key__c = 'client_ssn' and Timespan__c =:timeStamp and DisputeFOX_clientId__c =: clientId limit 1];
        List<DisputeFox_Integration_JSON__c> jsonKeyId = [SELECT JSON_Value__c, JSON_Key__c from DisputeFox_Integration_JSON__c where JSON_Key__c = 'client_u_id' and Timespan__c =:timeStamp and DisputeFOX_clientId__c =: clientId limit 1];
        List<DisputeFox_Integration_JSON__c> jsonKeyClientId = [SELECT JSON_Value__c, JSON_Key__c from DisputeFox_Integration_JSON__c where JSON_Key__c = 'Client Id' and Timespan__c =:timeStamp and DisputeFOX_clientId__c =: clientId limit 1];
        List<DisputeFox_Integration_JSON__c> jsonKeyCaseNum = [SELECT JSON_Value__c, JSON_Key__c from DisputeFox_Integration_JSON__c where JSON_Key__c = 'Case Number' and Timespan__c =:timeStamp and DisputeFOX_clientId__c =: clientId limit 1];

        if(jsonKeySsn.size() > 0 || jsonKeyId.size() > 0 || jsonKeyClientId.size() > 0 || jsonKeyCaseNum.size() > 0){

            if(jsonKeySsn.size() > 0){
                    String jsonSSN = (String) jsonKeySsn[0].JSON_Value__c;
                    contacts = [SELECT Id FROM Contact WHERE SSN__c =:jsonSSN limit 1];
            }
            else if(jsonKeyId.size() > 0){
                    String jsonId = (String) jsonKeyId[0].JSON_Value__c;
                    contacts = [SELECT Id FROM Contact WHERE disputeFOX_ID__c=:jsonId limit 1];
            }
            else if(jsonKeyClientId.size() > 0){
                    String jsonClientId = (String) jsonKeyClientId[0].JSON_Value__c;
                    contacts = [SELECT Id FROM Contact WHERE Client_Id__c=:jsonClientId limit 1];
            }
            else if(jsonKeyCaseNum.size() > 0){
            String jsonCaseNum = (String) jsonKeyCaseNum[0].JSON_Value__c;
                    contacts = [SELECT Id FROM Contact WHERE Case_Id__c =:jsonCaseNum limit 1];
            }
            
            if(contacts!= null && contacts.size() > 0)
                    return contacts[0].id;
               else     return null;
            
        }else return null;
    }
    
  
} // END DE LA CLASS

Thing here is that this class calls another class here  
 
HttpResponse response = DisputeFOX_Utils.getJSON(controllerName, Parameters, method, false);

and then continues with everything AFTER the response from that call has been recieved.

All good here ....

This is the test class I wrote:
 
@isTest
private class GetClientTest {
     @isTest static void testCallout() {
        // Set mock callout class 
        Test.setMock(HttpCalloutMock.class, new MockHttpResponseGenerator());
        
        // Call method to test.
        // This causes a fake response to be sent
        // from the class that implements HttpCalloutMock. 
        HttpResponse res = DisputeFOX_Utils.getJSON('clients', 'clientId=sdsdsd', 'GET', false);
        
        // Verify response received contains fake values
        String contentType = res.getHeader('Content-Type');
        System.assert(contentType == 'application/json');
        String actualValue = res.getBody();
        String expectedValue = '{"clients":}';
        System.assertEquals(actualValue, expectedValue);
        System.assertEquals(200, res.getStatusCode());
    }
    
    @isTest static void testLookForClient() {
        GetClientTest.testCallout();
        GetClient.lookForClient('dsdasgs');
        
    }
}

First method works ok .... but when trying to test the second one
 
"testLookForClient()"

and it's getting complicated.
 

Can someone help with this plz ??
Hi !
I'm having this error message when trying to query for the information in this field.

Custom field is DiputeFOX_NoteID__c'
Standard Object is Note

I'm using the Sys Admin profile and checked that the field was readable and editable for this profile and it IS, so i can't figure out what the problem could be.
Any idea ?
Hi all !
I'm trying to get a Map<String, Contact> with the returned values of this comparison:

I've got two Objects, Contact (Standard) and DFJSON (Custom). These two objects are NOT related.
I need to Select the Contact Objects where Contact.SSN__c = DFJSON.SSN__c and so on with some other fields but I'm not being able to do so sience there's no JOIN in SOQL.

Any idea on how to do this ?
 
Hi all !
I'm having problems doing this. I need to save the reponse of this API call as Contacts in Salesforce but I can't figure it out.
 
public class GetClient {
    public List<Object> getClient(String clientId){
        Http http = new Http();
        HttpRequest request = new HttpRequest();
        request.setEndpoint('https://api.disputeprocess.com/api/v1/clients?clientId=' + clientId);
        request.setMethod('GET');
        request.setHeader('Content-Type', 'application/json;charset=UTF-8');
        request.setHeader('api_key', 'xxxx');
        request.setHeader('api_token', 'xxxx');
        HttpResponse response = http.send(request);
        // If the request is successful, parse the JSON response.
        if (response.getStatusCode() == 200 & response.getbody() != null & response.getbody() != '{}') {
            // Deserialize the JSON string into collections
    		Map<String, Object> result = (Map<String, Object>) JSON.deserializeUntyped(response.getBody());
            system.debug('result ' + result);
            
         
          
        }
        else{
            system.debug('Error making the callout');
        }
        
        return null;
    }
}

The result variable looks like this:
 
{clients=({Customer_FolderId=3, Customer_Secondary_FolderId=0, Customer_WorkflowId=31, Name=Whatever}

I'm stuck here !

Requirement is to connect to this API sending it a clientId and if the client ID exists store the client as a Contact in SF.

Any help would be much apreaciated
Hi !
I'm having trouble debuggin a method I just wrote:
 
public class getClients {
    public List<Object> callOut(String clientId){
        Http http = new Http();
        HttpRequest request = new HttpRequest();
        request.setEndpoint('https://api.disputeprocess.com/api/v1/clients?');
        request.setMethod('GET');
        request.setHeader('Content-Type', 'application/json;charset=UTF-8');
        request.setHeader('api_key', 'xxxxx');
        request.setHeader('api_token', 'xxxxx');
        HttpResponse response = http.send(request);
        // If the request is successful, parse the JSON response.
        if (response.getStatusCode() == 200) {
            // Deserialize the JSON string into collections
    		Map<String, Object> results = (Map<String, Object>) JSON.deserializeUntyped(response.getBody());
            List<Object> clients = (List<Object>) results.get('clients');
            System.debug('Received the following clients:');
                for (Object client: clients) {
                    System.debug(client);
                }
            return clients;
        }
        else{
            system.debug('Error making the callout');
        }
        
        return null;
    }
}

I'm executing this in the Developer Console in a Anonymous Window and the operation is Succesfull but no debug log is shown when I check the "Debug only" checkbox in the Logs Tab.
As you can see I want to know what the client is to see if it's returning the expected ones.

Debug logs are set to SFDC_DevConsole so that's ok and if I only write System.debug('hello') for example and only execute this in the Anonymous window it does log correctly in the Log Tab, so I can't figure out what the problem might be. Please help 
Hello and thanks for reading :)
This is what I'm trying to achive:

I have a searchbox 
<!--Search Box -->
        <lightning:input type="search" label="Enter character ID" aura:id="characterID" onchange="{!c.APICallout}"/>

that expects a number (this would be an integer ID for a star wars character). When the user inputs this number, the searchbox (onChange) makes a call to the API and returns a valid json (star wars character), looks something like this  
{
    "name": "Luke Skywalker",
    "height": "172",
    "mass": "77",
    "hair_color": "blond",
    "skin_color": "fair",
    "eye_color": "blue",
    "birth_year": "19BBY",
    "gender": "male",
    "homeworld": "https://swapi.dev/api/planets/1/",
    "created": "2014-12-09T13:50:51.644000Z",
    "edited": "2014-12-20T21:17:56.891000Z",
    "url": "https://swapi.dev/api/people/1/"
}
that fills up the form that is beyond the searchbox (can you see both in the component ? ) with the attributes of the character returned from the API callout.

This part is working fine !! (needs fixes, but works)

Second part would be to Save the character by clicking a button in the form.
<lightning:button label="Create Star Wars Character" 
     class="slds-m-top--medium"
      variant="brand"
      onclick="{!c.clickCreate}"/>
this is not working and needs help.

------------------

This is the component
<aura:component controller="starWarsCallout">

    <aura:attribute name="characters" type="SWCharacter__c[]"/>

    <aura:attribute name="newSWCharacter" type="SWCharacter__c"
         default="{ 'sobjectType': 'SWCharacter__c',
                        'Name': '',
                        'Height__c': 0,
                        'SkinColor__c': '',
                        'Gender__c': '',
                        'Planet__c': ''}"/>

    <aura:attribute name="response" type="Map"/>

    <aura:attribute name="CharacterName" type="String"/>
    <aura:attribute name="CharacterHeight" type="Integer"/>
    <aura:attribute name="CharacterSkinColor" type="String"/>
    <aura:attribute name="CharacterPlanet" type="String"/>
    <aura:attribute name="CharacterGender" type="String"/>   

    <aura:attribute name="ListOfFilms" type="String[]"/>
    <aura:attribute name="ListOfSpecies" type="String[]"/>
    <aura:attribute name="ListOfVehicles" type="String[]"/>
    <aura:attribute name="ListOfStarships" type="String[]"/>

    <!--Header -->
    <div class="slds-m-around--medium">
        <!--Search Box -->
        <lightning:input type="search" label="Enter character ID" aura:id="characterID" onchange="{!c.APICallout}"/>

        <!--iterate the list of Films-->    
         <h3 class="slds-section-title--divider">List Of Films</h3>
        <ul class="slds-list--dotted">
            <aura:iteration items="{!v.ListOfFilms}" var="film">
                <li>{!film}</li>
            </aura:iteration>
        </ul>

        <!--iterate the list of Species-->    
        <h3 class="slds-section-title--divider">List Of Species</h3>
        <ul class="slds-list--dotted">
            <aura:iteration items="{!v.ListOfSpecies}" var="specie">
                <li>{!specie}</li>
            </aura:iteration>
        </ul>

        <!--iterate the list of Vehicles-->
        <h3 class="slds-section-title--divider">List Of Vehicles</h3>
        <ul class="slds-list--dotted">
            <aura:iteration items="{!v.ListOfVehicles}" var="vehicle">
                <li>{!vehicle}</li>
            </aura:iteration>
        </ul>

        <!--iterate the list of StarShips-->
        <h3 class="slds-section-title--divider">List Of StarShips</h3>
        <ul class="slds-list--dotted">
            <aura:iteration items="{!v.ListOfStarships}" var="starship">
                <li>{!starship}</li>
            </aura:iteration>
        </ul>
    </div>


    <!-- BOXED AREA -->
        <fieldset class="slds-box slds-theme--default slds-container--small">
        <legend id="characterform" class="slds-text-heading--small 
          slds-p-vertical--medium">
          Add Character
        </legend>
            <!-- CREATE NEW CHARACTER FORM -->
            <form class="slds-form--stacked">          
                <lightning:input type="text" aura:id="peopleform" label="Character Name"
                name="characterName"
               value="{!v.CharacterName}"
                required="true"/> 
                <lightning:input type="number" aura:id="peopleform" label="Height"
                                 name="characterHeight"
      value="{!v.CharacterHeight}"/>
      <lightning:input type="text" aura:id="peopleform" label="Gender"
                                 name="characterGender"
       value="{!v.CharacterGender}"/>
       <lightning:input type="text" aura:id="characterform" label="Planet"            name="characterPlanet"
      value="{!v.CharacterPlanet}"/>
       <lightning:input type="text" aura:id="characterform" label="Skin Color"               name="characterSkincolor"
        value="{!v.CharacterSkinColor}"/>
       <lightning:button label="Create Star Wars Character" 
     class="slds-m-top--medium"
      variant="brand"
      onclick="{!c.clickCreate}"/>
            </form>
        </fieldset>
</aura:component>

This is the c.clickCreate() function
 
clickCreate: function(component, event, helper) {
        var validSWCharacter = component.find('peopleform').reduce(function (validSoFar, inputCmp) {
            // Displays error messages for invalid fields
            inputCmp.showHelpMessageIfInvalid();
            return validSoFar && inputCmp.get('v.validity').valid;
        }, true);
        // If we pass error checking, do some real work
        if(validSWCharacter){

            // Create the new character
            var newSWCharacter = component.get("v.newSWCharacter");
            newSWCharacter.Name = component.get('v.CharacterName');
            newSWCharacter.Height__c = component.get('v.CharacterHeight');
            newSWCharacter.SkinColor__c = component.get('v.CharacterSkinColor');
            newSWCharacter.Planet__c = component.get('v.CharacterPlanet');
            newSWCharacter.Gender__c = component.get('v.CharacterGender');
            console.log("Create Character: " + JSON.stringify(newSWCharacter));
            helper.createSWCharacter(component, newSWCharacter);
        }
    }

this is the createSWCharacter() function
 
createSWCharacter: function(component, character) {
        var action = component.get("c.saveCharacter");
        action.setParams({
            "character": character
        });
        action.setCallback(this, function(response){
            var state = response.getState();
            if (state === "SUCCESS") {
                var characters = component.get("v.characters");
                characters.push(character);
                component.set("v.characters", characters);
            } else{
                console.log('errorrrr2');
            }
        });

        $A.enqueueAction(action);
    }

and finally this is the saveCharacter() method in the APEX controller:
 
@AuraEnabled
public static SWCharacter__c saveCharacter(SWCharacter__c character) {
    // Perform isUpdateable() checking first, then
    insert character;
    return character;
}

So if you read up to hear and understod the code, the problem is here in the "insert character" in the APEX controller that is not working, not saving the character to the data base BUT it is returning the valid character which is weird because it's not saving it properly first :/ 
Hi !
I'm having this error message when trying to query for the information in this field.

Custom field is DiputeFOX_NoteID__c'
Standard Object is Note

I'm using the Sys Admin profile and checked that the field was readable and editable for this profile and it IS, so i can't figure out what the problem could be.
Any idea ?
Hi all !
I'm trying to get a Map<String, Contact> with the returned values of this comparison:

I've got two Objects, Contact (Standard) and DFJSON (Custom). These two objects are NOT related.
I need to Select the Contact Objects where Contact.SSN__c = DFJSON.SSN__c and so on with some other fields but I'm not being able to do so sience there's no JOIN in SOQL.

Any idea on how to do this ?