• santosh konathala
  • NEWBIE
  • 0 Points
  • Member since 2023

  • Chatter
    Feed
  • 0
    Best Answers
  • 0
    Likes Received
  • 0
    Likes Given
  • 2
    Questions
  • 1
    Replies
Hi All,

I get the following error when attempting to check in this challenge.  However, if I test my code from workbench, it works correctly.  I've checked my spelling, order of parameters in the method signature.

Challenge Not yet complete... here's what's wrong: 
The 'ProjectRESTService' Apex REST service does not appear to be working properly. Calling the service either didn't update the opportunity correctly, return the string 'OK', create an associated project correctly or function correctly in general.

I've checked other forum post and I noticed people are searching for the project record prior to upserting it.  I don't understand why that is needed if I can upsert directly against the ProjectRef__c external id field.  I could try to copy and paste what they did to pass the challenge, but I want to understand why what I coded doesn't work.  A second pair (or more) eyes would be appreciated.  Thank you!
 
@RestResource(urlMapping='/project/*')
global with sharing class ProjectRESTService {
    @HttpPost
    global static String postProjectData(String ProjectRef, String ProjectName, String OpportunityId, Date StartDate, Date EndDate, Double Amount, String Status) {
		SavePoint sp = Database.setSavepoint();
        
        try {
	        Project__c p = new Project__c(ProjectRef__c=ProjectRef, Name=ProjectName, Opportunity__c=OpportunityId, Start_Date__c=StartDate, End_Date__c=EndDate, Billable_Amount__c=Amount, Status__c=Status);
    	    upsert p ProjectRef__c;
            Opportunity o = new Opportunity(Id=OpportunityId, DeliveryInstallationStatus__c='In Progress');
            update o;
        	return 'OK';
        } catch (Exception e) {
            System.debug('~~~ Cause: ' + e.getCause() +  ' Message: ' + e.getMessage() + ' getLineNumber: ' + e.getLineNumber() + ' StackTrace: ' + e.getStackTraceString() + ' Type: ' + e.getTypeName());
            Database.rollback(sp);
            return e.getMessage();
        }     
    }
        
}