+ Start a Discussion
CharlieLangCharlieLang 

Web to case

I am trying to replicated a web to case form in visualforce.

 

The page sits in a tab on a clients org and at the moment emails me the contents of a form. i have got everything coded so it emails me everything fine.

 

Now what i'm trying to do is exactly copy the salesforce generated web to case form and get the visualforce form to post the form to the address in the html generated form. Unfortulately i'm getting the following error

 

This is the code i'm using in the controller

 

 

public with sharing class CaseExtension {
    
    public Case mycase {get; set;}
    public User localUser {get; set;}
    public String route {get; set;}
    
    public CaseExtension(ApexPages.StandardController stdController) {
        this.mycase = (Case)stdController.getRecord();
        localUser = [SELECT Id, Phone, Email, FirstName, LastName from User where Id =: System.UserInfo.getUserId() LIMIT 1];
        this.mycase.OwnerId = localUser.Id;
        
    }

   public PageReference saveCase(){
       try {
    
       Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
       String[] toAddresses = new String[] {'https://www.salesforce.com/servlet/servlet.WebToCase?encoding=UTF-8'};
       mail.setToAddresses(toAddresses);
      
       mail.setPlainTextBody('orgid=00DD0000000Cl9q' + '&retURL=VF_Evo1_Tab&name=' + localUser.FirstName + '&email=' + localUser.Email + '&phone=' + localUser.Phone + '&subject=' + mycase.Subject + '&description=' + mycase.Description + '&00ND0000002wUGd=' + route + '&external=1&submit=Submit' );
        Messaging.sendEmail(new Messaging.SingleEmailMessage[] { mail });
       }
       catch(System.DMLException e){
           ApexPages.addMessages(e);
           return null;
       }
  //     PageReference p = Page.ThankYou;
  //     p.setRedirect(true);
       return null;
     }
    
}

 

Just wondering if enyone could help me resolve this problem

 

 

CharlieLangCharlieLang

Just wondering if anyone is able to help me with this?

 

Thanks in advance

cirrocirro

Hi Charlie,

 

You can build a post using the httpRequest class instead:

http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_classes_restful_http_httprequest.htm

 

Why are you trying to post to the Web-to-Case form instead of working directly with the Cases in Apex?

 

Vincent

McFitz13McFitz13

Agreed, just write directly to the case object.

 

It's as simple as...

 

 

case c = new case();
c.subject= 'test';
c.description = 'description';
insert c;

 

 

CharlieLangCharlieLang

Hi Cirro, 

Sorry for the delayed response - been abroad for the last few days.

 

Basically, the VF page that sits in a number of clients orgs and it pulls all their details from their user profile page and at the moment it sends it to me as an email. What i am wanting to do is use a form in say Company A's org to send a case to my company's org so the way i am trying to do it is by duplicating the web to case for in Visualforce and an Apex controller. I am pretty sure its the best way of going round things.

 

The last bit I am stumped with is the posting it into my org with the http request!

CharlieLangCharlieLang

am i going along the right lines with this?

 

I'd appreciate any help with this...

 

 

try {
 	HttpRequest req = new HttpRequest();
	req.setEndpoint('https://www.salesforce.com/servlet/servlet.WebToCase?encoding=UTF-8');

		req.setBody('orgid=00DD0000000Cl9q' + '&retURL=VF_Evo1_Tab&name=' + localUser.FirstName + '&email=' + localUser.Email + '&phone=' + localUser.Phone + '&subject=' + mycase.Subject + '&description=' + mycase.Description + '&00ND0000002wUGd=' + route + '&external=1&submit=Submit' );

 

 

cirrocirro

Hi Charlie,

 

You need to start with an instance of Http, and send the request with the HttpRequest's send method. Building your request along the lines of the example on the page:

http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_classes_restful_http.htm

 

should work for you.

 

Vincent