Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
titleSample Apex genericQuery
@RestResource(urlMapping='/jtelACD/setEmailTaskStatus')
global with sharing class JTELACD_SetEmailTaskStatus {

    // Class to decode the parameters
    public class GenericQueryParams {
        public String Param1;
        public String Param2;
        public String Param3;
        public String Param4;
        public String Query;
    }

    @HttpPost
    global static void doPost() {

        RestRequest req = RestContext.request;
        RestResponse res = RestContext.response;

        res.addHeader('Content-Type', 'application/json');

        // Deserialize the JSON
        GenericQueryParams genericQueryParams = (GenericQueryParams) JSON.deserialize( req.requestBody.toString(), GenericQueryParams.class );

        if (String.isBlank(genericQueryParams.Param1)) {
            res.statusCode = 400;
            res.responseBody =
                Blob.valueOf('{"error":"Missing task id"}');
            return;
        }

        if (String.isBlank(genericQueryParams.Param2)) {
            res.statusCode = 400;
            res.responseBody =
                Blob.valueOf('{"error":"Missing status"}');
            return;
        }

        List<Task> tasks = [
            SELECT FIELDS(STANDARD)
            FROM Task
            WHERE Id = :genericQueryParams.Param1
            LIMIT 1
        ];

        if (tasks.isEmpty()) {
            res.statusCode = 404;
            res.responseBody =
                Blob.valueOf('{"error":"Task not found"}');
            return;
        }

        Task task = tasks[0];
        task.Status = genericQueryParams.Param2;

        update task;

        res.statusCode = 200;
        res.responseBody = Blob.valueOf(JSON.serialize(task));
    }
}

...