Untitled

 avatar
unknown
plain_text
9 months ago
4.3 kB
13
Indexable
List<Customer_Intelligence__c> demandMapping = new List<Customer_Intelligence__c>();

List<User> userList = new List<User>();
Map<Id, List<Customer_Intelligence__c>> demandMappingOwners = new Map<Id, List<Customer_Intelligence__c>>();
Set<Id> accountsIds = new Set<Id>();
Map<Id, String> usersEmail = new Map<Id,String>();

Set<Id> testUsers = new Set<Id>();
testUsers.add('0050600000H3ggVAAR');//Pramod
testUsers.add('0059O00000YXArRQAX');//Eduardo
testUsers.add('0059O00000YXBCPQA5');//Gustavo
testUsers.add('0059O00000ed5FLQAY');//Alejandro


demandMapping = [SELECT Id, OwnerId, Status__c, Name, Account__c, Owner.Name, Account__r.Name, Due_Date__c,Product__c, Product__r.Name FROM Customer_Intelligence__c WHERE Status__c = 'Assigned' ORDER BY Account__r.Name ];

for(Customer_Intelligence__c demandMappingItem : demandMapping){
    if(!demandMappingOwners.containsKey(demandMappingItem.OwnerId)){
        demandMappingOwners.put(demandMappingItem.OwnerId, new List<Customer_Intelligence__c>{demandMappingItem});
    }else if(demandMappingOwners.containsKey(demandMappingItem.OwnerId)){
        demandMappingOwners.get(demandMappingItem.OwnerId).add(demandMappingItem);
    }
    
    if(!accountsIds.contains(demandMappingItem.Account__c)){	
        accountsIds.add(demandMappingItem.Account__c);
    }
    
}
System.debug('Demand mapping Map: '+ demandMappingOwners);

userList = [SELECT Id, Email FROM User WHERE Id IN:testUsers];

for(User userIterator : userList){
    if(!usersEmail.containsKey(userIterator.Id)){
        usersEmail.put(userIterator.Id , userIterator.Email);
    }else if(usersEmail.containsKey(userIterator.Id)){
        System.debug('Id already in the map');
    }
}

List<Messaging.SingleEmailMessage> emails = new List<Messaging.SingleEmailMessage>();
OrgWideEmailAddress[] owea = [SELECT Id FROM OrgWideEmailAddress WHERE Address = '[email protected]'];
for(Id user : usersEmail.keyset()){
    if(demandMappingOwners.containsKey(user)){
        Boolean verifyAccount = false;
        String dmRecord = '';
        String lastReviewedId = '';
        
        List<Customer_Intelligence__c> demandMappingAux = new List<Customer_Intelligence__c>();
        demandMappingAux = demandMappingOwners.get(user);
        for(Customer_Intelligence__c ci :demandMappingAux){
            String idToReview = ci.Account__c ;
            String recordLink = URL.getOrgDomainUrl().toExternalForm()+'/'+ ci.Account__c;
            dmRecord += '<tr>';
            if(lastReviewedId == idToReview && lastReviewedId != null){
                dmRecord += '<td style="border-top-style: none"> </td>';
            }else{
                dmRecord += '<td style="border-bottom-style: none"> <a href ="'+ recordLink +'">'+ ci.Account__r.Name +'</td>';
                lastReviewedId = ci.Account__c;
            }
            dmRecord += '<td>'+ ci.Status__c+'</td>';
           	//dmRecord += '<td>'+ ci.Owner.Name +'</td>';
            dmRecord += '<td>' + ci.Name +' </td>';
            dmRecord += '<td>' + ci.Product__r.Name +' </td>';
            dmRecord += '<td>'+ ci.Due_Date__c +'</td>';
            dmRecord += '</tr>';
        }
        String testGetEmail = usersEmail.get(user);
        String[] addresses = new String[]{testGetEmail};
        Messaging.SingleEmailMessage dmEmail = new Messaging.SingleEmailMessage();
        dmEmail.setToAddresses(addresses);
                    dmEmail.setSubject('Demand Mapping Assigned');
                    dmEmail.setOrgWideEmailAddressId(owea.get(0).Id);
                    dmEmail.setHtmlBody('The following Demand Mapping records have been created and assigned to you: <br/><br/>'+
                    '<table border = "1px solid black"> <tr> '+
                   	'<th>Account</th>'+
                    '<th>Status</th>'+
                    //'<th>Owner</th>'+
                    '<th>Demand Mapping </th>'+
                    '<th>Product </th>'+
                    '<th>Due Date</th>'+                   
                    '</tr>'+
                    dmRecord+'</table>');
                    emails.add(dmEmail);
                    testGetEmail='';    
    }
}

if(emails.size()>0){
                Messaging.sendEmail(emails);
            }
Editor is loading...
Leave a Comment