/// <summary>The method to create bulk read job</summary> /// <param name="request">Instance of RequestWrapper</param> /// <returns>Instance of APIResponse<ActionHandler></returns> public APIResponse <ActionHandler> CreateBulkReadJob(RequestWrapper request) { CommonAPIHandler handlerInstance = new CommonAPIHandler(); string apiPath = ""; apiPath = string.Concat(apiPath, "/crm/bulk/v2/read"); handlerInstance.APIPath = apiPath; handlerInstance.HttpMethod = Constants.REQUEST_METHOD_POST; handlerInstance.CategoryMethod = Constants.REQUEST_CATEGORY_CREATE; handlerInstance.ContentType = "application/json"; handlerInstance.Request = request; handlerInstance.MandatoryChecker = true; return(handlerInstance.APICall <ActionHandler>(typeof(ActionHandler), "application/json")); }
/// <summary> /// This method is used to create a bulk read job to export records. /// </summary> /// <param name="moduleAPIName">The API Name of the record's module</param> public static void CreateBulkReadJob(string moduleAPIName) { //example //string moduleAPIName = "Leads"; //Get instance of BulkReadOperations Class BulkReadOperations bulkReadOperations = new BulkReadOperations(); //Get instance of RequestWrapper Class that will contain the request body RequestWrapper requestWrapper = new RequestWrapper(); //Get instance of CallBack Class CallBack callback = new CallBack(); // To set valid callback URL. callback.Url = "https://www.example.com/callback"; //To set the HTTP method of the callback URL. The allowed value is post. callback.Method = new Choice <string> ("post"); //The Bulk Read Job's details is posted to this URL on successful completion / failure of job. requestWrapper.Callback = callback; //Get instance of Query Class API.BulkRead.Query query = new API.BulkRead.Query(); //Specifies the API Name of the module to be read. query.Module = moduleAPIName; //Specifies the unique ID of the custom view whose records you want to export. //query.Cvid = "34770610087501"; // List of Field API Names List <string> fieldAPINames = new List <string>(); fieldAPINames.Add("Last_Name"); //Specifies the API Name of the fields to be fetched. //query.Fields = fieldAPINames; //To set page value, By default value is 1. query.Page = 1; //Get instance of Criteria Class Criteria criteria = new Criteria(); criteria.GroupOperator = new Choice <string>("or"); List <Criteria> criteriaList = new List <Criteria>(); Criteria group11 = new Criteria(); group11.GroupOperator = new Choice <string>("and"); List <Criteria> groupList11 = new List <Criteria>(); Criteria group111 = new Criteria(); group111.APIName = "All_day"; group111.Comparator = new Choice <string>("equal"); group111.Value = false; groupList11.Add(group111); Criteria group112 = new Criteria(); group112.APIName = "Owner"; group112.Comparator = new Choice <string>("in"); List <string> owner = new List <string>() { "34770610173021" }; group112.Value = owner; groupList11.Add(group112); group11.Group = groupList11; criteriaList.Add(group11); Criteria group12 = new Criteria(); group12.GroupOperator = new Choice <string>("or"); List <Criteria> groupList12 = new List <Criteria>(); Criteria group121 = new Criteria(); group121.APIName = "Event_Title"; group121.Comparator = new Choice <string>("equal"); group121.Value = "New Automated Event"; groupList12.Add(group121); Criteria group122 = new Criteria(); // To set API name of a field. group122.APIName = "Created_Time"; // To set comparator(eg: equal, greater_than.). group122.Comparator = new Choice <string>("between"); List <string> createdTime = new List <string>() { "2020-06-03T17:31:48+05:30", "2020-06-03T17:31:48+05:30" }; // To set the value to be compare. group122.Value = createdTime; groupList12.Add(group122); group12.Group = groupList12; criteriaList.Add(group12); criteria.Group = criteriaList; //To filter the records to be exported. query.Criteria = criteria; //To set query JSON object. requestWrapper.Query = query; //Specify the value for this key as "ics" to export all records in the Events module as an ICS file. requestWrapper.FileType = new Choice <string>("csv"); //Call CreateBulkReadJob method that takes RequestWrapper instance as parameter APIResponse <ActionHandler> response = bulkReadOperations.CreateBulkReadJob(requestWrapper); if (response != null) { //Get the status code from response Console.WriteLine("Status Code: " + response.StatusCode); //Check if expected response is received if (response.IsExpected) { //Get object from response ActionHandler actionHandler = response.Object; if (actionHandler is ActionWrapper) { //Get the received ActionWrapper instance API.BulkRead.ActionWrapper actionWrapper = (ActionWrapper)actionHandler; //Get the list of obtained ActionResponse instances List <ActionResponse> actionResponses = actionWrapper.Data; foreach (ActionResponse actionResponse in actionResponses) { //Check if the request is successful if (actionResponse is SuccessResponse) { //Get the received SuccessResponse instance API.BulkRead.SuccessResponse successResponse = (SuccessResponse)actionResponse; //Get the Status Console.WriteLine("Status: " + successResponse.Status.Value); //Get the Code Console.WriteLine("Code: " + successResponse.Code.Value); Console.WriteLine("Details: "); //Get the details map foreach (KeyValuePair <string, object> entry in successResponse.Details) { //Get each value in the map Console.WriteLine(entry.Key + " : " + JsonConvert.SerializeObject(entry.Value)); } //Get the Message Console.WriteLine("Message: " + successResponse.Message.Value); } //Check if the request returned an exception else if (actionResponse is APIException) //Get the received APIException instance { APIException exception = (APIException)actionResponse; //Get the Status Console.WriteLine("Status: " + exception.Status.Value); //Get the Code Console.WriteLine("Code: " + exception.Code.Value); Console.WriteLine("Details: "); //Get the details map foreach (KeyValuePair <string, object> entry in exception.Details) { //Get each value in the map Console.WriteLine(entry.Key + " : " + JsonConvert.SerializeObject(entry.Value)); } //Get the Message Console.WriteLine("Message: " + exception.Message.Value); } } } //Check if the request returned an exception else if (actionHandler is APIException) //Get the received APIException instance { APIException exception = (APIException)actionHandler; //Get the Status Console.WriteLine("Status: " + exception.Status.Value); //Get the Code Console.WriteLine("Code: " + exception.Code.Value); Console.WriteLine("Details: "); //Get the details map foreach (KeyValuePair <string, object> entry in exception.Details) { //Get each value in the map Console.WriteLine(entry.Key + ": " + JsonConvert.SerializeObject(entry.Value)); } //Get the Message Console.WriteLine("Message: " + exception.Message.Value); } } else { //If response is not as expected //Get model object from response Model responseObject = response.Model; //Get the response object's class Type type = responseObject.GetType(); //Get all declared fields of the response class Console.WriteLine("Type is: {0}", type.Name); PropertyInfo[] props = type.GetProperties(); Console.WriteLine("Properties (N = {0}):", props.Length); foreach (var prop in props) { if (prop.GetIndexParameters().Length == 0) { Console.WriteLine("{0} ({1}) : {2}", prop.Name, prop.PropertyType.Name, prop.GetValue(responseObject)); } else { Console.WriteLine("{0} ({1}) : <Indexed>", prop.Name, prop.PropertyType.Name); } } } } }