You need to sign in to do that
Don't have an account?

How to Map a subset of the Contact Object
I would like to not Map the whole contact object, but only map contacts where the RecordType = 'ID'. Any help would be greatly appreciated.
Method is below.
public void doAutoSubscribe(Map<Id, Contact> contactMap) {
List<Subscription__c> existingSubs;
Set<ID> advisorIDs = contactMap.keySet();
Map<Id,Set<Id>> alreadySubscribed = new Map<Id,Set<Id>>();
List<Subscription__c> newSubs = new List<Subscription__c>();
existingSubs = [SELECT Advisor__c, Publication__c, Id FROM Subscription__c where Advisor__c in :advisorIDs and Publication__r.Subscribe_On_Advisor_Create__c = true];
for(Id id: advisorIds) {
alreadySubscribed.put(id, new Set<id>());
}
for(Subscription__c sub : existingSubs) {
Set<id> currentSubcriptions = new Set<id>();
if (alreadySubscribed.containsKey(sub.Advisor__c)) {
currentSubcriptions = alreadySubscribed.get(sub.Advisor__c);
}
currentSubcriptions.add(sub.Publication__c);
alreadySubscribed.put(sub.Advisor__c, currentSubcriptions);
}
List<Publication__c> pubs;
pubs = [ Select id from Publication__c where Subscribe_On_Advisor_Create__c = true ] ;
for(Publication__c p : pubs) {
for(Id id : advisorIds) {
Set<id> currentSubscriptions = alreadySubscribed.get(id);
System.debug('THIS IS THE RECORDTYPE NAME 2----->'+RTName);
//if (!currentSubscriptions.contains(p.id) ) {
if (RTName == 'ID' && !currentSubscriptions.contains(p.id)) { // Add check for ID RecordType Lreed 09/23/2014
System.debug('Advisor Record TypeName 3----->'+ RTName);
Subscription__c sub = new Subscription__c();
sub.Advisor__c = id;
sub.Publication__c = p.id;
sub.Subscribed__c = true;
newSubs.add(sub);
}
}
}
System.debug('NEW SUBS --------- >' + newSubs.size());
System.debug('NEW SUBS EMPTY --------- >' + newSubs.isEmpty());
if (!newSubs.isEmpty()) {
System.debug('INSERT NEW SUBS --------- >');
insert newSubs;
}
}
Method is below.
public void doAutoSubscribe(Map<Id, Contact> contactMap) {
List<Subscription__c> existingSubs;
Set<ID> advisorIDs = contactMap.keySet();
Map<Id,Set<Id>> alreadySubscribed = new Map<Id,Set<Id>>();
List<Subscription__c> newSubs = new List<Subscription__c>();
existingSubs = [SELECT Advisor__c, Publication__c, Id FROM Subscription__c where Advisor__c in :advisorIDs and Publication__r.Subscribe_On_Advisor_Create__c = true];
for(Id id: advisorIds) {
alreadySubscribed.put(id, new Set<id>());
}
for(Subscription__c sub : existingSubs) {
Set<id> currentSubcriptions = new Set<id>();
if (alreadySubscribed.containsKey(sub.Advisor__c)) {
currentSubcriptions = alreadySubscribed.get(sub.Advisor__c);
}
currentSubcriptions.add(sub.Publication__c);
alreadySubscribed.put(sub.Advisor__c, currentSubcriptions);
}
List<Publication__c> pubs;
pubs = [ Select id from Publication__c where Subscribe_On_Advisor_Create__c = true ] ;
for(Publication__c p : pubs) {
for(Id id : advisorIds) {
Set<id> currentSubscriptions = alreadySubscribed.get(id);
System.debug('THIS IS THE RECORDTYPE NAME 2----->'+RTName);
//if (!currentSubscriptions.contains(p.id) ) {
if (RTName == 'ID' && !currentSubscriptions.contains(p.id)) { // Add check for ID RecordType Lreed 09/23/2014
System.debug('Advisor Record TypeName 3----->'+ RTName);
Subscription__c sub = new Subscription__c();
sub.Advisor__c = id;
sub.Publication__c = p.id;
sub.Subscribed__c = true;
newSubs.add(sub);
}
}
}
System.debug('NEW SUBS --------- >' + newSubs.size());
System.debug('NEW SUBS EMPTY --------- >' + newSubs.isEmpty());
if (!newSubs.isEmpty()) {
System.debug('INSERT NEW SUBS --------- >');
insert newSubs;
}
}
Please refer below code and update it as per your metadata : Important :
If this is what you were looking for then please mark it as a "SOLUTION" or You can Click on the "Like" Button if this was beneficial for you.