• Akhil R Nath
  • NEWBIE
  • 0 Points
  • Member since 2019

  • Chatter
    Feed
  • 0
    Best Answers
  • 0
    Likes Received
  • 0
    Likes Given
  • 14
    Questions
  • 1
    Replies
public class leadDuplicate {
    
    public List<lead>ac{get;set;}
    public List<lead>ldList{get;set;}
    public List<lead>ldEmail{get;set;}
    public List<lead>ldLastName{get;set;}
    public List<lead>ldFirstName{get;set;}
    public List<AggregateResult> ac1 {get; set;}
    public List<AggregateResult> ac2 {get; set;}
    public List<AggregateResult> ac3 {get; set;}
    public List<AggregateResult> ac4 {get; set;}
    public Boolean bFirstName {get; set;}
    public Boolean bLastName {get; set;}
    public Boolean bEmail {get; set;}
    public Boolean bLead {get; set;}
    public Boolean bCompany{get;set;}
    public List <String> companyList= new List<String>();
    public List <String> EmailList= new List<String>();
    public List <String> firstNameList= new List<String>();
    public List <String> lastNameList= new List<String>();
    public string Email;
    public string Company;
    public string FirstName;
    public string LastName;
    private integer totalRecs = 0;       
    private integer index = 0;  
    private integer blockSize = 2000;
    public List<Lead> ldlistNew= new List<Lead>();
    
    
    public leadDuplicate(ApexPages.StandardController controller){
        
        //totalRecs = [select count() from Lead]; 
        //Duplicate();
        Email = apexpages.currentpage().getparameters().get('Email');
        Company = apexpages.currentpage().getparameters().get('Company');
        FirstName = apexpages.currentpage().getparameters().get('FirstName');
        LastName = apexpages.currentpage().getparameters().get('LastName');
        system.debug('Email'+Email);
        system.debug('Company'+Company);
        system.debug('FirstName'+FirstName);
        system.debug('LastName'+LastName);
        
        if(FirstName=='True' || LastName=='True' || Email=='True' || Company=='True'){
            Duplicate();
        }
        
        
    }
    public void beginning() {  
        
        index = 0;  
        
    }  
    
    public void previous() {  
        Duplicate();
        index = index - blockSize;  
        
    }  
    
    public void next() {  
        
        index = index + blockSize;  
        system.debug('indexnext'+index);
        Duplicate();
    }  
    
    public void end() {  
        Duplicate();
        index = totalrecs - math.mod(totalRecs,blockSize);  
        
    }          
    
    public boolean getprev() { 
        Duplicate();
        if(index == 0)  
            return true;  
        else  
            return false;  
        
    }    
    
    public boolean getnxt() {  
        Duplicate();
        if((index + blockSize) > totalRecs)  
            return true;  
        else  
            return false;  
        
    }          
    public PageReference Duplicate(){
        firstNameList.clear();
        lastNameList.clear();
        EmailList.clear();
        companyList.clear();
        
        ldList = new List<Lead>();
        if(FirstName=='True' || LastName=='True' || Email=='True' || Company=='True'){
            if(FirstName=='True'){
                //ac1=[SELECT FirstName,count(Id) count1 FROM lead GROUP BY FirstName HAVING count(Id)>1];
                for(AggregateResult ag : [SELECT FirstName,count(Id) count1 FROM lead GROUP BY FirstName HAVING count(Id)>1]) {
                    Lead ldFirstName = new Lead();
                    
                    ldFirstName.FirstName = (String) ag.get('FirstName');
                    firstNameList.add(ldFirstName.FirstName);
                    
                    
                }
                system.debug('firstNameList'+firstNameList);
            }
            system.debug('firstNameList'+firstNameList);
            system.debug('bLastName'+bLastName);
            if(LastName=='True'){  
                system.debug('bLastName'+bLastName);
                //ac2=[SELECT LastName,count(Id) count1 FROM lead GROUP BY LastName HAVING count(Id)>1];
                for(AggregateResult ag : [SELECT LastName,count(Id) count1 FROM lead GROUP BY LastName HAVING count(Id)>1]) {
                    Lead ldLastName = new Lead();
                    ldLastName.LastName = (String) ag.get('LastName');
                    lastNameList.add(ldLastName.LastName);
                    
                }
                system.debug('lastNameList'+lastNameList);
            }
            
            if(Email=='True'){
                //ac3=[SELECT email,count(Id) count1 FROM lead GROUP BY email HAVING count(Id)>1];
                for(AggregateResult ag : [SELECT email,count(Id) count1 FROM lead GROUP BY email HAVING count(Id)>1]) {
                    Lead ldEmail = new Lead();
                    ldEmail.Email = (String) ag.get('Email');
                    EmailList.add(ldEmail.Email);
                    
                }
            }
            if(Company=='True'){
                //ac4=[SELECT Company,count(Id) count1 FROM lead GROUP BY Company HAVING count(Id)>1];
                for(AggregateResult ag : [SELECT Company,count(Id) count1 FROM lead GROUP BY Company HAVING count(Id)>1]) {
                    Lead ld = new Lead();
                    ld.Company = (String) ag.get('Company');
                    companyList.add(ld.Company);
                    
                }
            }
            
            //integer totalrecs   = [select count() from Lead];
            ldlistNew=[SELECT Id, Email, FirstName, LastName,Company,LeadSource    From Lead Where Company IN:companyList OR Email IN:EmailList OR FirstName IN:firstNameList OR LastName IN:lastNameList LIMIT :blockSize OFFSET :index ];
            system.debug('ldList'+ldList);
            for(Lead ld:ldlistNew){
                if(ld.Email!=Null){
                    ldList.add(ld);
                }
            }
        }
        PageReference pr=new PageReference ('https://na139.salesforce.com/apex/LeadDuplicateDisplayPage?Email='+bEmail+'&Company='+bCompany+'&FirstName='+bFirstName+'&LastName='+bLastName);
        return pr;
        
    }
}
public with sharing class MultipleSearchObjects {
    public Account acc{get;set;}
    public Contact con{get;set;}
    public Opportunity opp{get;set;}
    public Lead ld{get;set;}
    public List<Account> accountList {get;set;}
    public List<Contact> contactList {get;set;}
    public List<Opportunity> oppList {get;set;}
    public List<Lead> ledList{get;set;}
    public String selectedSObject {get;set;}
     public List<SelectOption> objects = new List<SelectOption>();
      public List<SelectOption> options = new List<SelectOption>();
    public List<String> recordList {get;set;}
    public String selectedRecord {get;set;}
    public boolean pb1Rendered{get;set;}
    public boolean pb2Rendered{get;set;}
    public boolean pb3Rendered{get;set;}
    public String RES { get; set; }
    public String body { get; set; }
    public String send{get;set;}
    public String Folder { get; set; }
    public String Cc { get; set; }
    public String subject { get; set; }
    public  string template{get;set;}
    public string strQueryLd;
    public EmailTemplate et{get;set;}
    public string selectedTemplate;

    public Contact con1{get;set;}
            public Set<Id> contactIdSet = new Set<Id>();
    // create a list of strings to hold the conditions
    public List<string> conditions = new List<string>();
    List<Date> dates= new List<Date>();
    private integer totalRecs = 0;
    private integer OffsetSize = 0;
    private integer LimitSize= 10;
    
    public MultipleSearchObjects(){
        system.debug('==>AccountMultipleSearchWithPagenationCLS  is calling==>');
        acc = new Account();
        con = new Contact();
        ld  = new Lead();
        opp = new Opportunity();
        contactList = new List<Contact>();
        ledList = new List<Lead>();
        oppList = new List<Opportunity>();
        //accLd = new list<Lead>();
        pb1Rendered =pb2Rendered = pb3Rendered = false;
        selectedSObject = '';
        //accountList  = new List<Account>();
    }
      public PageReference refresh() {
        return null;
    }
    public void preview(){
        system.debug('text');
        // do nothing
    }
    
        public void searchCon(){
        totalRecs = 0;
        OffsetSize = 0;
        if(contactList !=null && contactList.size()>0){
            contactList=null;
        }
        searchContacts ();
        conditions.clear();
    }
      public void searchLd(){
        totalRecs = 0;
        OffsetSize = 0;
        if(ledList !=null && ledList.size()>0){
            ledList=null;
        }
        searchLeads();
        conditions.clear();
    }


    
     public void onChangeFnCall(){
        if(selectedSObject== 'Contact'){
            pb2Rendered = true;
            pb3Rendered = false;
            pb1Rendered = false;
        }
        else if(selectedSObject== 'Lead'){
            pb2Rendered = false;
            pb3Rendered = true;
            pb1Rendered = false;
        }
        else if(selectedSObject == 'Opportunity'){
            pb2Rendered = false;
            pb3Rendered = false;
            pb1Rendered = true;
        }
    }
    
     public void FirstPage()
    {
        OffsetSize = 0;
        //searchContacts();
        //searchLeads();
        system.debug('Hello');
        

        
    }
    public void previous()
    {
        OffsetSize = (OffsetSize-LimitSize);
        //searchContacts();
        //searchLeads();
        system.debug('Hello');
    }
    public void next()
    {
        OffsetSize = OffsetSize + LimitSize;
        //searchContacts();
        //searchLeads();
        system.debug('OffsetSize'+OffsetSize);
    }
    public void LastPage()
    {
        OffsetSize = totalrecs - math.mod(totalRecs,LimitSize);
        //searchContacts();
        //searchLeads();
    }
    public boolean getprev()
    {
        
        if(OffsetSize == 0){
            
            return true;
        }
        else {
            
            return false;
        }
    }
    public boolean getnxt()
    {
        if((OffsetSize + LimitSize) > totalRecs){
            
            return true;
        }
        else {
            
            return false;
        }
    }
    public void searchAcc(){
        totalRecs = 0;
        OffsetSize = 0;
        if(accountList !=null && accountList.size()>0){
            accountList=null;
        }
        searchAccounts ();
        conditions.clear();
    }
  
     public List<SelectOption> getSObjectNames(){
       objects.add(new SelectOption('','Select'));
       objects.add(new SelectOption('Account','Account'));
       objects.add(new SelectOption('Lead','Lead'));
       objects.add(new SelectOption('Opportunity','Opportunity'));
       objects.add(new SelectOption('Contact','Contact'));
            system.debug('objects'+objects);
       return objects;
           
    
    }
    
    public Void searchOpp(){
        
        System.debug('Total Records is ==>'+totalRecs);
        System.debug('OffsetSize is ==>'+OffsetSize);
        
        if(oppList != null && !oppList.isEmpty()){
            oppList.clear();
        }
        String strQueryopp ='SELECT Name, StageName,Type,Industry__c, FiscalYear, Country__c,Category_interested_in2__c,CloseDate,Shipped_Status__c From Opportunity';
        if(opp.CreatedById !=null){
            String fromDate = opp.CreatedById+'';
            fromDate = fromDate.split(' ',0)[0]+'T00:00:00.000Z';
            conditions.add('CreatedDate >='+fromDate);
        }
        
        if(opp.CreatedById !=null){
            String toDate = opp.CreatedById+'';
            toDate = toDate.split(' ',0)[0]+'T23:59:59.000Z';
            conditions.add('createdDate <='+toDate);
        }
        
        if(opp.StageName !=null && opp.StageName !=''){
            conditions.add('StageName Like \'%' +opp.StageName +'%\' ');
        }
         
        if(opp.Type !=null && opp.Type !=''){
            conditions.add('Type Like\'%' +opp.Type +'%\' ');
        }
        if(opp.Industry__c !=null && opp.Industry__c !=''){
            conditions.add('Industry__c Like\'%' +opp.Industry__c +'%\' ');
        }
          if(opp.Country__c !=null && opp.Country__c !=''){
            conditions.add('Country__c Like\'%' +opp.Country__c +'%\' ');
        }
        if(opp.Category_interested_in2__c !=null && opp.Category_interested_in2__c !=''){
            conditions.add('Category_interested_in2__c Like\'%' +opp.Category_interested_in2__c +'%\' ');
        }
         //if(opp.CloseDate !=null && opp.CloseDate !=''){
           // conditions.add('CloseDate Like\'%' +opp.CloseDate +'%\' ');
        //}
        if(opp.Shipped_Status__c !=null && opp.Shipped_Status__c !=''){
            conditions.add('Shipped_Status__c Like\'%' +opp.Shipped_Status__c +'%\' ');
        }
        
        
        
        if (conditions.size() > 0) {
            strQueryopp += '  WHERE ' + conditions[0];
            for (Integer i = 1; i < conditions.size(); i++)
                strQueryopp += '  AND ' + conditions[i];
        }
        if(totalRecs !=null && totalRecs ==0){
            List<Opportunity> accOpp = Database.query(strQueryopp);
            totalRecs = (accOpp !=null &&accOpp.size()>0)?accOpp.size():0;
        }
        
        system.debug('strQueryopp ==>'+strQueryopp );
        // add sort and limits at the end  
        strQueryopp += ' ORDER BY Name  ASC, CreatedDate DESC LIMIT :LimitSize OFFSET :OffsetSize';
        
        oppList  =Database.query(strQueryopp);
        
        
        
        //conditions.clear();
        //return accountList.size();
    }


    public void searchContacts(){
        
        System.debug('Total Records is ==>'+totalRecs);
        System.debug('OffsetSize is ==>'+OffsetSize);
        
        if(contactList != null && !contactList.isEmpty()){
            contactList.clear();
        }
        String strQueryCon ='SELECT Id,Email,LeadSource, AccountId, Name,Phone  From Contact';
        if(con.CreatedById !=null){
            String fromDate = con.CreatedById+'';
            fromDate = fromDate.split(' ',0)[0]+'T00:00:00.000Z';
            conditions.add('CreatedDate >='+fromDate);
        }
        
        if(con.AccountId !=null){
            String toDate = con.AccountId+'';
            toDate = toDate.split(' ',0)[0]+'T23:59:59.000Z';
            conditions.add('createdDate <='+toDate);
        }
        
        if(con.Name !=null && con.Name !=''){
            conditions.add('Name Like \'%' +con.Name +'%\' ');
        }
        if(con.Email !=null && con.Email !=''){
            conditions.add('Email Like\'%' +con.Email +'%\' ');
        }
        if(con.Phone !=null && con.Phone !=''){
            conditions.add('Phone Like\'%' +con.Phone +'%\' ');
        }
        if(con.LeadSource !=null && con.LeadSource !=''){
            conditions.add('LeadSource Like\'%' +con.LeadSource +'%\' ');
        }

        
        if (conditions.size() > 0) {
            strQueryCon += '  WHERE ' + conditions[0];
            for (Integer i = 1; i < conditions.size(); i++)
                strQueryCon += '  AND ' + conditions[i];
        }
        if(totalRecs !=null && totalRecs ==0){
            List<Contact> accCon = Database.query(strQueryCon);
            totalRecs = (accCon !=null &&accCon.size()>0)?accCon.size():0;
        }
        
        system.debug('strQueryCon ==>'+strQueryCon );
        // add sort and limits at the end  
        strQueryCon += ' ORDER BY Name  ASC, CreatedDate DESC LIMIT :LimitSize OFFSET :OffsetSize';
        
        contactList  =Database.query(strQueryCon);
        system.debug('contactList'+contactList);
        
         //pb1Rendered = true;

        //return null;
        //conditions.clear();
        //return accountList.size();
    }
    
     public Void searchLeads(){
        
        System.debug('Total Records is ==>'+totalRecs);
        System.debug('OffsetSize is ==>'+OffsetSize);
        
        if(ledList != null && !ledList.isEmpty()){
            ledList.clear();
        }
        String strQueryLd ='SELECT Name, Status,Category_interested_in__c,Category_Type__c,Country__c,LeadSource,Industry From Lead';
        if(ld.CreatedById !=null){
            String fromDate = ld.CreatedById+'';
            fromDate = fromDate.split(' ',0)[0]+'T00:00:00.000Z';
            conditions.add('CreatedDate >='+fromDate);
        }
        
        //if(ld.AccountId !=null){
            //String toDate = ld.AccountId+'';
            //toDate = toDate.split(' ',0)[0]+'T23:59:59.000Z';
            //conditions.add('createdDate <='+toDate);
        //}
        
        if(ld.Name !=null && ld.Name !=''){
            conditions.add('Name Like \'%' +ld.Name +'%\' ');
        }
        if(ld.Status !=null && ld.Status !=''){
            conditions.add('Status Like\'%' +ld.Status +'%\' ');
        }
        if(ld.Category_interested_in__c !=null && ld.Category_interested_in__c !=''){
            conditions.add('Category_interested_in__c Like\'%' +ld.Category_interested_in__c +'%\' ');
        }
        if(ld.LeadSource !=null && ld.LeadSource !=''){
            conditions.add('LeadSource Like\'%' +ld.LeadSource +'%\' ');
        }
          if(ld.Category_Type__c !=null && ld.Category_Type__c !=''){
            conditions.add('Category_Type__c Like\'%' +ld.Category_Type__c +'%\' ');
        }
          if(ld.Country__c !=null && ld.Country__c !=''){
            conditions.add('Country__c Like\'%' +ld.Country__c +'%\' ');
        }
          if(ld.Industry !=null && ld.Industry !=''){
            conditions.add('Industry Like\'%' +ld.Industry +'%\' ');
        }

        
        if (conditions.size() > 0) {
            strQueryLd += '  WHERE ' + conditions[0];
            for (Integer i = 1; i < conditions.size(); i++)
                strQueryLd += '  AND ' + conditions[i];
        }
        if(totalRecs !=null && totalRecs ==0){
            List<Lead> accLd = Database.query(strQueryLd);
            totalRecs = (accLd !=null &&accLd.size()>0)?accLd.size():0;
        }
        system.debug('strQueryLd ==>'+strQueryLd );
        // add sort and limits at the end  
        strQueryLd += ' ORDER BY Name  ASC, CreatedDate DESC LIMIT :LimitSize OFFSET :OffsetSize';
        
        ledList  =Database.query(strQueryLd);
         system.debug('ledList'+ledList);
        
        
        
        //conditions.clear();
        //return accountList.size();
    }
    
    public list<selectoption> getdw(){
        
        List<SelectOption> options = new List<SelectOption>();
        List<Folder> Folders = [Select Id, Name From Folder Where type = 'Email'];
        for(Folder F : Folders){  
            options.add(new SelectOption(F.Name, F.Name));
            //options.add(new selectOption('F.Unified public Email Template','F.Unified public Email Template'));
            //options.add(new selectOption('F.My Personal Email Template ','F.My Personal Email Template'));
        }
        return options;
    }
    
    public list<selectoption> getName() {
        
        List<SelectOption> options = new List<SelectOption>();
        List<EmailTemplate> et = [SELECT Id,Name, DeveloperName, FolderId, Folder.DeveloperName FROM EmailTemplate ];
        for( EmailTemplate  e : et)
        {
            options.add(new SelectOption(e.id, e.Name));
        }
        return options;
    }
    public void send(){
         //List<contact> lstcon=[Select id from contact];
       List<Id> lstids= new List<Id>();
         system.debug('lstIds'+lstIds);
        system.debug('lstids'+lstids);
        for(Contact c:contactList)
        {
            lstIds.add(c.id);
        }
        //List<Lead> lstld= [Select id, Name from Lead];
        //system.debug('lstld'+lstld);
        system.debug('ledList'+ledList);
        for(Lead l:ledList)
        {
            lstIds.add(l.id);
        }
          for(Opportunity o:oppList)
        {
            lstIds.add(o.id);
        }
         
       
        EmailTemplate et1=[SELECT Id,Name, DeveloperName, FolderId, Folder.DeveloperName FROM EmailTemplate limit 1];
        system.debug('et'+et);
        
        Messaging.MassEmailMessage mail = new Messaging.MassEmailMessage();
        mail.setTargetObjectIds(lstIds);
        system.debug('lstIds'+lstIds);
        mail.setSenderDisplayName('System Admin');
        mail.setTemplateId(et1.id);
        Messaging.sendEmail(new Messaging.MassEmailMessage[] { mail });
    }
}


 
public class DynamicCopy {
public String selectedSObject {get;set;}

    public List<SelectOption> objects = new List<SelectOption>();

    public List<String> recordList {get;set;}//this list will hold record from selected sObject

    public String selectedRecord {get;set;}
    public string FilterRecords{get;set;}
       public Contact con{get;set;}    

    public Id selectedRecordId {get;set;}
        List<string> conditions = new List<string>();    


     public  DynamicCopy(){
                Con = new Contact();         

    }
    
    /*

    This method will add all sObjectName in sObjectNames list

    */
    
       public List<SelectOption> getSObjectNames(){
       objects.add(new SelectOption('','Select'));
       objects.add(new SelectOption('Account','Account'));
       objects.add(new SelectOption('Lead','Lead'));
       objects.add(new SelectOption('Opportunity','Opportunity'));
       objects.add(new SelectOption('Contact','Contact'));
            system.debug('objects'+objects);
       return objects;
           
    
    }
    public PageReference generateRecordList(){
        try{
            if(selectedSObject != null && selectedSObject != ''){          

                String recordQuery = 'SELECT Id, Name, Email FROM '+selectedSObject+' LIMIT 100';

                List<sObject> records = Database.query(recordQuery);

                recordProcessing(Database.query(recordQuery), true);
                

            }

        } catch(Exception e){

            ApexPages.Message myMsg;
        }
        return null;
    }
    
    public Void FilterRecords(){
        if(selectedSObject != null && selectedSObject != ''){  
            
        }
        String strQuery ='SELECT Name,LeadSource,Phone From Contact WHERE Id!=null '; 
         if(Con.Name !=null && Con.Name !=''){            
            conditions.add('Name Like \'%' +Con.Name +'%\' ');            
        }        
        if(Con.LeadSource !=null && Con.LeadSource !=''){            
            conditions.add('LeadSource Like\'%' +Con.LeadSource +'%\' ');            
        }

        
        
    }

     public void recordProcessing(List<sObject> records, boolean nameIncluded){

        if(recordList == null){

            recordList = new List<String>();

        } else{

            recordList.clear();

        }

        for(sObject sObj : records){

            String recordName;

            if(nameIncluded){

            recordName = String.valueOf(sObj.get('Name'))+' - '+String.valueOf(sObj.get('Id'));

            } else{

                recordName = String.valueOf(sObj.get('Id'));

            }

            recordList.add(recordName);

        }

        

        if(recordList.size() == 0){

            ApexPages.Message myMsg = new ApexPages.Message(ApexPages.Severity.INFO,'No record found for this sObject!!');

            ApexPages.addMessage(myMsg);

        }

    }


}

<apex:page controller="DynamicCopy" sidebar="false">
    <apex:form id="pageForm">
        <apex:pageMessages />
        <apex:selectList label="Select Object Name" title="Select Object Name" multiselect="false" value="{!selectedSObject}" size="1">
            <apex:actionSupport event="onchange" action="{!generateRecordList}" reRender="pageForm"/> 
            <apex:selectOptions value="{!SObjectNames}" /> 
        </apex:selectList>
         <table border="2px">

         <apex:dataList id="output" value="{!recordList}" var="r">
         {!r}
        </apex:dataList>
             
       </table>

        

    </apex:form>
</apex:page>

Can Someone help me how to add a filter condition to page depend on each object.
public class mycontroller {
    public string currentobject {get; set;}
    public string currentfield {get; set;}
    public String Items {get;set;}
    //List<account> AccountToDelete = new List<account> ();
    public List<Contact> conlist {get;set;}
    //public List <sObject> conlist {get;set;}

            
        public List<SelectOption> getobjects() {
       List<SelectOption> objects = new List<SelectOption>();
       objects.add(new SelectOption('','Select'));
       objects.add(new SelectOption('Account','Account'));
       objects.add(new SelectOption('Lead','Lead'));
       objects.add(new SelectOption('Opportunity','Opportunity'));
       objects.add(new SelectOption('Contact','Contact'));
            system.debug('objects'+objects);
            
       return objects;


<apex:page controller="mycontroller">
    <apex:form id="form">
        <apex:pageBlock >
            <apex:pageBlockSection columns="1">
                <apex:pageBlockSectionItem >
                    <apex:outputLabel >Objects</apex:outputLabel>
                    <apex:selectList size="1" value="{!currentobject}">
                        <apex:selectOptions value="{!objects}"/>
                        <apex:selectOptions value="{!Items}"/>
                        
                        <apex:actionSupport event="onchange" action="{!getobjects}" reRender="form"/>
                        
                        
                         
                
                    </apex:selectList>
                                           
                </apex:pageBlockSectionItem>
            </apex:pageBlockSection>
            
                

        </apex:pageBlock>
    </apex:form>
</apex:page>

Can anybody help with the logic?
OR(
ISNEW() ,
AND(
[AdditionalInfo__c].RecordType.DeveloperName = "Ritual_Certificate",
[AdditionalInfo__c].Award__c <> NULL  ,
ISPICKVAL([AdditionalInfo__c].InfoType__c, 'Awards') 
 ) 
)
 
({
    doInit : function(component, event, helper) {
        var action = component.get("c.cloneAnySobjet");
        action.setParams({"recordId": component.get("v.recordId")});
        action.setCallback(this, function(response) {
            var state = response.getState();
            if(state === "SUCCESS") {
                var sObjectEvent = $A.get("e.force:navigateToSObject");
                sObjectEvent.setParams({
                    "recordId": response.getReturnValue(),
                    "slideDevName": "detail"
                });
                sObjectEvent.fire();
            }else if (state === "ERROR"){
                var errors = response.getError();
                if(errors) {
                    cmp.set("v.errorMsg", errors[0].message);
                    var errorMsg = cmp.find('errorMsg');
                    $A.util.removeClass(errorMsg, 'slds-hide');
                    var field = cmp.find('field');
                    $A.util.addClass(field, 'slds-hide');
                }
            }
        });
        $A.enqueueAction(action);
    },
})
public with sharing class MultipleSearchObjects {
    public Account acc{get;set;}
    public Contact con{get;set;}
    public Opportunity opp{get;set;}
    public Lead ld{get;set;}
    public List<Account> accountList {get;set;}
    public List<Contact> contactList {get;set;}
    public List<Opportunity> oppList {get;set;}
    public List<Lead> ledList{get;set;}
    public String selectedSObject {get;set;}
     public List<SelectOption> objects = new List<SelectOption>();
      public List<SelectOption> options = new List<SelectOption>();
    public List<String> recordList {get;set;}
    public String selectedRecord {get;set;}
    public boolean pb1Rendered{get;set;}
    public boolean pb2Rendered{get;set;}
    public boolean pb3Rendered{get;set;}
    public String RES { get; set; }
    public String body { get; set; }
    public String send{get;set;}
    public String Folder { get; set; }
    public String Cc { get; set; }
    public String subject { get; set; }
    public  string template{get;set;}
    public string strQueryLd;
    public EmailTemplate et{get;set;}
    public string selectedTemplate;

    public Contact con1{get;set;}
            public Set<Id> contactIdSet = new Set<Id>();
    // create a list of strings to hold the conditions
    public List<string> conditions = new List<string>();
    List<Date> dates= new List<Date>();
    private integer totalRecs = 0;
    private integer OffsetSize = 0;
    private integer LimitSize= 10;
    
    public MultipleSearchObjects(){
        system.debug('==>AccountMultipleSearchWithPagenationCLS  is calling==>');
        acc = new Account();
        con = new Contact();
        ld  = new Lead();
        opp = new Opportunity();
        contactList = new List<Contact>();
        ledList = new List<Lead>();
        oppList = new List<Opportunity>();
        //accLd = new list<Lead>();
        pb1Rendered =pb2Rendered = pb3Rendered = false;
        selectedSObject = '';
        //accountList  = new List<Account>();
    }
      public PageReference refresh() {
        return null;
    }
    public void preview(){
        system.debug('text');
        // do nothing
    }
    
        public void searchCon(){
        totalRecs = 0;
        OffsetSize = 0;
        if(contactList !=null && contactList.size()>0){
            contactList=null;
        }
        searchContacts ();
        conditions.clear();
    }
      public void searchLd(){
        totalRecs = 0;
        OffsetSize = 0;
        if(ledList !=null && ledList.size()>0){
            ledList=null;
        }
        searchLeads();
        conditions.clear();
    }


    
     public void onChangeFnCall(){
        if(selectedSObject== 'Contact'){
            pb2Rendered = true;
            pb3Rendered = false;
            pb1Rendered = false;
        }
        else if(selectedSObject== 'Lead'){
            pb2Rendered = false;
            pb3Rendered = true;
            pb1Rendered = false;
        }
        else if(selectedSObject == 'Opportunity'){
            pb2Rendered = false;
            pb3Rendered = false;
            pb1Rendered = true;
        }
    }
    
     public void FirstPage()
    {
        OffsetSize = 0;
        //searchContacts();
        //searchLeads();
        system.debug('Hello');
        

        
    }
    public void previous()
    {
        OffsetSize = (OffsetSize-LimitSize);
        //searchContacts();
        //searchLeads();
        system.debug('Hello');
    }
    public void next()
    {
        OffsetSize = OffsetSize + LimitSize;
        //searchContacts();
        //searchLeads();
        system.debug('OffsetSize'+OffsetSize);
    }
    public void LastPage()
    {
        OffsetSize = totalrecs - math.mod(totalRecs,LimitSize);
        //searchContacts();
        //searchLeads();
    }
    public boolean getprev()
    {
        
        if(OffsetSize == 0){
            
            return true;
        }
        else {
            
            return false;
        }
    }
    public boolean getnxt()
    {
        if((OffsetSize + LimitSize) > totalRecs){
            
            return true;
        }
        else {
            
            return false;
        }
    }
    public void searchAcc(){
        totalRecs = 0;
        OffsetSize = 0;
        if(accountList !=null && accountList.size()>0){
            accountList=null;
        }
        searchAccounts ();
        conditions.clear();
    }
  
     public List<SelectOption> getSObjectNames(){
       objects.add(new SelectOption('','Select'));
       objects.add(new SelectOption('Account','Account'));
       objects.add(new SelectOption('Lead','Lead'));
       objects.add(new SelectOption('Opportunity','Opportunity'));
       objects.add(new SelectOption('Contact','Contact'));
            system.debug('objects'+objects);
       return objects;
           
    
    }
    
    public Void searchOpp(){
        
        System.debug('Total Records is ==>'+totalRecs);
        System.debug('OffsetSize is ==>'+OffsetSize);
        
        if(oppList != null && !oppList.isEmpty()){
            oppList.clear();
        }
        String strQueryopp ='SELECT Name, StageName,Type,Industry__c, FiscalYear, Country__c,Category_interested_in2__c,CloseDate,Shipped_Status__c From Opportunity';
        if(opp.CreatedById !=null){
            String fromDate = opp.CreatedById+'';
            fromDate = fromDate.split(' ',0)[0]+'T00:00:00.000Z';
            conditions.add('CreatedDate >='+fromDate);
        }
        
        if(opp.CreatedById !=null){
            String toDate = opp.CreatedById+'';
            toDate = toDate.split(' ',0)[0]+'T23:59:59.000Z';
            conditions.add('createdDate <='+toDate);
        }
        
        if(opp.StageName !=null && opp.StageName !=''){
            conditions.add('StageName Like \'%' +opp.StageName +'%\' ');
        }
         
        if(opp.Type !=null && opp.Type !=''){
            conditions.add('Type Like\'%' +opp.Type +'%\' ');
        }
        if(opp.Industry__c !=null && opp.Industry__c !=''){
            conditions.add('Industry__c Like\'%' +opp.Industry__c +'%\' ');
        }
          if(opp.Country__c !=null && opp.Country__c !=''){
            conditions.add('Country__c Like\'%' +opp.Country__c +'%\' ');
        }
        if(opp.Category_interested_in2__c !=null && opp.Category_interested_in2__c !=''){
            conditions.add('Category_interested_in2__c Like\'%' +opp.Category_interested_in2__c +'%\' ');
        }
         //if(opp.CloseDate !=null && opp.CloseDate !=''){
           // conditions.add('CloseDate Like\'%' +opp.CloseDate +'%\' ');
        //}
        if(opp.Shipped_Status__c !=null && opp.Shipped_Status__c !=''){
            conditions.add('Shipped_Status__c Like\'%' +opp.Shipped_Status__c +'%\' ');
        }
        
        
        
        if (conditions.size() > 0) {
            strQueryopp += '  WHERE ' + conditions[0];
            for (Integer i = 1; i < conditions.size(); i++)
                strQueryopp += '  AND ' + conditions[i];
        }
        if(totalRecs !=null && totalRecs ==0){
            List<Opportunity> accOpp = Database.query(strQueryopp);
            totalRecs = (accOpp !=null &&accOpp.size()>0)?accOpp.size():0;
        }
        
        system.debug('strQueryopp ==>'+strQueryopp );
        // add sort and limits at the end  
        strQueryopp += ' ORDER BY Name  ASC, CreatedDate DESC LIMIT :LimitSize OFFSET :OffsetSize';
        
        oppList  =Database.query(strQueryopp);
        
        
        
        //conditions.clear();
        //return accountList.size();
    }


    public void searchContacts(){
        
        System.debug('Total Records is ==>'+totalRecs);
        System.debug('OffsetSize is ==>'+OffsetSize);
        
        if(contactList != null && !contactList.isEmpty()){
            contactList.clear();
        }
        String strQueryCon ='SELECT Id,Email,LeadSource, AccountId, Name,Phone  From Contact';
        if(con.CreatedById !=null){
            String fromDate = con.CreatedById+'';
            fromDate = fromDate.split(' ',0)[0]+'T00:00:00.000Z';
            conditions.add('CreatedDate >='+fromDate);
        }
        
        if(con.AccountId !=null){
            String toDate = con.AccountId+'';
            toDate = toDate.split(' ',0)[0]+'T23:59:59.000Z';
            conditions.add('createdDate <='+toDate);
        }
        
        if(con.Name !=null && con.Name !=''){
            conditions.add('Name Like \'%' +con.Name +'%\' ');
        }
        if(con.Email !=null && con.Email !=''){
            conditions.add('Email Like\'%' +con.Email +'%\' ');
        }
        if(con.Phone !=null && con.Phone !=''){
            conditions.add('Phone Like\'%' +con.Phone +'%\' ');
        }
        if(con.LeadSource !=null && con.LeadSource !=''){
            conditions.add('LeadSource Like\'%' +con.LeadSource +'%\' ');
        }

        
        if (conditions.size() > 0) {
            strQueryCon += '  WHERE ' + conditions[0];
            for (Integer i = 1; i < conditions.size(); i++)
                strQueryCon += '  AND ' + conditions[i];
        }
        if(totalRecs !=null && totalRecs ==0){
            List<Contact> accCon = Database.query(strQueryCon);
            totalRecs = (accCon !=null &&accCon.size()>0)?accCon.size():0;
        }
        
        system.debug('strQueryCon ==>'+strQueryCon );
        // add sort and limits at the end  
        strQueryCon += ' ORDER BY Name  ASC, CreatedDate DESC LIMIT :LimitSize OFFSET :OffsetSize';
        
        contactList  =Database.query(strQueryCon);
        system.debug('contactList'+contactList);
        
         //pb1Rendered = true;

        //return null;
        //conditions.clear();
        //return accountList.size();
    }
    
     public Void searchLeads(){
        
        System.debug('Total Records is ==>'+totalRecs);
        System.debug('OffsetSize is ==>'+OffsetSize);
        
        if(ledList != null && !ledList.isEmpty()){
            ledList.clear();
        }
        String strQueryLd ='SELECT Name, Status,Category_interested_in__c,Category_Type__c,Country__c,LeadSource,Industry From Lead';
        if(ld.CreatedById !=null){
            String fromDate = ld.CreatedById+'';
            fromDate = fromDate.split(' ',0)[0]+'T00:00:00.000Z';
            conditions.add('CreatedDate >='+fromDate);
        }
        
        //if(ld.AccountId !=null){
            //String toDate = ld.AccountId+'';
            //toDate = toDate.split(' ',0)[0]+'T23:59:59.000Z';
            //conditions.add('createdDate <='+toDate);
        //}
        
        if(ld.Name !=null && ld.Name !=''){
            conditions.add('Name Like \'%' +ld.Name +'%\' ');
        }
        if(ld.Status !=null && ld.Status !=''){
            conditions.add('Status Like\'%' +ld.Status +'%\' ');
        }
        if(ld.Category_interested_in__c !=null && ld.Category_interested_in__c !=''){
            conditions.add('Category_interested_in__c Like\'%' +ld.Category_interested_in__c +'%\' ');
        }
        if(ld.LeadSource !=null && ld.LeadSource !=''){
            conditions.add('LeadSource Like\'%' +ld.LeadSource +'%\' ');
        }
          if(ld.Category_Type__c !=null && ld.Category_Type__c !=''){
            conditions.add('Category_Type__c Like\'%' +ld.Category_Type__c +'%\' ');
        }
          if(ld.Country__c !=null && ld.Country__c !=''){
            conditions.add('Country__c Like\'%' +ld.Country__c +'%\' ');
        }
          if(ld.Industry !=null && ld.Industry !=''){
            conditions.add('Industry Like\'%' +ld.Industry +'%\' ');
        }

        
        if (conditions.size() > 0) {
            strQueryLd += '  WHERE ' + conditions[0];
            for (Integer i = 1; i < conditions.size(); i++)
                strQueryLd += '  AND ' + conditions[i];
        }
        if(totalRecs !=null && totalRecs ==0){
            List<Lead> accLd = Database.query(strQueryLd);
            totalRecs = (accLd !=null &&accLd.size()>0)?accLd.size():0;
        }
        system.debug('strQueryLd ==>'+strQueryLd );
        // add sort and limits at the end  
        strQueryLd += ' ORDER BY Name  ASC, CreatedDate DESC LIMIT :LimitSize OFFSET :OffsetSize';
        
        ledList  =Database.query(strQueryLd);
         system.debug('ledList'+ledList);
        
        
        
        //conditions.clear();
        //return accountList.size();
    }
    
    public list<selectoption> getdw(){
        
        List<SelectOption> options = new List<SelectOption>();
        List<Folder> Folders = [Select Id, Name From Folder Where type = 'Email'];
        for(Folder F : Folders){  
            options.add(new SelectOption(F.Name, F.Name));
            //options.add(new selectOption('F.Unified public Email Template','F.Unified public Email Template'));
            //options.add(new selectOption('F.My Personal Email Template ','F.My Personal Email Template'));
        }
        return options;
    }
    
    public list<selectoption> getName() {
        
        List<SelectOption> options = new List<SelectOption>();
        List<EmailTemplate> et = [SELECT Id,Name, DeveloperName, FolderId, Folder.DeveloperName FROM EmailTemplate ];
        for( EmailTemplate  e : et)
        {
            options.add(new SelectOption(e.id, e.Name));
        }
        return options;
    }
    public void send(){
         //List<contact> lstcon=[Select id from contact];
       List<Id> lstids= new List<Id>();
         system.debug('lstIds'+lstIds);
        system.debug('lstids'+lstids);
        for(Contact c:contactList)
        {
            lstIds.add(c.id);
        }
        //List<Lead> lstld= [Select id, Name from Lead];
        //system.debug('lstld'+lstld);
        system.debug('ledList'+ledList);
        for(Lead l:ledList)
        {
            lstIds.add(l.id);
        }
          for(Opportunity o:oppList)
        {
            lstIds.add(o.id);
        }
         
       
        EmailTemplate et1=[SELECT Id,Name, DeveloperName, FolderId, Folder.DeveloperName FROM EmailTemplate limit 1];
        system.debug('et'+et);
        
        Messaging.MassEmailMessage mail = new Messaging.MassEmailMessage();
        mail.setTargetObjectIds(lstIds);
        system.debug('lstIds'+lstIds);
        mail.setSenderDisplayName('System Admin');
        mail.setTemplateId(et1.id);
        Messaging.sendEmail(new Messaging.MassEmailMessage[] { mail });
    }
}