Esempio n. 1
0
        public BulkAPIResponse <ZCRMRecord> UpdateRecords(List <ZCRMRecord> records, List <string> trigger)
        {
            try
            {
                if (records.Count > 100)
                {
                    throw new ZCRMException(APIConstants.API_MAX_RECORDS_MSG);
                }
                requestMethod = APIConstants.RequestMethod.PUT;
                urlPath       = module.ApiName;
                JObject requestBodyObject = new JObject();
                JArray  dataArray         = new JArray();
                foreach (ZCRMRecord record in records)
                {
                    if (record.GetFieldValue("id") == null || (long)record.GetFieldValue("id") <= 0)
                    {
                        throw new ZCRMException("Entity ID Must Not be null/empty for UpdateRecords operation.");
                    }
                    dataArray.Add(EntityAPIHandler.GetInstance(record).GetZCRMRecordAsJSON());
                }
                requestBodyObject.Add(APIConstants.DATA, dataArray);
                if (trigger != null && trigger.Count > 0)
                {
                    requestBodyObject.Add("trigger", JArray.FromObject(trigger));
                }
                requestBody = requestBodyObject;

                BulkAPIResponse <ZCRMRecord> response       = APIRequest.GetInstance(this).GetBulkAPIResponse <ZCRMRecord>();
                List <ZCRMRecord>            updatedRecords = new List <ZCRMRecord>();
                List <EntityResponse>        responses      = response.BulkEntitiesResponse;
                int responseSize = responses.Count;
                for (int i = 0; i < responseSize; i++)
                {
                    EntityResponse entityResponse = responses[i];
                    if (entityResponse.Status.Equals(APIConstants.CODE_SUCCESS))
                    {
                        JObject    responseData  = entityResponse.ResponseJSON;
                        JObject    recordDetails = (JObject)responseData[APIConstants.DETAILS];
                        ZCRMRecord newRecord     = records[i];
                        EntityAPIHandler.GetInstance(newRecord).SetRecordProperties(recordDetails);
                        updatedRecords.Add(newRecord);
                        entityResponse.Data = newRecord;
                    }
                    else
                    {
                        entityResponse.Data = null;
                    }
                }
                response.BulkData = updatedRecords;
                return(response);
            }
            catch (Exception e) when(!(e is ZCRMException))
            {
                ZCRMLogger.LogError(e);
                throw new ZCRMException(APIConstants.SDK_ERROR, e);
            }
        }
        public BulkAPIResponse <ZCRMRecord> UpsertRecords(List <ZCRMRecord> records, List <string> trigger, string lar_id, List <string> duplicate_check_fields)
        {
            if (records.Count > 100)
            {
                throw new ZCRMException(APIConstants.API_MAX_RECORDS_MSG);
            }
            requestMethod = APIConstants.RequestMethod.POST;
            urlPath       = module.ApiName + "/upsert";
            JObject requestBodyObject = new JObject();
            JArray  dataArray         = new JArray();

            foreach (ZCRMRecord record in records)
            {
                JObject recordJSON = EntityAPIHandler.GetInstance(record).GetZCRMRecordAsJSON();
                dataArray.Add(recordJSON);
            }
            requestBodyObject.Add(APIConstants.DATA, dataArray);
            if (trigger != null && trigger.Count > 0)
            {
                requestBodyObject.Add("trigger", JArray.FromObject(trigger));
            }
            if (lar_id != null)
            {
                requestBodyObject.Add("lar_id", lar_id);
            }
            if (duplicate_check_fields != null && duplicate_check_fields.Count > 0)
            {
                requestBodyObject.Add("duplicate_check_fields", JArray.FromObject(duplicate_check_fields));
            }
            requestBody = requestBodyObject;

            BulkAPIResponse <ZCRMRecord> response = APIRequest.GetInstance(this).GetBulkAPIResponse <ZCRMRecord>();

            List <ZCRMRecord>     upsertedRecords = new List <ZCRMRecord>();
            List <EntityResponse> responses       = response.BulkEntitiesResponse;
            int responseSize = responses.Count;

            for (int i = 0; i < responseSize; i++)
            {
                EntityResponse entityResponse = responses[i];
                if (entityResponse.Status.Equals(APIConstants.CODE_SUCCESS))
                {
                    JObject    responseData  = entityResponse.ResponseJSON;
                    JObject    recordDetails = (JObject)responseData[APIConstants.DETAILS];
                    ZCRMRecord record        = records[i];
                    EntityAPIHandler.GetInstance(record).SetRecordProperties(recordDetails);
                    upsertedRecords.Add(record);
                    entityResponse.Data = record;
                }
                else
                {
                    entityResponse.Data = null;
                }
            }
            response.BulkData = upsertedRecords;
            return(response);
        }
Esempio n. 3
0
        public BulkAPIResponse <ZCRMRecord> MassUpdateRecords(List <long> entityIds, string fieldAPIName, Object value)
        {
            try
            {
                if (entityIds.Count > 100)
                {
                    throw new ZCRMException(APIConstants.API_MAX_RECORDS_MSG);
                }
                //NOTE: null value is not converted to JObject of type null;
                requestMethod = APIConstants.RequestMethod.PUT;
                urlPath       = module.ApiName;
                JObject requestBodyObject = new JObject();
                JArray  dataArray         = new JArray();
                foreach (long id in entityIds)
                {
                    JObject updateJSON = new JObject
                    {
                        { fieldAPIName, value.ToString() },
                        { "id", Convert.ToString(id) }
                    };
                    dataArray.Add(updateJSON);
                }
                requestBodyObject.Add(APIConstants.DATA, dataArray);
                requestBody = requestBodyObject;

                BulkAPIResponse <ZCRMRecord> response = APIRequest.GetInstance(this).GetBulkAPIResponse <ZCRMRecord>();

                List <ZCRMRecord>     updatedRecords = new List <ZCRMRecord>();
                List <EntityResponse> responses      = response.BulkEntitiesResponse;
                foreach (EntityResponse entityResponse in responses)
                {
                    if (entityResponse.Status.Equals(APIConstants.CODE_SUCCESS))
                    {
                        JObject    responseData  = entityResponse.ResponseJSON;
                        JObject    recordDetails = (JObject)responseData[APIConstants.DETAILS];
                        ZCRMRecord updatedRecord = ZCRMRecord.GetInstance(module.ApiName, Convert.ToInt64(recordDetails["id"]));
                        EntityAPIHandler.GetInstance(updatedRecord).SetRecordProperties(recordDetails);
                        updatedRecords.Add(updatedRecord);
                        entityResponse.Data = updatedRecord;
                    }
                    else
                    {
                        entityResponse.Data = null;
                    }
                }
                response.BulkData = updatedRecords;
                return(response);
            }
            catch (Exception e) when(!(e is ZCRMException))
            {
                ZCRMLogger.LogError(e);
                throw new ZCRMException(APIConstants.SDK_ERROR, e);
            }
        }
Esempio n. 4
0
        public BulkAPIResponse <ZCRMRecord> GetRecords(long?cvId, string sortByField, CommonUtil.SortOrder?sortOrder, int page, int perPage, string modifiedSince, string isConverted, string isApproved, List <string> fields)
        {
            requestMethod = APIConstants.RequestMethod.GET;
            urlPath       = module.ApiName;
            if (cvId != null)
            {
                requestQueryParams.Add("cvid", cvId.ToString());
            }
            if (sortByField != null)
            {
                requestQueryParams.Add("sort_by", sortByField);
            }
            if (sortOrder != null)
            {
                requestQueryParams.Add("sort_order", sortOrder.ToString());
            }
            requestQueryParams.Add(APIConstants.PAGE, page.ToString());
            requestQueryParams.Add(APIConstants.PER_PAGE, perPage.ToString());
            if (isApproved != null && isApproved != "")
            {
                requestQueryParams.Add("approved", isApproved);
            }
            if (isConverted != null && isConverted != "")
            {
                requestQueryParams.Add("converted", isConverted);
            }
            if (fields != null)
            {
                requestQueryParams.Add("fields", CommonUtil.CollectionToCommaDelimitedString(fields));
            }
            if (modifiedSince != null && modifiedSince != "")
            {
                requestHeaders.Add("If-Modified-Since", modifiedSince);
            }

            BulkAPIResponse <ZCRMRecord> response = APIRequest.GetInstance(this).GetBulkAPIResponse <ZCRMRecord>();

            List <ZCRMRecord> records      = new List <ZCRMRecord>();
            JObject           responseJSON = response.ResponseJSON;

            if (responseJSON.ContainsKey(APIConstants.DATA))
            {
                JArray recordsArray = (JArray)responseJSON[APIConstants.DATA];
                foreach (JObject recordDetails in recordsArray)
                {
                    ZCRMRecord record = ZCRMRecord.GetInstance(module.ApiName, Convert.ToInt64(recordDetails["id"]));
                    EntityAPIHandler.GetInstance(record).SetRecordProperties(recordDetails);
                    records.Add(record);
                }
            }
            response.BulkData = records;
            return(response);
        }
Esempio n. 5
0
        public BulkAPIResponse <ZCRMRecord> CreateRecords(List <ZCRMRecord> records)
        {
            if (records.Count > 100)
            {
                throw new ZCRMException(APIConstants.API_MAX_RECORDS_MSG);
            }
            requestMethod = APIConstants.RequestMethod.POST;
            urlPath       = module.ApiName;
            JObject requestBodyObject = new JObject();
            JArray  dataArray         = new JArray();

            foreach (ZCRMRecord record in records)
            {
                if (record.EntityId == null)
                {
                    dataArray.Add(EntityAPIHandler.GetInstance(record).GetZCRMRecordAsJSON());
                }
                else
                {
                    throw new ZCRMException("Entity ID Must be null/empty for CreateRecords operation.");
                }
            }
            requestBodyObject.Add(APIConstants.DATA, dataArray);
            requestBody = requestBodyObject;

            BulkAPIResponse <ZCRMRecord> response = APIRequest.GetInstance(this).GetBulkAPIResponse <ZCRMRecord>();

            List <ZCRMRecord>     createdRecords = new List <ZCRMRecord>();
            List <EntityResponse> responses      = response.BulkEntitiesResponse;
            int responseSize = responses.Count;

            for (int i = 0; i < responseSize; i++)
            {
                EntityResponse entityResponse = responses[i];
                if (entityResponse.Status.Equals(APIConstants.CODE_SUCCESS))
                {
                    JObject    responseData  = entityResponse.ResponseJSON;
                    JObject    recordDetails = (JObject)responseData[APIConstants.DETAILS];
                    ZCRMRecord newRecord     = records[i];
                    EntityAPIHandler.GetInstance(newRecord).SetRecordProperties(recordDetails);
                    createdRecords.Add(newRecord);
                    entityResponse.Data = newRecord;
                }
                else
                {
                    entityResponse.Data = null;
                }
            }
            response.BulkData = createdRecords;
            return(response);
        }
Esempio n. 6
0
 public BulkAPIResponse <ZCRMRecord> RemoveTagsFromRecords(List <long> recordId, List <string> tagNames)
 {
     if (tagNames.Count > 10)
     {
         throw new ZCRMException(APIConstants.API_MAX_RECORD_TAGS_MSG);
     }
     if (recordId.Count > 100)
     {
         throw new ZCRMException(APIConstants.API_MAX_RECORDS_MSG);
     }
     try
     {
         string tagname = "", recordid = "";
         requestMethod = APIConstants.RequestMethod.POST;
         foreach (long id in recordId)
         {
             recordid += id + ",";
         }
         foreach (string tag in tagNames)
         {
             tagname += tag + ",";
         }
         urlPath = "" + module.ApiName + "/actions/remove_tags?ids=" + recordid + "&tag_names=" + tagname + "";
         BulkAPIResponse <ZCRMRecord> response = APIRequest.GetInstance(this).GetBulkAPIResponse <ZCRMRecord>();
         List <ZCRMRecord>            removetags = new List <ZCRMRecord>();
         List <EntityResponse>        responses = response.BulkEntitiesResponse;
         foreach (EntityResponse entityResponse in responses)
         {
             if (entityResponse.Status.Equals(APIConstants.CODE_SUCCESS))
             {
                 JObject    responseData = entityResponse.ResponseJSON;
                 JObject    tagDetails   = (JObject)responseData[APIConstants.DETAILS];
                 ZCRMRecord removeTag    = ZCRMRecord.GetInstance(module.ApiName, Convert.ToInt64(tagDetails["id"]));
                 EntityAPIHandler.GetInstance(removeTag).SetRecordProperties(tagDetails);
                 removetags.Add(removeTag);
                 entityResponse.Data = removeTag;
             }
             else
             {
                 entityResponse.Data = null;
             }
         }
         response.BulkData = removetags;
         return(response);
     }
     catch (Exception e) when(!(e is ZCRMException))
     {
         ZCRMLogger.LogError(e);
         throw new ZCRMException(APIConstants.SDK_ERROR, e);
     }
 }
Esempio n. 7
0
        private BulkAPIResponse <ZCRMRecord> SearchRecords(string searchKey, string searchValue, Dictionary <string, string> methodParams)
        {
            try
            {
                requestMethod = APIConstants.RequestMethod.GET;

                urlPath = module.ApiName + "/search";

                requestQueryParams.Add(searchKey, searchValue);

                foreach (KeyValuePair <string, string> methodParam in methodParams)
                {
                    requestQueryParams.Add(methodParam.Key, methodParam.Value);
                }

                BulkAPIResponse <ZCRMRecord> response = APIRequest.GetInstance(this).GetBulkAPIResponse <ZCRMRecord>();

                List <ZCRMRecord> recordsList = new List <ZCRMRecord>();

                JObject responseJSON = response.ResponseJSON;

                if (responseJSON.ContainsKey(APIConstants.DATA))
                {
                    JArray recordsArray = (JArray)responseJSON[APIConstants.DATA];

                    foreach (JObject recordDetails in recordsArray)
                    {
                        ZCRMRecord record = ZCRMRecord.GetInstance(module.ApiName, Convert.ToInt64(recordDetails["id"]));

                        EntityAPIHandler.GetInstance(record).SetRecordProperties(recordDetails);

                        recordsList.Add(record);
                    }
                }

                response.BulkData = recordsList;

                return(response);
            }
            catch (Exception e) when(!(e is ZCRMException))
            {
                ZCRMLogger.LogError(e);

                throw new ZCRMException(APIConstants.SDK_ERROR, e);
            }
        }
Esempio n. 8
0
 public BulkAPIResponse <ZCRMRecord> RemoveTagsFromRecords(List <long> recordId, List <string> tagNames)
 {
     if (tagNames.Count > 10)
     {
         throw new ZCRMException(APIConstants.API_MAX_RECORD_TAGS_MSG);
     }
     if (recordId.Count > 100)
     {
         throw new ZCRMException(APIConstants.API_MAX_RECORDS_MSG);
     }
     try
     {
         requestMethod = APIConstants.RequestMethod.POST;
         urlPath       = "" + module.ApiName + "/actions/remove_tags";
         requestQueryParams.Add("ids", string.Join(",", JToken.FromObject(recordId)));
         requestQueryParams.Add("tag_names", string.Join(",", JToken.FromObject(tagNames)));
         BulkAPIResponse <ZCRMRecord> response   = APIRequest.GetInstance(this).GetBulkAPIResponse <ZCRMRecord>();
         List <ZCRMRecord>            recordList = new List <ZCRMRecord>();
         List <EntityResponse>        responses  = response.BulkEntitiesResponse;
         foreach (EntityResponse entityResponse in responses)
         {
             if (entityResponse.Status.Equals(APIConstants.CODE_SUCCESS))
             {
                 JObject    responseData    = entityResponse.ResponseJSON;
                 JObject    recordDetails   = (JObject)responseData[APIConstants.DETAILS];
                 ZCRMRecord removeRecordIns = ZCRMRecord.GetInstance(module.ApiName, Convert.ToInt64(recordDetails["id"]));
                 EntityAPIHandler.GetInstance(removeRecordIns).SetRecordProperties(recordDetails);
                 recordList.Add(removeRecordIns);
                 entityResponse.Data = removeRecordIns;
             }
             else
             {
                 entityResponse.Data = null;
             }
         }
         response.BulkData = recordList;
         return(response);
     }
     catch (Exception e) when(!(e is ZCRMException))
     {
         ZCRMLogger.LogError(e);
         throw new ZCRMException(APIConstants.SDK_ERROR, e);
     }
 }
        public BulkAPIResponse <ZCRMRecord> GetRecords(string sortByField, CommonUtil.SortOrder?sortOrder, int page, int perPage, string modifiedSince)
        {
            try
            {
                requestMethod = APIConstants.RequestMethod.GET;
                urlPath       = parentRecord.ModuleAPIName + "/" + parentRecord.EntityId + "/" + relatedList.ApiName;
                if (sortByField != null)
                {
                    requestQueryParams.Add("sort_by", sortByField);
                }
                if (sortOrder != null)
                {
                    requestQueryParams.Add("sort_order", sortOrder.ToString());
                }
                requestQueryParams.Add(APIConstants.PAGE, page.ToString());
                requestQueryParams.Add(APIConstants.PER_PAGE, perPage.ToString());
                if (modifiedSince != null && modifiedSince != "")
                {
                    requestHeaders.Add("If-Modified-Since", modifiedSince);
                }

                BulkAPIResponse <ZCRMRecord> response = APIRequest.GetInstance(this).GetBulkAPIResponse <ZCRMRecord>();

                List <ZCRMRecord> recordsList  = new List <ZCRMRecord>();
                JObject           responseJSON = response.ResponseJSON;
                if (responseJSON.ContainsKey(APIConstants.DATA))
                {
                    JArray recordsArray = (JArray)responseJSON[APIConstants.DATA];
                    foreach (JObject recordDetails in recordsArray)
                    {
                        ZCRMRecord record = ZCRMRecord.GetInstance(relatedList.ApiName, Convert.ToInt64(recordDetails["id"]));
                        EntityAPIHandler.GetInstance(record).SetRecordProperties(recordDetails);
                        recordsList.Add(record);
                    }
                }
                response.BulkData = recordsList;
                return(response);
            }
            catch (Exception e) when(!(e is ZCRMException))
            {
                ZCRMLogger.LogError(e);
                throw new ZCRMException(APIConstants.SDK_ERROR, e);
            }
        }