• orph351
  • NEWBIE
  • 10 Points
  • Member since 2012

  • Chatter
    Feed
  • 0
    Best Answers
  • 0
    Likes Received
  • 0
    Likes Given
  • 4
    Questions
  • 5
    Replies
I have an Apex class that runs on a daily schedule. The goal is that it will kepp track of which users have recorded a votew for a specific opportunity. Other than the code not being optimized, I currently have two issues:

1.The For loop seems to only make it to the first ElseIf statement. It doesn't seem to matter what I change on the opportunity, the For loop exits at the first ElseIf.

2. The For loop does not seem to be looping through all opportunities from the list. It seems like it is only evaluating the first item in the list.
 
global class DocketCronJ implements Schedulable{
    global void execute(SchedulableContext SC) {
        datetime t = System.now();
        date d = Date.newInstance(t.year(),t.month(),t.day());
        
        List <Opportunity> opp = [Select GC_Online_Vote_Status__c, Id, Request_Name_Used_for_Workflow__c,CampaignId, StageName, Budget_Committee__c 
                                  From Opportunity 
                                  Where StageName = 'Committee Review' 
                                  	and GC_Online_Vote_Status__c != 'Complete' 
                                  	and Docket_Name__c LIKE'GC Online Docket_%'];
        
            for(Opportunity o: opp){
                List<Campaign> camp = [Select GC_Vote_Overdue_End_Date__c 
                                       from Campaign 
                                       where Id = :o.CampaignId];
                
                List<TrusteeVotes__c> vote = [Select Id, Vote_Response__c, Trustee_Name_del__c 
                                              From TrusteeVotes__c 
                                              Where Request_Name__c = :o.Id];
                    
                	Integer Size = vote.size();
                        
                    If (Size >= 4) {
                        opp[0].GC_Online_Vote_Status__c = 'Complete';
                        update(opp);
                    }
                    else if (Size < 4 && camp[0].GC_Vote_Overdue_End_Date__c < d) {
                        opp[0].GC_Online_Vote_Status__c = 'In Progress';
                        update(opp);
                    }
                    else if (Size < 4 && camp[0].GC_Vote_Overdue_End_Date__c >= d) {
                        opp[0].GC_Online_Vote_Status__c = 'Complete';
                        update(opp);
                        
                        String voters = [Select Trustee_Name_del__c 
                                         From TrusteeVotes__c 
                                         Where Id in :vote].Trustee_Name_del__c;
                        	If (voters.contains('005A0000001lvws')) {
    							System.debug ('User1 voted');
							}
                            Else
                            	{TrusteeVotes__c voteNew = new TrusteeVotes__c(Trustee_Name_del__c = '005A0000001lvws', 
                                                                         Request_Name__c = o.Id, 
                                                                         Vote_Response__c = 'Yes',
                                    									 Vote_Type__c = 'System');
        																 insert voteNew;
                                 
                                Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
						        String emailAddr = 'user1@email.com';
								String[] toAddresses = new String[] {emailAddr};
        						mail.setToAddresses(toAddresses);
                                mail.setSubject('System Auto Vote on Request - ' + o.Id);
								mail.setPlainTextBody('Voting Close Date: ' + camp[0].GC_Vote_Overdue_End_Date__c + 
                                                      '\n Request Id: ' + o.Id + 
                                                      '\n  Request Name: ' + o.Request_Name_Used_for_Workflow__c +
                                                     '\n Vote Cast for: User 1 (https://na11.salesforce.com/005A0000001lvws)');
        						mail.setHtmlBody('<b>Voting Close Date:</b> ' + camp[0].GC_Vote_Overdue_End_Date__c + 
                                                 '\n <b>Request Id:</b> ' + o.Id + 
                                                 '\n  <b>Request Name:</b> ' + o.Request_Name_Used_for_Workflow__c);
								Messaging.sendEmail(new Messaging.SingleEmailMessage[] { mail });
                                }
                            If (voters.contains('005G0000003uzCu')) {
    							System.debug ('User 2 voted');
							}
                        	Else
                            	{TrusteeVotes__c voteNew = new TrusteeVotes__c(Trustee_Name_del__c = '005G0000003uzCu', 
                                                                         Request_Name__c = o.Id, 
                                                                         Vote_Response__c = 'Yes',
                                    									 Vote_Type__c = 'System');
        																 insert voteNew;
                                 
                                 Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
						        String emailAddr = 'user2@email.com';
								String[] toAddresses = new String[] {emailAddr};
        						mail.setToAddresses(toAddresses);
                                mail.setSubject('System Auto Vote on Request - ' + o.Id);
								mail.setPlainTextBody('Voting Close Date: ' + camp[0].GC_Vote_Overdue_End_Date__c + 
                                                      '\n Request Id: ' + o.Id + 
                                                      '\n  Request Name: ' + o.Request_Name_Used_for_Workflow__c +
                                                     '\n Vote Cast for: User 2 (https://na11.salesforce.com/005G0000003uzCu)');
        						mail.setHtmlBody('<b>Voting Close Date:</b> ' + camp[0].GC_Vote_Overdue_End_Date__c + 
                                                 '\n <b>Request Id:</b> ' + o.Id + 
                                                 '\n  <b>Request Name:</b> ' + o.Request_Name_Used_for_Workflow__c);
								Messaging.sendEmail(new Messaging.SingleEmailMessage[] { mail });
                                }
                            If (voters.contains('005G0000001pgd5')) {
    							System.debug ('User3 voted');
							}
                        	Else
                            	{TrusteeVotes__c voteNew = new TrusteeVotes__c(Trustee_Name_del__c = '005G0000001pgd5', 
                                                                         Request_Name__c = o.Id, 
                                                                         Vote_Response__c = 'Yes',
                                    									 Vote_Type__c = 'System');
        																 insert voteNew;
                                 
                                 Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
						        String emailAddr = 'user3@email.com';
								String[] toAddresses = new String[] {emailAddr};
        						mail.setToAddresses(toAddresses);
                                mail.setSubject('System Auto Vote on Request - ' + o.Id);
								mail.setPlainTextBody('Voting Close Date: ' + camp[0].GC_Vote_Overdue_End_Date__c + 
                                                      '\n Request Id: ' + o.Id + 
                                                      '\n  Request Name: ' + o.Request_Name_Used_for_Workflow__c +
                                                     '\n Vote Cast for: User 3 (https://na11.salesforce.com/005G0000001pgd5)');
        						mail.setHtmlBody('<b>Voting Close Date:</b> ' + camp[0].GC_Vote_Overdue_End_Date__c + 
                                                 '\n <b>Request Id:</b> ' + o.Id + 
                                                 '\n  <b>Request Name:</b> ' + o.Request_Name_Used_for_Workflow__c);
								Messaging.sendEmail(new Messaging.SingleEmailMessage[] { mail });
                                }
                            If (voters.contains('005A0000000jRh1')) {
    							System.debug ('User 4 voted');
							}
                        	Else
                            	{TrusteeVotes__c voteNew = new TrusteeVotes__c(Trustee_Name_del__c = '005A0000000jRh1', 
                                                                         Request_Name__c = o.Id, 
                                                                         Vote_Response__c = 'Yes',
                                    									 Vote_Type__c = 'System');
        																 insert voteNew;
                                 
                                 Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
						        String emailAddr = 'user4@email.com';
								String[] toAddresses = new String[] {emailAddr};
        						mail.setToAddresses(toAddresses);
                                mail.setSubject('System Auto Vote on Request - ' + o.Id);
								mail.setPlainTextBody('Voting Close Date: ' + camp[0].GC_Vote_Overdue_End_Date__c + 
                                                      '\n Request Id: ' + o.Id + 
                                                      '\n  Request Name: ' + o.Request_Name_Used_for_Workflow__c +
                                                     '\n Vote Cast for: User 4 (https://na11.salesforce.com/005A0000000jRh1)');
        						mail.setHtmlBody('<b>Voting Close Date:</b> ' + camp[0].GC_Vote_Overdue_End_Date__c + 
                                                 '\n <b>Request Id:</b> ' + o.Id + 
                                                 '\n  <b>Request Name:</b> ' + o.Request_Name_Used_for_Workflow__c);
								Messaging.sendEmail(new Messaging.SingleEmailMessage[] { mail });
                                }
                        
                                } 
                           
                        }
            }
    }

Any thoughts or suggestions?
I'm trying to get my test class coverage to 100%. It doesn't seem to matter what I change, because the coverage is staying at 40%. Could you please take a look and let me know what I'm missing?
trigger setOnlineDocket on Opportunity (before insert, before update) {
    
    List<Campaign> lstCampaign=[Select Id from Campaign where Name='Online Campaign'];
    if(!lstCampaign.isEmpty()){
        for(Opportunity opp:Trigger.New){
            if(opp.StageName=='Review' && opp.CampaignId!=lstCampaign[0].Id){
                opp.CampaignId=lstCampaign[0].Id;
            }
        }
    }
}




@isTest
private class setOnlineDocketTestClass {
	static testMethod void validatesetOnlineDocket() {
		// Create Test Campaign
		List<Campaign> campNew = new List<Campaign>();
		campNew.add(new Campaign(Name = 'Test Online Campaign', IsActive = True, Type = 'Online Campaign', Meeting_Date__c = System.now()));
		insert campNew;
        
        // Verify campaign inserted successfully
		List<Campaign> newCampaign = [SELECT Name FROM Campaign WHERE Id IN :campNew];
        System.assertEquals('Test Online Campaign', newCampaign.Name);
        System.Debug('Campaign Created: ' + newCampaign.Name);
		
		// Create Test Account
		Account accNew = new Account(Name='M Test Account', Letter__c = True);
		insert accNew;
		
		// Verify that the initial state is as expected.
		accNew = [SELECT Name FROM Account WHERE Id = :accNew.Id];
		System.assertEquals('M Test Account', accNew.Name);
        System.Debug('Account Created: ' + accNew.Name);
		
		// Create Test Contact
		Contact conNew = new Contact(AccountId = accNew.Id, lastname = 'Testing', firstname = 'Apex');
		insert conNew;
		
		// Verify contact inserted successfully
		conNew = [SELECT lastname FROM Contact WHERE Id = :conNew.Id];
		System.assertEquals('Testing', conNew.lastname);
        System.Debug('Contact Created: ' + conNew.Name);
		
		// Create Test Opportunity
		Opportunity oppNew = new Opportunity(RecordTypeId = '012A0000000d8jR', AccountId = accNew.Id, Name = 'Maclellan Trigger Test Audit', StageName = 'Committee Review', CloseDate = System.today(), CampaignId = null);
		
        System.Debug('Record Type: ' + oppNew.RecordType + ', AccountId: ' + oppNew.AccountId + ', Opportunity name: ' + oppNew.Name + ', Stage: ' + oppNew.StageName + ', Close Date: ' + oppNew.CloseDate + ', Campaign Id: ' + oppNew.CampaignId);
        insert oppNew;
                
        // Retrieve New Opportunity
        Opportunity oppCreated = [SELECT Name FROM Opportunity WHERE Id = :oppNew.Id];
        System.assertEquals('M Trigger Test Audit', oppCreated.Name);
        System.Debug('Opportunity Created: ' + oppNew.Name);
        
		// Update Opportunity
		oppNew.CampaignId='701G0000000vw7M';
		update oppNew;
		
		// Retrieve Updated Opportunity
		Opportunity oppUpdated = [SELECT CampaignId FROM Opportunity WHERE Id = :oppNew.Id];
		 
		// Test that the trigger updated campaign
		System.assertEquals('701G0000000vw7M', oppUpdated.CampaignId);
		System.Debug('Opportunity Updated with CampaignId: ' + oppUpdated.CampaignId);	
    }
}
We're trying to figure out if it is possible to move an opportunity from one campaign to another. 

Is this possible with workflow or do we need to use a trigger?

We have an issue with a site redirect from http://website.com to https://other.website.com. According to SalesForce documentation you can redirect to an https site with no problems, but it is not working. The URL is always redirected to an http site instead of the https site.

 

Here is how we have the URL Redirect configured on our site:

 

Source URL: /email

Redirect Type: Permanent (301)

Target URL: https://website.com

 

Any thoughts or suggestions are welcome.

  • September 11, 2012
  • Like
  • 0
I have an Apex class that runs on a daily schedule. The goal is that it will kepp track of which users have recorded a votew for a specific opportunity. Other than the code not being optimized, I currently have two issues:

1.The For loop seems to only make it to the first ElseIf statement. It doesn't seem to matter what I change on the opportunity, the For loop exits at the first ElseIf.

2. The For loop does not seem to be looping through all opportunities from the list. It seems like it is only evaluating the first item in the list.
 
global class DocketCronJ implements Schedulable{
    global void execute(SchedulableContext SC) {
        datetime t = System.now();
        date d = Date.newInstance(t.year(),t.month(),t.day());
        
        List <Opportunity> opp = [Select GC_Online_Vote_Status__c, Id, Request_Name_Used_for_Workflow__c,CampaignId, StageName, Budget_Committee__c 
                                  From Opportunity 
                                  Where StageName = 'Committee Review' 
                                  	and GC_Online_Vote_Status__c != 'Complete' 
                                  	and Docket_Name__c LIKE'GC Online Docket_%'];
        
            for(Opportunity o: opp){
                List<Campaign> camp = [Select GC_Vote_Overdue_End_Date__c 
                                       from Campaign 
                                       where Id = :o.CampaignId];
                
                List<TrusteeVotes__c> vote = [Select Id, Vote_Response__c, Trustee_Name_del__c 
                                              From TrusteeVotes__c 
                                              Where Request_Name__c = :o.Id];
                    
                	Integer Size = vote.size();
                        
                    If (Size >= 4) {
                        opp[0].GC_Online_Vote_Status__c = 'Complete';
                        update(opp);
                    }
                    else if (Size < 4 && camp[0].GC_Vote_Overdue_End_Date__c < d) {
                        opp[0].GC_Online_Vote_Status__c = 'In Progress';
                        update(opp);
                    }
                    else if (Size < 4 && camp[0].GC_Vote_Overdue_End_Date__c >= d) {
                        opp[0].GC_Online_Vote_Status__c = 'Complete';
                        update(opp);
                        
                        String voters = [Select Trustee_Name_del__c 
                                         From TrusteeVotes__c 
                                         Where Id in :vote].Trustee_Name_del__c;
                        	If (voters.contains('005A0000001lvws')) {
    							System.debug ('User1 voted');
							}
                            Else
                            	{TrusteeVotes__c voteNew = new TrusteeVotes__c(Trustee_Name_del__c = '005A0000001lvws', 
                                                                         Request_Name__c = o.Id, 
                                                                         Vote_Response__c = 'Yes',
                                    									 Vote_Type__c = 'System');
        																 insert voteNew;
                                 
                                Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
						        String emailAddr = 'user1@email.com';
								String[] toAddresses = new String[] {emailAddr};
        						mail.setToAddresses(toAddresses);
                                mail.setSubject('System Auto Vote on Request - ' + o.Id);
								mail.setPlainTextBody('Voting Close Date: ' + camp[0].GC_Vote_Overdue_End_Date__c + 
                                                      '\n Request Id: ' + o.Id + 
                                                      '\n  Request Name: ' + o.Request_Name_Used_for_Workflow__c +
                                                     '\n Vote Cast for: User 1 (https://na11.salesforce.com/005A0000001lvws)');
        						mail.setHtmlBody('<b>Voting Close Date:</b> ' + camp[0].GC_Vote_Overdue_End_Date__c + 
                                                 '\n <b>Request Id:</b> ' + o.Id + 
                                                 '\n  <b>Request Name:</b> ' + o.Request_Name_Used_for_Workflow__c);
								Messaging.sendEmail(new Messaging.SingleEmailMessage[] { mail });
                                }
                            If (voters.contains('005G0000003uzCu')) {
    							System.debug ('User 2 voted');
							}
                        	Else
                            	{TrusteeVotes__c voteNew = new TrusteeVotes__c(Trustee_Name_del__c = '005G0000003uzCu', 
                                                                         Request_Name__c = o.Id, 
                                                                         Vote_Response__c = 'Yes',
                                    									 Vote_Type__c = 'System');
        																 insert voteNew;
                                 
                                 Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
						        String emailAddr = 'user2@email.com';
								String[] toAddresses = new String[] {emailAddr};
        						mail.setToAddresses(toAddresses);
                                mail.setSubject('System Auto Vote on Request - ' + o.Id);
								mail.setPlainTextBody('Voting Close Date: ' + camp[0].GC_Vote_Overdue_End_Date__c + 
                                                      '\n Request Id: ' + o.Id + 
                                                      '\n  Request Name: ' + o.Request_Name_Used_for_Workflow__c +
                                                     '\n Vote Cast for: User 2 (https://na11.salesforce.com/005G0000003uzCu)');
        						mail.setHtmlBody('<b>Voting Close Date:</b> ' + camp[0].GC_Vote_Overdue_End_Date__c + 
                                                 '\n <b>Request Id:</b> ' + o.Id + 
                                                 '\n  <b>Request Name:</b> ' + o.Request_Name_Used_for_Workflow__c);
								Messaging.sendEmail(new Messaging.SingleEmailMessage[] { mail });
                                }
                            If (voters.contains('005G0000001pgd5')) {
    							System.debug ('User3 voted');
							}
                        	Else
                            	{TrusteeVotes__c voteNew = new TrusteeVotes__c(Trustee_Name_del__c = '005G0000001pgd5', 
                                                                         Request_Name__c = o.Id, 
                                                                         Vote_Response__c = 'Yes',
                                    									 Vote_Type__c = 'System');
        																 insert voteNew;
                                 
                                 Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
						        String emailAddr = 'user3@email.com';
								String[] toAddresses = new String[] {emailAddr};
        						mail.setToAddresses(toAddresses);
                                mail.setSubject('System Auto Vote on Request - ' + o.Id);
								mail.setPlainTextBody('Voting Close Date: ' + camp[0].GC_Vote_Overdue_End_Date__c + 
                                                      '\n Request Id: ' + o.Id + 
                                                      '\n  Request Name: ' + o.Request_Name_Used_for_Workflow__c +
                                                     '\n Vote Cast for: User 3 (https://na11.salesforce.com/005G0000001pgd5)');
        						mail.setHtmlBody('<b>Voting Close Date:</b> ' + camp[0].GC_Vote_Overdue_End_Date__c + 
                                                 '\n <b>Request Id:</b> ' + o.Id + 
                                                 '\n  <b>Request Name:</b> ' + o.Request_Name_Used_for_Workflow__c);
								Messaging.sendEmail(new Messaging.SingleEmailMessage[] { mail });
                                }
                            If (voters.contains('005A0000000jRh1')) {
    							System.debug ('User 4 voted');
							}
                        	Else
                            	{TrusteeVotes__c voteNew = new TrusteeVotes__c(Trustee_Name_del__c = '005A0000000jRh1', 
                                                                         Request_Name__c = o.Id, 
                                                                         Vote_Response__c = 'Yes',
                                    									 Vote_Type__c = 'System');
        																 insert voteNew;
                                 
                                 Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
						        String emailAddr = 'user4@email.com';
								String[] toAddresses = new String[] {emailAddr};
        						mail.setToAddresses(toAddresses);
                                mail.setSubject('System Auto Vote on Request - ' + o.Id);
								mail.setPlainTextBody('Voting Close Date: ' + camp[0].GC_Vote_Overdue_End_Date__c + 
                                                      '\n Request Id: ' + o.Id + 
                                                      '\n  Request Name: ' + o.Request_Name_Used_for_Workflow__c +
                                                     '\n Vote Cast for: User 4 (https://na11.salesforce.com/005A0000000jRh1)');
        						mail.setHtmlBody('<b>Voting Close Date:</b> ' + camp[0].GC_Vote_Overdue_End_Date__c + 
                                                 '\n <b>Request Id:</b> ' + o.Id + 
                                                 '\n  <b>Request Name:</b> ' + o.Request_Name_Used_for_Workflow__c);
								Messaging.sendEmail(new Messaging.SingleEmailMessage[] { mail });
                                }
                        
                                } 
                           
                        }
            }
    }

Any thoughts or suggestions?
I'm trying to get my test class coverage to 100%. It doesn't seem to matter what I change, because the coverage is staying at 40%. Could you please take a look and let me know what I'm missing?
trigger setOnlineDocket on Opportunity (before insert, before update) {
    
    List<Campaign> lstCampaign=[Select Id from Campaign where Name='Online Campaign'];
    if(!lstCampaign.isEmpty()){
        for(Opportunity opp:Trigger.New){
            if(opp.StageName=='Review' && opp.CampaignId!=lstCampaign[0].Id){
                opp.CampaignId=lstCampaign[0].Id;
            }
        }
    }
}




@isTest
private class setOnlineDocketTestClass {
	static testMethod void validatesetOnlineDocket() {
		// Create Test Campaign
		List<Campaign> campNew = new List<Campaign>();
		campNew.add(new Campaign(Name = 'Test Online Campaign', IsActive = True, Type = 'Online Campaign', Meeting_Date__c = System.now()));
		insert campNew;
        
        // Verify campaign inserted successfully
		List<Campaign> newCampaign = [SELECT Name FROM Campaign WHERE Id IN :campNew];
        System.assertEquals('Test Online Campaign', newCampaign.Name);
        System.Debug('Campaign Created: ' + newCampaign.Name);
		
		// Create Test Account
		Account accNew = new Account(Name='M Test Account', Letter__c = True);
		insert accNew;
		
		// Verify that the initial state is as expected.
		accNew = [SELECT Name FROM Account WHERE Id = :accNew.Id];
		System.assertEquals('M Test Account', accNew.Name);
        System.Debug('Account Created: ' + accNew.Name);
		
		// Create Test Contact
		Contact conNew = new Contact(AccountId = accNew.Id, lastname = 'Testing', firstname = 'Apex');
		insert conNew;
		
		// Verify contact inserted successfully
		conNew = [SELECT lastname FROM Contact WHERE Id = :conNew.Id];
		System.assertEquals('Testing', conNew.lastname);
        System.Debug('Contact Created: ' + conNew.Name);
		
		// Create Test Opportunity
		Opportunity oppNew = new Opportunity(RecordTypeId = '012A0000000d8jR', AccountId = accNew.Id, Name = 'Maclellan Trigger Test Audit', StageName = 'Committee Review', CloseDate = System.today(), CampaignId = null);
		
        System.Debug('Record Type: ' + oppNew.RecordType + ', AccountId: ' + oppNew.AccountId + ', Opportunity name: ' + oppNew.Name + ', Stage: ' + oppNew.StageName + ', Close Date: ' + oppNew.CloseDate + ', Campaign Id: ' + oppNew.CampaignId);
        insert oppNew;
                
        // Retrieve New Opportunity
        Opportunity oppCreated = [SELECT Name FROM Opportunity WHERE Id = :oppNew.Id];
        System.assertEquals('M Trigger Test Audit', oppCreated.Name);
        System.Debug('Opportunity Created: ' + oppNew.Name);
        
		// Update Opportunity
		oppNew.CampaignId='701G0000000vw7M';
		update oppNew;
		
		// Retrieve Updated Opportunity
		Opportunity oppUpdated = [SELECT CampaignId FROM Opportunity WHERE Id = :oppNew.Id];
		 
		// Test that the trigger updated campaign
		System.assertEquals('701G0000000vw7M', oppUpdated.CampaignId);
		System.Debug('Opportunity Updated with CampaignId: ' + oppUpdated.CampaignId);	
    }
}
We're trying to figure out if it is possible to move an opportunity from one campaign to another. 

Is this possible with workflow or do we need to use a trigger?