• Svi K
  • NEWBIE
  • 10 Points
  • Member since 2016

  • Chatter
    Feed
  • 0
    Best Answers
  • 0
    Likes Received
  • 0
    Likes Given
  • 2
    Questions
  • 1
    Replies
Hello There -  Can anyone help me figure the below questions,

Which 2 deployment tools should be use to delete metadata from an organization? 
  1. Ant Migration tool
  2. Unmanaged packages
  3. Developer Console
  4. Change sets
Which tools would you use to deploy metadata from one organization to either a related or unrelated organization?
  1. Change Sets
  2. Force.com IDE
  3. Unmanaged Packages
  4. Force.com Migration tool
Thank you
​​​​​​​Tejasvi Kore
  • February 09, 2022
  • Like
  • 0
I am gettig the following error when i type a string in search and then select an alphabet in the pagination bar,

unexpected token: 'Where'
Error is in expression '{!Showaccounts1}' in page emailtoolpage: Class.EmailController.showAccounts1: line 141, column 1
An unexpected error has occurred. Your development organization has been notified.

The following is the class;
public with sharing class EmailController{
    // account and selection set/variables
    public list<AccountSubClass> AccountList {get; set;}
    public list<AccountWrapper> lstWrapper{get;set;}
    /**private set<Id> AccountSelectedSet;
    public Integer AccountSelectedCount {get; set;}
    public String SelectedOneAccount {get; set;}*/
    
    // selection and filter 
    public list<String> AlphaList {get; set;}
    public String AlphaFilter {get; set;}
    /*public String SearchAccountName {get; set;} 
    private String SaveSearchAccountName;
    private String QueryAccount;*/
    
    //Vara
    public string strSelecteTempalte{get;set;}
    public list<selectoption> lstTemplates{get;set;}
    public string strPreview{get;set;}
    public string CaseNumber{get;set;}
    public CaseSolution objcomment{get;set;}
    public Id selectCaseId=null;
    //public list<AccountWrapper> lstWrapper{get;set;}
    //public list<AccountWrapper> AccountList{get;set;}
    public string strEmailBody;
    public integer MaxEmails{get;set;}
    public integer Emailsent{get;set;}
    public integer EmailsRemaining{get;set;}
    public string strSearchText{get;set;}
    public string strSearchBy{get;set;} 
    //var end
    //display sort and number
    public String RecPerPage {get; set;}
    public list<SelectOption> RecPerPageOption {get; set;}  
    public String SortFieldSave;
    CustomIterableClass obj;
    /***
    * TableExampleController - Constructor initialization
    ***/
    
    
    
  
    public EmailController(){
        AccountList = new list<AccountSubClass>();
        lstWrapper = new list<AccountWrapper>();
       // AccountSelectedSet = new set<Id>();
         lstTemplates = new list<selectoption>();
        //lstWrapper = new list<AccountWrapper>();
        http ht = new http();
        httprequest req = new httprequest();
        req.setMethod('GET');
        req.setHeader('Authorization', 'OAuth ' + UserInfo.getSessionId());
        system.debug('URL======='+URL.getsalesforceBaseURL().ToExternalForm());
        req.setEndpoint(label.Instance);
        httpResponse hs = ht.send(req);
        system.debug('hs==='+hs.getbody());
        OutPutClass objCl = (OutPutClass)json.deserialize(hs.getbody(),OutPutClass.class);
        system.debug('Max==='+objCl.SingleEmail.Max);
        system.debug('objCl===='+objCl);
        MaxEmails = Integer.valueOf(objCl.SingleEmail.Max);
        Emailsent = MaxEmails-Integer.valueOf(objCl.SingleEmail.Remaining);      
        EmailsRemaining = Integer.valueOf(objCl.SingleEmail.Remaining);
          
       for(EmailTemplate objTemp:[select id,name,folderid,folder.name from emailtemplate where folder.name='Case templates']){
        
            lstTemplates.add(new selectoption(objTemp.Id,objTemp.name));
            
            }
        //records for page initialization
        RecPerPageOption = new list<SelectOption>();
        //RecPerPageOption.add(new SelectOption('5','5'));
        RecPerPageOption.add(new SelectOption('10','10'));
        RecPerPageOption.add(new SelectOption('25','25'));
        RecPerPageOption.add(new SelectOption('50','50'));
        RecPerPageOption.add(new SelectOption('100','100'));
        RecPerPageOption.add(new SelectOption('200','200'));
        RecPerPage = '20'; //default records per page
        
        // initialization alpha list
        AlphaList = new list<String> {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'Other', 'All'};
            SortFieldSave = SortField;
        
        // alpha filter, use page parameter or set default to all
        if (apexpages.currentpage().getparameters().get('alpha') == null){
            AlphaFilter = 'All';
        } else {
            AlphaFilter = apexpages.currentpage().getparameters().get('alpha');
        }
     
        // list generation
       // BuildQuery();
        ShowAccounts1();
    }
    
      
    
        
    
    /***
    * SearchAccount - set search criteria fields and refresh Account table
   
    public PageReference SearchAccount() {
        SaveSearchAccountName = SearchAccountName;
        
        //BuildQuery();
        
        return null;
    } ***/
    
    
   
        
        system.debug('strQuery ====***'+strQuery);
        //string strQuery = 'select id,name,(select id,Email from contacts where Receives_Maintenance_Notifications__c=true) from account';
        strSearchBy='Name';
        if(strSearchBy!=null && strSearchBy!='' && strSearchText!=null && strSearchText!=''){
             if(strQuery.indexOf('Where')!=-1){
                         strQuery = strQuery + ' and Name LIKE \'' + String.escapeSingleQuotes(strSearchText) + '%\'';   
            } public void showAccounts1(){
        system.debug('test');
        if (AlphaFilter == null || AlphaFilter.trim().length() == 0) {
            AlphaFilter = 'All';
        }
        string strQuery = 'select id,name,(select id,Email from contacts where Receives_Maintenance_Notifications__c=true) from account';
        if (AlphaFilter != 'All') {
            if(strQuery.indexOf('Where')!=-1){
                         strQuery = strQuery + ' and Name LIKE \'' + String.escapeSingleQuotes(AlphaFilter) + '%\'';   
            }
            //QueryWhere = BuildWhere(QueryWhere, '(' + String.escapeSingleQuotes(SortField) + ' LIKE \'' + String.escapeSingleQuotes(AlphaFilter) + '%\')' );
            else{
            strQuery = strQuery + ' where Name LIKE \'' + String.escapeSingleQuotes(AlphaFilter) + '%\'';
            }
        }
            else{
            //strQuery = strQuery+ ' where '+strSearchBy+ '=\''+strSearchText+'\'';
            strQuery = strQuery + ' Where Name LIKE \'' + String.escapeSingleQuotes(strSearchText) + '%\'';   
            }
        }
        system.debug('objToolFinal==='+strQuery);
        list<Account> lstAccount =DataBase.Query(strQuery);
        system.debug('lstAccount==='+lstAccount);
        lstWrapper.clear();
        for(account objAccount :lstAccount){
            system.debug('objAcc====='+objAccount);
            if(objAccount.contacts.size()!=0){
                AccountWrapper objWrapper = new AccountWrapper();
                objWrapper.AccountRecord = objAccount;
                objWrapper.numberOfContacts = objAccount.contacts.size(); 
                lstWrapper.add(objWrapper); 
              
            }  
        }
        obj = new CustomIterableClass (lstWrapper); 
        system.debug('RecPerPage===='+RecPerPage);
        obj.setPageSize = integer.valueof(RecPerPage);
        next();  
    }
    public Boolean hasNext {             
get { 
return obj.hasNext(); 
}    set;  }      
public Boolean hasPrevious { 
get {   
    return obj.hasPrevious(); 
    //return null;
}   
set;}                 
 public void next()         
 {             
lstWrapper= obj.next();        
 }                  
public void previous()          
{             
lstWrapper= obj.previous();        
 }   
    
    /***
    * BuildWhere - build soql string for where criteria 
   
    public String BuildWhere(String QW, String Cond) {
        if (QW == '') {
            return ' WHERE ' + Cond;
        } else {
            return QW + ' AND ' + Cond;
        }
    } ***/
    
    /***
    * SortDirection - return sort direction. Default ascending(asc)
    ***/
    public String SortDirection {
        get { if (SortDirection == null) {  SortDirection = 'asc'; } return SortDirection;  }
        set;
    }
    
    /***
    * SortField - return sort by field. Default to Name
    ***/
    public String SortField {
        get { if (SortField == null) {SortField = 'Name'; } return SortField;  }
        set; 
    }
    
    /***
    * SortToggle - toggles the sorting of query from asc<-->desc
    ***/
    public void SortToggle() {
        SortDirection = SortDirection.equals('asc') ? 'desc NULLS LAST' : 'asc';
        if (SortFieldSave != SortField) {
            SortDirection = 'asc';
            AlphaFilter = 'All';
            SortFieldSave = SortField;
        }
   
        //BuildQuery();
    }
    
     public void PreviewTemplate(){
       //list<case> lstCase= [select id from case where casenumber=:caseNumber];
         if(caseNumber==null || caseNumber==''){
            // return ;
         }
         list<case> lstCase= [select id from case where casenumber=:caseNumber and recordtype.developername='Maintenance'];
        
        if(lstCase.size()==0){
            ApexPages.Message myMsg = new ApexPages.Message(ApexPages.Severity.ERROR,'Please enter valid Case Number');
            ApexPages.addMessage(myMsg);
            return;        
        }else{
            selectCaseId  = lstCase[0].Id;  
            
        }
        system.debug('strSelecteTempalte==='+strSelecteTempalte);
        system.debug('selectCaseId==='+selectCaseId);
        
        Messaging.SingleEmailMessage email = 
        Messaging.renderStoredEmailTemplate(strSelecteTempalte, selectCaseId, selectCaseId);
        strPreview = email.getHTMLBody();
        if(strPreview==null){
            strPreview = email.getPlainTextBody(); 
        }
        strEmailBody =strPreview;
        system.debug('strPreview==='+strPreview);
        }
        
       public void SendEmail(){
       if(caseNumber==null || caseNumber ==''){
          // return ;
       }
       list<case> lstCase= [select id from case where casenumber=:caseNumber and recordtype.developername='Maintenance'];
        //list<case> lstCase= [select id from case where casenumber=:caseNumber];
        
        if(lstCase.size()==0){
            ApexPages.Message myMsg = new ApexPages.Message(ApexPages.Severity.ERROR,'Please enter valid Case Number');
            ApexPages.addMessage(myMsg);
            return;        
        }else{
            selectCaseId  = lstCase[0].Id;  
        }
        
        string allEmails=''; 
        set<string> setEMails = new set<string>();
        Id contactId;
        for(AccountWrapper Wrap:lstWrapper){
             if(Wrap.bSelectedRecord==true){
                for(Contact objCon:Wrap.AccountRecord.contacts){
                    if(objCon.Email==null || objCon.Email==''){
                        continue;
                    }
                    //else
                    setEMails.add(objCon.Email);
                    if(allEmails.indexof(objCon.Email)<0){
                        allEmails = allEmails+','+objCon.Email;
                    }
                    contactId = objCon.Id;
                     
                }
            }
        }
        if(setEMails!=null && !setEMails.isEmpty()){
            
            system.debug('setEMails==='+setEMails);
            system.debug('strSelecteTempalte==='+strSelecteTempalte);
            system.debug('selectCaseId==='+selectCaseId);
            
            list<string> lstEmails = new list<string>();
            integer interator = lstEmails.size()/100;
            integer counter=lstEmails.size();
            integer startcounter=0;
            if(interator<1){
                interator = 1;
            }
            List<Messaging.SendEmailResult> results;
            for(integer i=1;i<=interator;i++){
                list<string> finalEmailLst = new list<string>();
                List<Messaging.SingleEmailMessage> allmsg = new List<Messaging.SingleEmailMessage>();
                for(integer j=startcounter;j<counter;j++){
                  finalEmailLst.add(lstEmails[j]);  
                  if(math.mod(j, 100)==0){
                      startcounter = i*100;
                      break;  
                  }
                     
                    
                }
                Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
                mail.setTemplateID(strSelecteTempalte); 
                mail.setTargetObjectId(contactId);
                mail.setWhatId(selectCaseId);
                
                mail.setSaveAsActivity(false);
                mail.setToAddresses(finalEmailLst);
                Messaging.RenderEmailTemplateBodyResult renderResults;
                allmsg.add(mail);
                /*if(j % 100==0){
                    j=i*100;
                    counter = j+100;
                }*/
                
               
               results =  Messaging.sendEmail(allmsg,true);
            }
            if(results[0].isSuccess()){
                recordtype objRecodtype = [select id from recordtype where sobjecttype='case' and developername='Notice_of_work'];
                Case objCase = new case();
                objCase.Origin ='Email';
                insert objCase;
                if(strPreview==null || strPreview==''){
                    Messaging.SingleEmailMessage email = Messaging.renderStoredEmailTemplate(strSelecteTempalte, selectCaseId, selectCaseId);
                    strEmailBody = email.getHTMLBody();
                    if(strEmailBody=='' || strEmailBody==null){
                        strEmailBody = email.getPlainTextBody();    
                    }
                }
                Case_Email_Tracker__c objCaseTracker = new Case_Email_Tracker__c();
                system.debug('strEmailBody==='+strEmailBody);
                objCaseTracker.Email_body__c = strEmailBody;
                objCaseTracker.Case__c = objCase.id;
                
               objCaseTracker.Email__c =allEmails;
                insert objCaseTracker;
                system.debug('results===='+objCase.id);
                list<Case> lstRefCase = [select casenumber from case where id=:objCase.id];
                string CaseNumber='';
                if(lstRefCase.size()>0){
                    CaseNumber = lstRefCase[0].CaseNumber;
                }
                ApexPages.Message myMsg = new ApexPages.Message(ApexPages.Severity.info,'Mail sent succesfully '+'Reference Case number :' +CaseNumber);
                ApexPages.addMessage(myMsg);       
               
            }
            
        }
       
    }
    /***
    * DoSomethingOne - do something with one selected account
    ***/
  /**  public PageReference DoSomethingOne() {
        system.debug('SelectedOneAccount: ' + SelectedOneAccount);
        return null;
    }**/
    
    /***
    * DoSomethingMany - do something with many selected accounts
    ***/
   /** public PageReference DoSomethingMany() {
        for (Id AccountId : AccountSelectedSet) {
            system.debug('Checked: ' + AccountId);
        }
        return null;
    }**/
    
    /***
    * AccountSubClass - Sub-Class to hold Account and checkbox for the table
    ***/
    public class AccountSubClass {
        public integer numberOfContacts{get;set;}
        public Boolean aCheckBox {get;set;}
        public Account aAccount {get;set;}
        
        // sub-class initialization
        public AccountSubClass(Account a, Boolean chk,integer conCount){
            aAccount = a;
            aCheckBox = chk;
            numberOfContacts= conCount;
        }  
    }
    
     public class OutPutClass{
        public SingleEmail SingleEmail{get;set;}
    }
    public class SingleEmail{
        public string Max;
        public string Remaining;
    }
    public class AccountWrapper{
        public account AccountRecord{get;set;}
        public boolean bSelectedRecord{get;set;}
        public integer numberOfContacts{get;set;}
    }
}
  • September 26, 2017
  • Like
  • 0
Hello There.,

Am getting below error while completing the Marketing Dashboard challenge as part of Superbadge (Reports & Dashboards Specialist); i have also provided the screenshot of what i have completed. Spent couple of hours to understand where its breaking but couldn't get the cause of it. looking forward ..

error:The 'Marketing Manager' dashboard does not have the correct headers and titles for the chart components.

User-added image