• dhruv arora
  • NEWBIE
  • 60 Points
  • Member since 2016

  • Chatter
    Feed
  • 0
    Best Answers
  • 0
    Likes Received
  • 0
    Likes Given
  • 12
    Questions
  • 5
    Replies
Hello,
i have a trigger which calls a handler which further calls a helper. What it basically does is update a field on lead and contact whenever a new task is inserted or updated on lead and contact object.
Also this trigger only works for two specific profiles that i have stored in a custom label.
Code is below:

Trigger: TaskUpdate


trigger TaskUpdateTrigger on Task (after insert,after update) {  
    if(Trigger.isAfter)
    {
        if(Label.TaskTriggerSFDCUse.contains(UserInfo.getProfileId())){
            if(Trigger.isInsert) {
                TaskTriggerHandler.afterInsertHandler(Trigger.new);
            }
            if(Trigger.isUpdate) {
                TaskTriggerHandler.afterUpdateHandler(Trigger.new, Trigger.oldMap);
            }
        }
    }
    
}


TaskTriggerHandler:

public class TaskTriggerHandler{
     public static void afterInsertHandler(List<Task> newList){
        Set<Id> LeadIds = new Set<Id>();
        Map<Id,Lead> callMadeInfoLdIds = new Map<Id,Lead>();
        for (Task each : newList){            
            // call this to fill collections to be used for processing
            TaskTriggerHelper.collectionGenAfterInsert(each,leadIds,callMadeInfoLdIds);  
        } 
         system.debug(LeadIds);
         system.debug(callMadeInfoLdIds);
        if(!LeadIds.isEmpty() || !callMadeInfoLdIds.isEmpty()) TaskTriggerHelper.leadUpdateHandler(leadIds,callMadeInfoLdIds);
    }
    
     public static void afterUpdateHandler(List<Task> newList, Map<Id,Task> oldMap){
         Set<Id> leadIds = new Set<Id>();
         Map<Id,Lead> callMadeInfoLdIds = new Map<Id,Lead>();
         for (Task each : newList){            
            // call this to fill collections to be used for processing
            TaskTriggerHelper.collectionGenAfterUpdate(each,oldMap.get(each.Id),LeadIds,callMadeInfoLdIds);  
        }
        if(!LeadIds.isEmpty() || !callMadeInfoLdIds.isEmpty()) TaskTriggerHelper.leadUpdateHandler(leadIds,callMadeInfoLdIds);
     }
     
}

TaskTriggerHelper:

public class TaskTriggerHelper{
    
    public static void collectionGenAfterInsert(Task t,Set<Id> leadIds,Map<Id,Lead> callMadeInfoLdIds){
        if(t.whoId != null && ((''+t.whoId).startsWith('00Q') || (''+t.whoId).startsWith('003'))){
            system.debug('abcd'+t.whoId);
            if(String.isNotBlank(t.Subject)){
                if(isTaskQualified(t, null)){
                    leadIds.add(t.whoId);
                }
            }
            if(t.Call_Made__c && t.Call_Back_Date_Time__c != null && (''+t.whoId).startsWith('00Q')) {
                Lead ld = new Lead();
                ld.Call_Made__c = true;
                ld.Call_Back_Date_Time__c = t.Call_Back_Date_Time__c;
                callMadeInfoLdIds.put(t.whoId, ld);  
            }  
        }
    }
    
    public static void collectionGenAfterUpdate(Task newTask,Task oldTask,Set<Id> leadIds,Map<Id,Lead> callMadeInfoLdIds){
            if(newTask.whoId != null && (''+newTask.whoId).startsWith('00Q')){
                if(String.isNotBlank(newTask.Subject)){
                    if(!isTaskQualified(newTask, oldTask)){
                        leadIds.add(newTask.whoId);
                        system.debug('lead id is:' + leadIds);
                    }
                }

                if(newTask.Call_Made__c && newTask.Call_Back_Date_Time__c != null &&
                 (newTask.Call_Made__c != oldTask.Call_Made__c || newTask.Call_Back_Date_Time__c != oldTask.Call_Back_Date_Time__c)) {
                     Lead ld = new Lead();
                     ld.Call_Made__c = true;
                     ld.Call_Back_Date_Time__c = newTask.Call_Back_Date_Time__c;
                     callMadeInfoLdIds.put(newTask.whoId, ld);  
                 }
            }
            if(oldTask.whoId != null && (''+oldTask.whoId).startsWith('00Q')) {
                //leadIds.add(oldTask.whoId);  
            }
            System.Debug('----------'+leadIds);
    }

    public static void leadUpdateHandler(Set<Id> recIds,Map<Id,Lead> callMadeInfoLdIds){
        List<Sobject> recordsToUpdate = new List<Sobject>();
        Set<Id> recordsToQuery = new Set<Id>(recIds);
        Date todayDate = Date.today();
        if(!recIds.isEmpty()){
            recordsToQuery.addAll(recIds);
        } 
        if(callMadeInfoLdIds != null && !callMadeInfoLdIds.isEmpty()){
            recordsToQuery.addAll(callMadeInfoLdIds.keySet());
        }
        system.debug(recordsToQuery);
        
        if(!recordsToQuery.isEmpty()){
            ID objId = new List<ID>(recordsToQuery)[0];
            Boolean isLeadObject = (String.valueof(objId).startsWith('00Q')) ? true : false; 
            String qryStr = generateQuery(recordsToQuery);
            system.debug('qryStr'+ qryStr);
            if(isLeadObject){
                for(Lead each : DataBase.query(qryStr)){
                    Boolean isAnyFieldUpdated = false;
                    if(recIds.contains(each.Id)){
                        List<Task> tasks = (List<Task>)each.Tasks;
                        system.debug('tasks'+ tasks);
                        List<Event> events = each.Events;
                        system.debug('events'+ events);
                        Integer noOfOutReach = tasks.size() + events.size();
                        system.debug('noOfOutReach'+ noOfOutReach);
                        if(each.SalesLoft_Attempts__c != noOfOutReach){
                            each.SalesLoft_Attempts__c = noOfOutReach;
                            isAnyFieldUpdated = true;
                        }
                        if(Trigger.isInsert && each.Latest_Outreach_Activity_Date__c != todayDate){
                            each.Latest_Outreach_Activity_Date__c = todayDate;
                            isAnyFieldUpdated = true;
                        }
                    }                
                    if(callMadeInfoLdIds != null && callMadeInfoLdIds.containsKey(each.Id)){
                        Lead temp = callMadeInfoLdIds.get(each.Id);
                        if(each.Call_Made__c != temp.Call_Made__c){
                            each.Call_Made__c = temp.Call_Made__c;
                            isAnyFieldUpdated = true;                        
                        }
                        if(each.Call_Back_Date_Time__c != temp.Call_Back_Date_Time__c){
                            each.Call_Back_Date_Time__c = temp.Call_Back_Date_Time__c;
                            isAnyFieldUpdated = true;
                        }
                    }
                    if(isAnyFieldUpdated){
                        recordsToUpdate.add(each);
                    }
                }
            }else{
                for(Contact each : DataBase.query(qryStr)){
                    Boolean isAnyFieldUpdated = false;
                    if(recIds.contains(each.Id)){
                        List<Task> tasks = (List<Task>)each.Tasks;
                        system.debug('tasks'+ tasks);
                        List<Event> events = each.Events;
                        system.debug('events'+ events);
                        Integer noOfOutReach = tasks.size() + events.size();
                        system.debug('noOfOutReach'+ noOfOutReach);
                        if(each.SalesLoft_Attempts__c != noOfOutReach){
                            each.SalesLoft_Attempts__c = noOfOutReach;
                            isAnyFieldUpdated = true;
                        }
                    }
                    if(isAnyFieldUpdated){
                        recordsToUpdate.add(each);
                    }
                }
            }
        }
        if(!recordsToUpdate.isEmpty()){
            Database.update(recordsToUpdate,false);
        }
    }
    
    public static Map<String,Set<String>> metaMap = new Map<String,Set<String>>();
    public static Map<String, Set<String>> getsubjectFilter(){
        if(metaMap.isEmpty()){
            for(SalesLoft_Attempts_Management__mdt meta : [SELECT Id, MasterLabel, Filter__c, Keywords__c FROM SalesLoft_Attempts_Management__mdt]){
                if(meta.Keywords__c != null){
                    if(metaMap.containsKey(meta.Filter__c)){
                        metaMap.get(meta.Filter__c).addAll(new Set<String>(meta.Keywords__c.split(',')));
                    }else{
                        metaMap.put(meta.Filter__c, new Set<String>(meta.Keywords__c.split(',')));
                    }
                }
            }
        }
        return metaMap;
    }
    
    public static Boolean isTaskQualified(Task newTask, Task oldTask){
        Map<String,Set<String>> subMap = getsubjectFilter();
        for(String FILTER : subMap.keySet()){
            Set<String> valueSet = subMap.get(FILTER);
            for(String val : valueSet){
                if(FILTER == 'STARTS WITH'){
                    if(oldTask != null){
                        if((newTask.Subject.startsWithIgnoreCase(val) && !oldTask.Subject.startsWith(val)) || (oldTask.Subject.startsWithIgnoreCase(val) && !newTask.Subject.startsWith(val))){
                            return true;
                        }
                    }else{
                        if(newTask.Subject.startsWithIgnoreCase(val)){
                            return true;
                        }
                    }
                }else if(FILTER == 'CONTAINS'){
                    if(oldTask != null){
                        if((newTask.Subject.containsIgnoreCase(val) && !oldTask.Subject.containsIgnoreCase(val)) || (oldTask.Subject.containsIgnoreCase(val) && !newTask.Subject.containsIgnoreCase(val))){
                            return true;
                        }
                    }else{
                        if(newTask.Subject.containsIgnoreCase(val)){
                            return true;
                        }
                    }
                }else if(FILTER == 'EQUAL'){
                    if(oldTask != null){
                        if((newTask.Subject.equalsIgnoreCase(val) && !oldTask.Subject.equalsIgnoreCase(val)) || (oldTask.Subject.equalsIgnoreCase(val) && !newTask.Subject.equalsIgnoreCase(val))){
                            return true;
                        }
                    }else{
                        if(newTask.Subject.equalsIgnoreCase(val)){
                            return true;
                        }
                    }
                }else if(FILTER == 'ENDS WITH'){
                    if(oldTask != null){
                        if((newTask.Subject.endsWithIgnoreCase(val) && !oldTask.Subject.endsWithIgnoreCase(val)) || (oldTask.Subject.endsWithIgnoreCase(val) && !newTask.Subject.endsWithIgnoreCase(val))){
                            return true;
                        }
                    }else{
                        if(newTask.Subject.endsWithIgnoreCase(val)){
                            return true;
                        }
                    }
                }
            }
        }
        return false;
    }
    
    public static String generateQuery(Set<ID> recIds){
        ID objId = new List<ID>(recIds)[0];
        String qryStr ='';
        String objName = '';
        if(String.valueof(objId).startsWith('003')){
            qryStr = 'SELECT Id, SalesLoft_Attempts__c, (SELECT Id FROM Tasks ';
            objName = 'Contact';
        }else if(String.valueof(objId).startsWith('00Q')){
            qryStr = 'SELECT Id, Call_Made__c, Latest_Outreach_Activity_Date__c, Call_Back_Date_Time__c, SalesLoft_Attempts__c, (SELECT Id FROM Tasks ';
            objName = 'Lead';
        }
        
        Map<String,Set<String>> subMap = getsubjectFilter();
        if(!subMap.isEmpty()){
            qryStr += ' WHERE ';
            for(String FILTER : subMap.keySet()){
                Set<String> valueSet = subMap.get(FILTER);
                for(String val : valueSet){
                    if(FILTER == 'STARTS WITH'){
                        qryStr += ' Subject LIKE \'' + val + '%\' OR ';
                    }else if(FILTER == 'CONTAINS'){
                        qryStr += ' Subject LIKE \'%' + val + '%\' OR ';
                    }else if(FILTER == 'EQUAL'){
                        qryStr += ' Subject = \'' + val + '\' OR ';
                    }else if(FILTER == 'ENDS WITH'){
                        qryStr += ' Subject LIKE \'%' + val + '\' OR ';
                    }
                }
            }
            qryStr = qryStr.removeEnd('OR ');
        }
        qryStr += ' ),( SELECT Id FROM Events ';
        if(!subMap.isEmpty()){
            qryStr += ' WHERE ';
            for(String FILTER : subMap.keySet()){
                Set<String> valueSet = subMap.get(FILTER);
                for(String val : valueSet){
                    if(FILTER == 'STARTS WITH'){
                        qryStr += ' Subject LIKE \'' + val + '%\' OR ';
                    }else if(FILTER == 'CONTAINS'){
                        qryStr += ' Subject LIKE \'%' + val + '%\' OR ';
                    }else if(FILTER == 'EQUAL'){
                        qryStr += ' Subject = \'' + val + '\' OR ';
                    }else if(FILTER == 'ENDS WITH'){
                        qryStr += ' Subject LIKE \'%' + val + '\' OR ';
                    }
                }
            }
            qryStr = qryStr.removeEnd('OR ');
        }
        String objids = '';
        for(Id recid : recIds){
            objids += '\''+recid+'\',';
        }
        objids = objids.removeEnd(',');
        qryStr +=') FROM '+ objName +' WHERE ID IN ('+objids+')';
        
        System.Debug('QUERY SIZE ---- '+qryStr.length()+' ---- FINAL QUERY ----- '+qryStr);
        return qryStr;
    }
    
}
Can someone help me to write test class for this code.

class----

public class MultiSelectCheckbox {

    public Opportunity opp{get;set;}
    
    public list<selectOption> MpOptions{get;set;}

    public MultiSelectCheckbox(ApexPages.StandardController controller) {
    
    opp= (Opportunity)Controller.getRecord();

    }
    
    public list<selectOption> MpOptions(){
    
    List<SelectOption> options = new List<SelectOption>();
    
    for(schema.pickListEntry f : opportunity.Multi_Select_Picklist__c.getDescribe().getPicklistValues())
    
    {
    options.add(new selectOption(f.getValue(),f.getLabel()));
    
    }
    return options;
    }
    
    
public string[] Checkbox{

get{

string[] selected = new list<string>();
list<selectOption> sos = this.MpOptions;
for(selectOption s :sos)
{

if(this.opp.Multi_Select_Picklist__c!=null && this.opp.Multi_Select_Picklist__c.contains(s.getValue()))
{
selected.add(s.getValue());
}
}
return selected;
}

set{

string selectedCheckBox='';
for(string s:value)
{
if(selectedCheckBox=='')
{
selectedCheckBox+=s;
}
else{selectedCheckBox+=';'+s;}
}
opp.Multi_Select_Picklist__c=selectedCheckBox;
}

}

}



vf page----



<apex:page standardController="opportunity" extensions="MultiSelectCheckbox">
  <apex:form >
  
  <apex:pageblock >
  
  
  <apex:pageblocksection >
  
  <apex:inputField value="{!opportunity.name}"/>
  <apex:inputField value="{!opportunity.closedate}"/>
  <apex:inputField value="{!opportunity.stagename}"/>
  
  
  </apex:pageblocksection>
  
  <apex:pageblocksection >
  
  <apex:inputField value="{!opportunity.Multi_Select_Picklist__c}"/>
  <apex:outputLabel value="{!$ObjectType.opportunity.Fields.Multi_Select_Picklist__c.InlineHelpText}"/>
  
  <apex:selectCheckboxes value="{!Checkbox}">
  
      <apex:selectOptions value="{!MpOptions}"/>
  
  </apex:selectCheckboxes>
  
  </apex:pageblocksection>
  
  <apex:pageblockbuttons >
  
  <apex:commandButton value="Save" action="{!Save}"/>
  </apex:pageblockbuttons>
  
  </apex:pageblock>
  </apex:form>
</apex:page>
trigger leadConvert on Lead (after insert) {
 
     LeadStatus convertStatus = [select MasterLabel from LeadStatus where IsConverted = true limit 1 ];
     List<Database.LeadConvert> leadConverts = new List<Database.LeadConvert>();

     for (Lead lead: Trigger.new) {
          if (!lead.isConverted) {
               Database.LeadConvert lc = new Database.LeadConvert();
               String oppName = lead.Name;
               
               lc.setLeadId(lead.Id);
               lc.setOpportunityName(oppName);
              lc.setOwnerId('00528000000Exy6');
              lc.setSendNotificationEmail(true);
               lc.setConvertedStatus(convertStatus.MasterLabel);
               
               leadConverts.add(lc);
          }
     }

     if (!leadConverts.isEmpty()) {
          List<Database.LeadConvertResult> lcr = Database.convertLead(leadConverts);
     }
}
public class abcd{
    public FA_Attestation__c att{set;get;}
    ApexPages.StandardController std;
    public boolean flag {get;set;}
    public id UserCheck {get;set;}
    public boolean flag1 {get;set;}
    public abcd(ApexPages.StandardController FAA2)
    {
        att = (FA_Attestation__c)FAA2.getRecord();
        flag1 = false;
        if(att.Confirmation__c == true)
        {
            flag = true;
        }
        //att =  new FA_Attestation__c();
        //std = FAA2;
    }
    

    public void saveform()
    {
    ApexPages.Message myMsg = new  ApexPages.Message(ApexPages.Severity.ERROR,'Please Check the Are you sure you want to submit the form? ' );        
        ApexPages.Message myMsg1 = new  ApexPages.Message(ApexPages.Severity.ERROR,'Please enter your signature in User Name field' );
        UserCheck = att.user_name__c;
        if(att.Confirmation__c == false && UserCheck == null)
        {   
            ApexPages.addMessage(myMsg);         
            ApexPages.addMessage(myMsg1);             
        }
        else if (att.Confirmation__c == false)
        {            
            ApexPages.addMessage(myMsg); 
        }
        else if (UserCheck == null)
        {            
            ApexPages.addMessage(myMsg1); 
        }
        else
        {
            if(flag1 == false)
            {
                update att;                
            }
            flag1 = true;
            flag = true;
           // std.save();
        }
    }
}
trigger Primaryopp on Opportunity_Product__c (after insert,after update)
 {

     set<id> Oppid = new set<id>();

     for(Opportunity_Product__c Oppproduct : trigger.new)

{

            Oppid.add(Oppproduct.abcd__lookup__c);

      }

     list<opportunity> Opplst =  [SELECT Name,id,(select abcd__Primary__c from Opportunity_Products__r where abcd__Primary__c=True) FROM Opportunity WHERE id in:Oppid];

         system.debug('##lst'+Opplst[0].Opportunity_Products__r.size());

            for(opportunity opp: Opplst)

{

                if(opp.Opportunity_Products__r.size()>1 )

{

                trigger.new[0].addError('you can not check multiple primary opportunity');

                }
               
            }
}
 
trigger owner on Account (before update) {
user u =[select id,firstname from user where firstname='dhruv' limit 1];
list<Account> a = new list<Account>();
for (account acc:trigger.new)
{
    acc.name=u.firstname;
    //a.add(acc);
}
   //update a;   
}

<apex:page tabStyle="Account" controller="ShowdDetailCtrl">
<apex:sectionHeader title="Inline Edit Support" subtitle="Account"/>
<apex:form >
    
<apex:pageBlock title="Account Detail Page">
   <apex:pageBlockButtons LOcation="top">
      <apex:commandButton value="Save" action="{!saveAccount}"/>
   </apex:pageBlockButtons>
   
<apex:pageBlockTable value="{!lstAccountObjs}" var="acc">
<apex:variable value="{!0}" var="count"/>



<apex:column headerValue="Select">
    <apex:facet name="header">
            <apex:outputPanel >
                Select <input type="checkbox" id="selectAll" name="selectAll" onclick="selectAllOrNone();" />
            </apex:outputPanel>
    </apex:facet>
      
     <apex:inputCheckbox styleClass="selectAccount" value="{!acc.isSelected}"/>

</apex:column>

<apex:column headerValue="Account Name">
    <apex:inputtext value="{!acc.name}"/>
</apex:column>

<apex:column headerValue="Phone">
       <apex:inputtext value="{!acc.phone}"/>
       <apex:commandLink value="Remove" action="{!removeAccount}">
        <apex:param name="c" assignTo="{!count}" value="{!count}"/>
        </apeX:commandlink><br/>
        <apex:variable value="{!count+1}" var="count"/>
</apex:column>
</apex:pageBlockTable>
</apex:pageBlock>
</apex:form>

<script>
    function selectAllOrNone(){
            var isSelected = document.getElementById('selectAll').checked;
            var elements = document.getElementsByClassName('selectAccount');
            for (var i = 0; i < elements.length; i++) {
                document.getElementsByClassName('selectAccount')[i].checked = false;
        }
        if(isSelected){
                var elements = document.getElementsByClassName('selectAccount');
                for (var i = 0; i < elements.length; i++) {
                    document.getElementsByClassName('selectAccount')[i].checked = true
            }
        }
    }
</script>
</apex:page>


class------------------------------------------------------------------------------------

public class ShowdDetailCtrl {
    public list<AccountObj> lstAccountObjs {get;set;}
    public Integer count { get; set; }
    
    //CONSTRUCTOR
    public ShowdDetailCtrl(){
        init();
    }
    
    public void init(){
        lstAccountObjs = new list<AccountObj>();
        for(Account acc : [select id,name,phone from account limit 5]){
            lstAccountObjs.add(new AccountObj(acc));
        }
    }
    
    public PageReference removeAccount() {
        lstAccountObjs.remove(count-1);
        return null;
    }
    
    public PageReference saveAccount() {
        List<Account> lstAccounts = new List<Account>();
        if(lstAccountObjs.size() > 0){
            for(AccountObj accObj : lstAccountObjs){
                
                if(accObj.isSelected){
                    System.debug('###CHeckBox'+accObj.name);
                    Account acc = new Account();
                    acc.Name = accObj.name;
                    acc.phone = accObj.phone;
                    acc.Id = accObj.accId;
                    lstAccounts.add(acc);
                }else{
                    System.debug('###CHeckBoxElse '+accObj.name);
                }
            }
            System.debug(lstAccounts.size());
            for(Account a : lstAccounts){
                System.debug('###listItere'+a.name);
                
            }
            if(lstAccounts.size() > 0){
                update lstAccounts;
            }
            init();
        }
        return null;
    }
    
    public class AccountObj{
        public Boolean isSelected{get; set;}
        public String name{get; set;}
        public String phone{get; set;}
        public String accId{get; set;}
        
        public AccountObj(Account acc){
            this.isSelected = false;
            this.name = acc.Name;
            this.phone = acc.Phone;
            this.accId = acc.Id;
        }
    }
}
Create a VF page for managing territories :-
Add/Delete Territories
Add/delete Users from territories
public class AnimalLocator { public class Animal { public Integer id; public String name; public String eats; public String says; } public class AnimalResult { public Animal animal; } public static String getAnimalNameById(Integer id) { Http http = new Http(); HttpRequest request = new HttpRequest(); request.setEndpoint('https://th-apex-http-callout.herokuapp.com/animals/' + id); request.setMethod('GET'); HttpResponse response = http.send(request); AnimalResult result = (AnimalResult) JSON.deserialize(response.getBody(), AnimalResult.class); return result.animal.name; } }
public class MemberPopup 
{

    public document file { get; set; }

    public document textName { get; set; }
    public List<document> memberAddList {get;set;}
    public String memberName {get;set;}
    public Integer rowNum{get;set;}
    
    public MemberPopup()
    {
     
        memberAddList = new List<document>();
        memberAddList.add(new document());
    }
        
    public void AddRow()
    {
        memberAddList.add(new document());
    }
    
    public void delRow()
    {
         memberAddList.remove(rowNum-1);
    }    
    
    public void saveMemb()
    {
    
    for(document g : memberAddList)
{
g.folderid='00l28000000Ngo6';
memberAddList.add(g);
}
    
        insert memberAddList;
        
    }
}
public class  myy{
public integer pagenum{get;set;}
public integer fr{get;set;}
public integer to{get;set;}  

//GETTER SETTER___________________________________________________
Set<Id> i = new Set<Id>();
public integer count{get;set;}
public integer offset { get; set; }
public List<wrap> list1{get;set;}
public boolean Box{get;set;}
public boolean blo{get;set;}
public String search{get;set;}
public String search1{get;set;}
public String a1{get;set;}
public String search3{get;set;}
public integer totalRecs{get;set;}
public integer OffsetSize{get;set;}
public integer LimitSize{get;set;}
public boolean msg{get;set;}
public boolean nude{get;set;}
 public boolean check{get;set;}
 public String Ab{get;set;}
 List<SelectOption> options = new List<SelectOption>();
//CONSTRUCTOR_____________________________________________________   
  public myy(){
  fr= 0;
  pagenum = 0;
  OffsetSize= 0;
  LimitSize= 3;
  totalRecs=0;
  blo=false;
  msg=false;
  nude=true;
Box=false;
}
//ACCOUNT SELECT _______________________________________________________________
    public void abc2() {
    
count= 0;
     if(ab !='none' && ab!=null){
    
      Box=true;
      system.debug(ab);
    totalRecs = [select count() from contact where accountid =:Ab and name LIKE :'%'+ search3 +'%'];
    }
    
    else{
    system.debug(ab);
    Box=false;
    }     
    }
//SEND EMAIL_____________________________________________________________________    
     public PageReference sendmail() {
        
        for(wrap w: list1)
            {
           
            if(w.selected==true)
                {
                blo=false;
                count++;
                
                system.debug(list1.size());
                 Messaging.SingleEmailMessage message = new Messaging.SingleEmailMessage();
                 message.toAddresses = new String[]{w.con.email,w.con.email};
                     message.subject = 'sent by Contact';
                    message.plainTextBody = 'how r u:P.';
                    Messaging.SingleEmailMessage[] messages =new List<Messaging.SingleEmailMessage> {message};
                     Messaging.SendEmailResult[] results = Messaging.sendEmail(messages);   
                     ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Confirm,'Email Sent Successfully'));                                
                     }
                     else{
                     w.selected=false;
                    blo=true;
                    count= 0;
                     }
                     
            }
        return null;
    }
//WRAPPER AND CONTACTS  

     public List<SelectOption> getAccounts() {
        totalRecs = [select count() from contact where accountid =:Ab];
           options.clear();
           options.add(new selectOption('none','----None-----'));
             for(schema.account Acct: [SELECT id,name from account]){
             options.add(new selectOption(Acct.id,Acct.name));
             }
              return options;
         }
         
         public List<wrap> getnew() {
        
         if(OffsetSize!=0){
pagenum = ((OffsetSize/LimitSize)+1);

else{
pagenum = 1;
}
 fr = ((pagenum * LimitSize) - LimitSize + 1);
 
 to = (pagenum * LimitSize);
 if(to >totalRecs){
 to = totalRecs;
 }

              blo = false;
               list1=new List<wrap>();
                if(Ab!=null){
               for(contact c:[select name,email,Phone,AssistantPhone from contact where AccountId=:Ab and name LIKE :'%'+ search3 +'%']){
               if(i.contains(c.id)){
               list1.add(new wrap(c,true));}
               else{
               list1.add(new wrap(c));}
               }}
        return list1;
    }
      
         public class wrap{
        public boolean selected{get;set;}
        public Contact con{get;set;}
        public wrap(contact c1){
        con=c1;
        selected=false;
        }
        public wrap(contact c1,boolean boxs){
        con=c1;
        selected=boxs;
        }
    
    }
 //PAGINATION______________________________________________   
 public void FirstPage()
{
OffsetSize = 0;
}

public void previous()
{
for(wrap w:list1){
    if (w.selected==true){
        i.add(w.con.id);
    }else if(i.contains(w.con.id)){
        i.remove(w.con.id);
    }
}if(OffsetSize>0)
OffsetSize = OffsetSize - LimitSize;
}public void next(){

for(wrap w:list1){
    if (w.selected==true){
        i.add(w.con.id);
    }else if(i.contains(w.con.id)){
        i.remove(w.con.id);
    }
}
OffsetSize = OffsetSize + LimitSize;

}public void LastPage()
{
OffsetSize = totalrecs - math.mod(totalRecs,LimitSize);
}

public boolean getprev(){

if(OffsetSize != 0)
return false;
else
return true;
}

public boolean getnxt()
{

if((OffsetSize + LimitSize) > totalRecs)
return true;
else
return false;
}
}
public class accountsearch {

public string Aname{get;set;}

public string Aphone{get;set;}

public list<account> searchaccounts{get;set;}

public accountsearch()

{

searchaccounts = new list<account>();

string s = 'select id,name,phone,industry from account';

searchaccounts = database.query(s);

}

public pageReference saerch()

{

string s = 'select id,name,phone,industry from account where name=:Aname OR phone=:Aphone';

searchaccounts = database.query(s);

return null;

}

}
trigger owner on Account (before update) {
user u =[select id,firstname from user where firstname='dhruv' limit 1];
list<Account> a = new list<Account>();
for (account acc:trigger.new)
{
    acc.name=u.firstname;
    //a.add(acc);
}
   //update a;   
}
public class MemberPopup 
{

    public document file { get; set; }

    public document textName { get; set; }
    public List<document> memberAddList {get;set;}
    public String memberName {get;set;}
    public Integer rowNum{get;set;}
    
    public MemberPopup()
    {
     
        memberAddList = new List<document>();
        memberAddList.add(new document());
    }
        
    public void AddRow()
    {
        memberAddList.add(new document());
    }
    
    public void delRow()
    {
         memberAddList.remove(rowNum-1);
    }    
    
    public void saveMemb()
    {
    
    for(document g : memberAddList)
{
g.folderid='00l28000000Ngo6';
memberAddList.add(g);
}
    
        insert memberAddList;
        
    }
}