Beispiel #1
0
        //TODO:Handle exceptions;
        //TODO: Inspect the working of Generics;
        public BulkAPIResponse <ZCRMEntity> DeleteRecords(List <long> entityIds)
        {
            if (entityIds.Count > 100)
            {
                throw new ZCRMException("Cannot process more than 100 records at a time");
            }
            try{
                requestMethod = APIConstants.RequestMethod.DELETE;
                urlPath       = module.ApiName;
                requestQueryParams.Add("ids", CommonUtil.CollectionToCommaDelimitedString(entityIds));

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

                List <EntityResponse> responses = response.BulkEntitiesResponse;
                foreach (EntityResponse entityResponse in responses)
                {
                    JObject    entityResponseJSON = entityResponse.ResponseJSON;
                    JObject    recordJSON         = (JObject)entityResponseJSON.GetValue("details");
                    ZCRMRecord record             = ZCRMRecord.GetInstance(module.ApiName, Convert.ToInt64(recordJSON.GetValue("id")));
                    entityResponse.Data = record;
                }
                return(response);
            }catch (Exception) {
                //TODO: Log the info;
                //TODO: Inspect the throw statement and compare the parameters with java sdk;
                Console.WriteLine("Exception occured in DeleteRecords");
                throw new ZCRMException("ZCRM_INTERNAL_ERROR");
            }
        }
Beispiel #2
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);
            }
        }
Beispiel #3
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)
        {
            try
            {
                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);
            }
            catch (Exception e) when(!(e is ZCRMException))
            {
                ZCRMLogger.LogError(e);
                throw new ZCRMException(APIConstants.SDK_ERROR, e);
            }
        }
Beispiel #4
0
        public ZCRMInventoryLineItem GetZCRMInventoryLineItem(JObject lineItemJSON)
        {
            JObject productDetails         = (JObject)lineItemJSON["product"];
            long    lineItemId             = Convert.ToInt64(lineItemJSON["id"]);
            ZCRMInventoryLineItem lineItem = ZCRMInventoryLineItem.GetInstance(lineItemId);

            ZCRMRecord product = ZCRMRecord.GetInstance("Products", Convert.ToInt64(productDetails["id"]));

            product.LookupLabel         = (string)productDetails["name"];
            lineItem.Product            = product;
            lineItem.Description        = (string)lineItemJSON["product_description"];
            lineItem.Quantity           = Convert.ToDouble(lineItemJSON["quantity"]);
            lineItem.ListPrice          = Convert.ToDouble(lineItemJSON["list_price"]);
            lineItem.UnitPrice          = Convert.ToDouble(lineItemJSON["unit_price"]);
            lineItem.Total              = Convert.ToDouble(lineItemJSON["total"]);
            lineItem.Discount           = Convert.ToDouble(lineItemJSON["Discount"]);
            lineItem.TotalAfterDiscount = Convert.ToDouble(lineItemJSON["tota_after_discount"]);
            lineItem.TaxAmount          = Convert.ToDouble(lineItemJSON["Tax"]);
            JArray lineTaxes = (JArray)lineItemJSON["line_tax"];

            foreach (JObject lineTax in lineTaxes)
            {
                ZCRMTax tax = ZCRMTax.GetInstance((string)lineTax["name"]);
                tax.Percentage = Convert.ToDouble(lineTax["percentage"]);
                tax.Value      = Convert.ToDouble(lineTax["value"]);
                lineItem.AddLineTax(tax);
            }
            lineItem.NetTotal = Convert.ToDouble(lineItemJSON["net_total"]);
            return(lineItem);
        }
Beispiel #5
0
        public BulkAPIResponse <ZCRMEntity> DeleteRecords(List <long> entityIds)
        {
            try
            {
                if (entityIds.Count > 100)
                {
                    throw new ZCRMException(APIConstants.API_MAX_RECORDS_MSG);
                }
                requestMethod = APIConstants.RequestMethod.DELETE;
                urlPath       = module.ApiName;
                requestQueryParams.Add("ids", CommonUtil.CollectionToCommaDelimitedString(entityIds));

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

                List <EntityResponse> responses = response.BulkEntitiesResponse;
                foreach (EntityResponse entityResponse in responses)
                {
                    JObject    entityResponseJSON = entityResponse.ResponseJSON;
                    JObject    recordJSON         = (JObject)entityResponseJSON[APIConstants.DETAILS];
                    ZCRMRecord record             = ZCRMRecord.GetInstance(module.ApiName, Convert.ToInt64(recordJSON["id"]));
                    entityResponse.Data = record;
                }
                return(response);
            }
            catch (Exception e) when(!(e is ZCRMException))
            {
                ZCRMLogger.LogError(e);
                throw new ZCRMException(APIConstants.SDK_ERROR, e);
            }
        }
Beispiel #6
0
        private BulkAPIResponse <ZCRMRecord> SearchRecords(string searchKey, string searchValue, int page, int perPage)
        {
            requestMethod = APIConstants.RequestMethod.GET;
            urlPath       = module.ApiName + "/search";
            requestQueryParams.Add(searchKey, searchValue);
            requestQueryParams.Add(APIConstants.PAGE, page.ToString());
            requestQueryParams.Add(APIConstants.PER_PAGE, perPage.ToString());

            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);
        }
Beispiel #7
0
        private BulkAPIResponse <ZCRMRecord> SearchRecords(string searchKey, string searchValue, int page, int perPage)
        {
            try{
                requestMethod = APIConstants.RequestMethod.GET;
                urlPath       = module.ApiName + "/search";
                requestQueryParams.Add(searchKey, searchValue);
                requestQueryParams.Add("page", page.ToString());
                requestQueryParams.Add("per_page", perPage.ToString());

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

                List <ZCRMRecord> recordsList  = new List <ZCRMRecord>();
                JObject           responseJSON = response.ResponseJSON;
                JArray            recordsArray = (JArray)responseJSON.GetValue("data");
                foreach (JObject recordDetails in recordsArray)
                {
                    ZCRMRecord record = ZCRMRecord.GetInstance(module.ApiName, Convert.ToInt64(recordDetails.GetValue("id")));
                    EntityAPIHandler.GetInstance(record).SetRecordProperties(recordDetails);
                    recordsList.Add(record);
                }

                response.BulkData = recordsList;
                return(response);
            }catch (Exception e) {
                //TODO: Log the exception;
                Console.WriteLine("Exception caught at searchRecords");
                Console.WriteLine(e);
                throw new ZCRMException("ZCRM_INTERNAL_ERROR");
            }
        }
Beispiel #8
0
        public ZCRMInventoryLineItem GetZCRMInventoryLineItem(JObject lineItemJSON)
        {
            JObject productDetails = (JObject)lineItemJSON["product"];

            long lineItemId = Convert.ToInt64(lineItemJSON["id"]);

            ZCRMInventoryLineItem lineItem = ZCRMInventoryLineItem.GetInstance(lineItemId);

            ZCRMRecord product = ZCRMRecord.GetInstance("Products", Convert.ToInt64(productDetails["id"]));

            product.LookupLabel = (string)productDetails["name"];

            if (productDetails.ContainsKey("Product_Code") && productDetails["Product_Code"].Type != JTokenType.Null)
            {
                product.SetFieldValue("Product_Code", (string)productDetails["name"]);
            }

            lineItem.Product = product;

            lineItem.Quantity = Convert.ToDouble(lineItemJSON["quantity"]);

            lineItem.Discount = Convert.ToDouble(lineItemJSON["Discount"]);

            lineItem.TotalAfterDiscount = Convert.ToDouble(lineItemJSON["total_after_discount"]);

            lineItem.NetTotal = Convert.ToDouble(lineItemJSON["net_total"]);

            lineItem.TaxAmount = Convert.ToDouble(lineItemJSON["Tax"]);

            lineItem.ListPrice = Convert.ToDouble(lineItemJSON["list_price"]);

            if (lineItemJSON.ContainsKey("unit_price") && lineItemJSON["unit_price"].Type != JTokenType.Null)
            {
                lineItem.UnitPrice = Convert.ToDouble(lineItemJSON["unit_price"]);
            }

            lineItem.QuantityInStock = Convert.ToInt32(lineItemJSON["quantity_in_stock"]);

            lineItem.Total = Convert.ToDouble(lineItemJSON["total"]);

            lineItem.Description = (string)lineItemJSON["product_description"];

            JArray lineTaxes = (JArray)lineItemJSON["line_tax"];

            foreach (JObject lineTax in lineTaxes)
            {
                ZCRMTax tax = ZCRMTax.GetInstance((string)lineTax["name"]);

                tax.Percentage = Convert.ToDouble(lineTax["percentage"]);

                tax.Value = Convert.ToDouble(lineTax["value"]);

                lineItem.AddLineTax(tax);
            }

            return(lineItem);
        }
Beispiel #9
0
        public BulkAPIResponse <ZCRMRecord> UpdateRecords(List <long> entityIds, string fieldAPIName, Object value)
        {
            if (entityIds.Count > 100)
            {
                throw new ZCRMException("Cannot process more than 100 records at a time");
            }
            //NOTE: null value is not converted to JObject of type null;
            try
            {
                requestMethod = APIConstants.RequestMethod.PUT;
                urlPath       = module.ApiName;
                JObject requestBodyObject = new JObject();
                JArray  dataArray         = new JArray();
                foreach (long id in entityIds)
                {
                    JObject updateJSON = new JObject();
                    //TODO: Check the below line on the usage of arrays;
                    updateJSON.Add(fieldAPIName, value.ToString());
                    updateJSON.Add("id", Convert.ToString(id));
                    dataArray.Add(updateJSON);
                }
                requestBodyObject.Add("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("success"))
                    {
                        JObject    responseData  = entityResponse.ResponseJSON;
                        JObject    recordDetails = (JObject)responseData.GetValue("details");
                        ZCRMRecord updatedRecord = ZCRMRecord.GetInstance(module.ApiName, Convert.ToInt64(recordDetails.GetValue("id")));
                        EntityAPIHandler.GetInstance(updatedRecord).SetRecordProperties(recordDetails);
                        updatedRecords.Add(updatedRecord);
                        entityResponse.Data = updatedRecord;
                    }
                    else
                    {
                        entityResponse.Data = null;
                    }
                }
                response.BulkData = updatedRecords;
                return(response);
            }catch (Exception e)
            {
                //TODO: Log the info;
                Console.WriteLine("Exception at updateRecords");
                Console.WriteLine(e);
                throw new ZCRMException("ZCRM_INTERNAL_ERROR");
            }
        }
 public ZCRMRecord Next(string ModuleAPIName, Dictionary <string, object> fieldvsValue, int rowNumber)
 {
     if (fieldvsValue != null)
     {
         return(SetRecordProperties(ModuleAPIName, fieldvsValue, rowNumber));
     }
     else
     {
         return(ZCRMRecord.GetInstance(ModuleAPIName, null));
     }
 }
Beispiel #11
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);
            }
        }
Beispiel #12
0
        private void InsertZohoLeads(List <ZohoLead> leads)
        {
            try
            {
                ZCRMRestClient.Initialize(config);

                ZohoOAuthClient client = ZohoOAuthClient.GetInstance();
                if (!IsTokenGenerated("*****@*****.**"))
                {
                    ZohoOAuthTokens tokens = client.GenerateAccessToken(grantToken);
                }

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

                foreach (var lead in leads)
                {
                    ZCRMRecord record = ZCRMRecord.GetInstance("Leads", null); //To get ZCRMRecord instance

                    if (lead.Offers != null)
                    {
                        record = InsertZohoLeadOffer(lead);
                        listRecord.Add(record);
                    }

                    if (lead.HighBidAmount != null)
                    {
                        record = InsertZohoLeadBid(lead);
                        listRecord.Add(record);
                    }

                    if (lead.MemberMessage != null)
                    {
                        record = InsertZohoLeadMessage(lead);
                        listRecord.Add(record);
                    }
                }

                ZCRMModule moduleIns = ZCRMModule.GetInstance("Leads");
                BulkAPIResponse <ZCRMRecord> responseIns = moduleIns.CreateRecords(listRecord); //To call the create record method

                if (responseIns.HttpStatusCode != ZCRMSDK.CRM.Library.Api.APIConstants.ResponseCode.OK)
                {
                    Console.WriteLine("Error");
                }
            }
            catch (Exception ex)
            {
                Trace.TraceError(ex.Message);
                throw ex;
            }
        }
 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);
     }
 }
Beispiel #14
0
        public void UpdateProduct(long?productId, long?stockAmount)
        {
            ZCRMRecord record = ZCRMRecord.GetInstance("Products", productId);

            record.SetFieldValue("Qty_in_Stock", stockAmount);

            List <string> trigger = new List <string>()
            {
                "workflow", "approval", "blueprint"
            };
            APIResponse response = record.Update(trigger);

            ZCRMRecord record1 = (ZCRMRecord)response.Data;
        }
Beispiel #15
0
        public ZCRMRecord CreateLead(LeadRequest leadRequest)
        {
            ZCRMRecord record = ZCRMRecord.GetInstance(ZohoConstants.LEAD_MODULE_STRING, null);

            record.SetFieldValue("Last_Name", leadRequest.Name); //This method use to set FieldApiName and value similar to all other FieldApis and Custom field
            record.SetFieldValue("Email", leadRequest.Email);
            record.SetFieldValue("Description", leadRequest.Description);
            record.SetFieldValue("Email_Opt_Out", true);
            record.SetFieldValue("No_of_Employees", leadRequest.NumberOfEmployees);
            ZCRMUser owner = ZCRMUser.GetInstance(680990340);//User Id

            record.Owner = owner;
            APIResponse responseIns = record.Create();//To call the create record method
            ZCRMRecord  record1     = (ZCRMRecord)responseIns.Data;

            return(record1);
        }
Beispiel #16
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)
        {
            try{
                requestMethod = APIConstants.RequestMethod.GET;
                urlPath       = module.ApiName;
                if (cvId != null)
                {
                    requestQueryParams.Add("cvid", cvId.ToString());
                }
                requestQueryParams.Add("sort_by", sortByField);
                if (sortOrder != null)
                {
                    requestQueryParams.Add("sort_order", sortOrder.ToString());
                }
                requestQueryParams.Add("page", page.ToString());
                requestQueryParams.Add("per_page", perPage.ToString());
                requestQueryParams.Add("coneverted", isConverted);
                requestQueryParams.Add("approved", isApproved);
                if (fields != null)
                {
                    requestQueryParams.Add("fields", CommonUtil.CollectionToCommaDelimitedString(fields));
                }
                requestHeaders.Add("If-Modified-Since", modifiedSince);

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

                List <ZCRMRecord> records      = new List <ZCRMRecord>();
                JObject           responseJSON = response.ResponseJSON;
                JArray            recordsArray = (JArray)responseJSON.GetValue("data");
                foreach (JObject recordDetails in recordsArray)
                {
                    ZCRMRecord record = ZCRMRecord.GetInstance(module.ApiName, Convert.ToInt64(recordDetails.GetValue("id")));
                    EntityAPIHandler.GetInstance(record).SetRecordProperties(recordDetails);
                    records.Add(record);
                }
                response.BulkData = records;
                return(response);
            }catch (Exception e)
            {
                //TODO: Log the info;
                Console.WriteLine("Exception in MassEntityAPIHandler.GetRecords");
                Console.WriteLine(e);
                throw new ZCRMException("ZCRM_INTERNA_ERROR", e.ToString());
            }
        }
Beispiel #17
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);
            }
        }
Beispiel #19
0
        private bool CreateAndPopulateNote <T>(UserProfile profile, T UserData, Action <T, ZCRMNote> PopulateNoteFunction) where T : IADSCRMRecord
        {
            if (!Connected)
            {
                return(false);
            }
            if (!profile.ADS_CRM_ID.HasValue)
            {
                throw new Exception("Profile does not have a registered CRM ID");
            }

            var leadRecord = ZCRMRecord.GetInstance("Leads", profile.ADS_CRM_ID);

            if (UserData != null && UserData.ADS_CRM_ID == null)
            {
                var newExistingNote = UserData.ADS_CRM_ID == null ? new ZCRMNote(leadRecord) : ZCRMNote.GetInstance(leadRecord, UserData.ADS_CRM_ID.Value);

                PopulateNoteFunction(UserData, newExistingNote);

                if (UserData.ADS_CRM_ID == null)
                {
                    var createdNote = leadRecord.AddNote(newExistingNote);
                    if (createdNote.HttpStatusCode != APIConstants.ResponseCode.CREATED)
                    {
                        throw new Exception("Failed to create note for lead.");
                    }
                    UserData.ADS_CRM_ID = (createdNote.Data as ZCRMNote).Id;
                }
                else
                {
                    var updatedNote = leadRecord.UpdateNote(newExistingNote);
                    if (updatedNote.HttpStatusCode != APIConstants.ResponseCode.OK)
                    {
                        throw new Exception("Failed to update note for lead.");
                    }
                }
            }

            return(false);
        }
Beispiel #20
0
        public void CreateInvoice(string subject, long contactId, string productId, string pricebookId, string prodDescription, long quantity)
        {
            ZCRMRecord record;

            record = ZCRMRecord.GetInstance("Invoices", null);
            //record.SetFieldValue("Account_Name", accountName);
            record.SetFieldValue("Subject", subject);
            record.SetFieldValue("Contact_Name", contactId);
            //record.SetFieldValue("Billing_Country", billingCountry);
            //record.SetFieldValue("Billing_City", billingCity);
            //record.SetFieldValue("Billing_Street", billingStreet);
            //record.SetFieldValue("Billing_Code", billingCode);
            //record.SetFieldValue("Due_Date", dueDate.ToShortDateString());
            record.SetFieldValue("Product_Details", CreateProductDetails(productId, pricebookId, prodDescription, quantity));

            List <string> trigger = new List <string>()
            {
                "workflow", "approval", "blueprint"
            };
            string      larID     = "3477061000004353013";
            APIResponse response1 = record.Create(trigger, larID);
            ZCRMRecord  record1   = (ZCRMRecord)response1.Data;
        }
Beispiel #21
0
        public void CreateContact(string firstName, string lastName, string phone, string email, string country, string city, string street, string zip)
        {
            ZCRMRecord record;

            record = ZCRMRecord.GetInstance("Contacts", null);
            record.SetFieldValue("First_Name", firstName);
            record.SetFieldValue("Last_Name", lastName);
            record.SetFieldValue("Phone", phone);
            record.SetFieldValue("Email", email);
            record.SetFieldValue("Mailing_City", city);
            record.SetFieldValue("Mailing_Street", street);
            record.SetFieldValue("Mailing_Country", country);
            record.SetFieldValue("Mailing_Zip", zip);

            List <string> trigger = new List <string>()
            {
                "workflow", "approval", "blueprint"
            };
            string      larID    = "3477061000004353013";
            APIResponse response = record.Create(trigger, larID);

            ZCRMRecord record1 = (ZCRMRecord)response.Data;
        }
        //TODO: Handle exceptions;
        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}";
                requestQueryParams.Add("sort_by", sortByField);
                if (sortOrder != null)
                {
                    requestQueryParams.Add("sort_order", sortOrder.ToString());
                }
                requestQueryParams.Add("page", page.ToString());
                requestQueryParams.Add("per_page", perPage.ToString());
                requestHeaders.Add("If-Modified-Since", modifiedSince);

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

                List <ZCRMRecord> recordsList  = new List <ZCRMRecord>();
                JObject           responseJSON = response.ResponseJSON;
                JArray            recordsArray = (JArray)responseJSON.GetValue("data");
                foreach (JObject recordDetails in recordsArray)
                {
                    ZCRMRecord record = ZCRMRecord.GetInstance(relatedList.ApiName, Convert.ToInt64(recordDetails.GetValue("id")));
                    EntityAPIHandler.GetInstance(record).SetRecordProperties(recordDetails);
                    recordsList.Add(record);
                }
                response.BulkData = recordsList;
                return(response);
            }
            catch (Exception e)
            {
                //TODO: Handle the exceptions;
                Console.WriteLine("Exception in GetRecords");
                Console.WriteLine(e);
                throw new ZCRMException("ZCRM_INTERNAL_ERROR");
            }
        }
Beispiel #23
0
        private ZCRMRecord InsertZohoLeadMessage(ZohoLead lead)
        {
            try
            {
                ZCRMRecord record = ZCRMRecord.GetInstance("Leads", null); //To get ZCRMRecord instance

                //lead.StockNumber = "2168";
                if (!String.IsNullOrEmpty(lead.StockNumber))
                {
                    record.SetFieldValue("Stock_Number", lead.StockNumber);

                    ZCRMModule module = ZCRMModule.GetInstance("Contacts");
                    BulkAPIResponse <ZCRMRecord> response = module.SearchByCriteria("(Cust_ID:equals:" + lead.StockNumber + ")");
                    List <ZCRMRecord>            contacts = response.BulkData;

                    if (contacts != null)
                    {
                        if (contacts.Count > 0)
                        {
                            JObject customerId = new JObject()
                            {
                                { "id", contacts.First().EntityId }
                            };
                            record.SetFieldValue("Stock_Nbr", customerId);
                        }
                    }
                }

                if (lead.PageViews != null)
                {
                    record.SetFieldValue("Page_Views", lead.PageViews);
                }

                if (!String.IsNullOrEmpty(lead.StockNumber))
                {
                    record.SetFieldValue("Registered_Watchers", lead.Watchers);
                }

                if (!String.IsNullOrEmpty(lead.MemberMessage))
                {
                    record.SetFieldValue("Description", lead.MemberMessage);
                }

                if (!String.IsNullOrEmpty(lead.VehicleYear))
                {
                    record.SetFieldValue("Year_of_Unit", lead.VehicleYear);
                }

                if (!String.IsNullOrEmpty(lead.PhoneNumber))
                {
                    record.SetFieldValue("Phone_Number", lead.PhoneNumber);
                }

                if (!String.IsNullOrEmpty(lead.VehicleMake))
                {
                    record.SetFieldValue("Year_Make_Model", lead.VehicleMake + " " + lead.VehicleModel);
                    record.SetFieldValue("Year_Make_Model1", lead.VehicleMake + " " + lead.VehicleModel);
                }

                if (!String.IsNullOrEmpty(lead.EbayItemId))
                {
                    record.SetFieldValue("Item_Number", lead.EbayItemId);
                }

                if (!String.IsNullOrEmpty(lead.City))
                {
                    record.SetFieldValue("Bidders_City", lead.City);
                }

                if (!String.IsNullOrEmpty(lead.State))
                {
                    record.SetFieldValue("Bidders_State", lead.State);
                }

                record.SetFieldValue("Last_Name", lead.LastName);
                record.SetFieldValue("First_Name", lead.FirstName);
                record.SetFieldValue("Name1", lead.FullName);
                record.SetFieldValue("Name2", lead.FullName);
                record.SetFieldValue("Email", lead.Email);
                record.SetFieldValue("Email_provided", lead.Email);
                record.SetFieldValue("Ebay_User_ID", lead.UserId);

                JObject layout = new JObject()
                {
                    { "id", 4212012000003357573 }
                };

                record.SetFieldValue("Layout", layout);

                return(record);
            }
            catch (Exception ex)
            {
                Trace.TraceError(ex.Message);
                throw ex;
            }
        }
Beispiel #24
0
        private ZCRMRecord InsertZohoLeadOffer(ZohoLead lead)
        {
            try
            {
                ZCRMRecord record = ZCRMRecord.GetInstance("Leads", null); //To get ZCRMRecord instance

                if (lead.Offers.Count > 0)
                {
                    Offer leadOffer = lead.Offers.First();
                    record.SetFieldValue("Offer_Amount1", leadOffer.OfferAmount);
                    record.SetFieldValue("Offer_Expiration", new DateTime(leadOffer.OfferExpirationDate.Year, leadOffer.OfferExpirationDate.Month, leadOffer.OfferExpirationDate.Day, leadOffer.OfferExpirationDate.Hour, leadOffer.OfferExpirationDate.Minute, leadOffer.OfferExpirationDate.Second));
                }

                //lead.StockNumber = "2168";
                if (!String.IsNullOrEmpty(lead.StockNumber))
                {
                    record.SetFieldValue("Stock_Number", lead.StockNumber);

                    ZCRMModule module = ZCRMModule.GetInstance("Contacts");
                    BulkAPIResponse <ZCRMRecord> response = module.SearchByCriteria("(Cust_ID:equals:" + lead.StockNumber + ")");
                    List <ZCRMRecord>            contacts = response.BulkData;

                    if (contacts != null)
                    {
                        if (contacts.Count > 0)
                        {
                            JObject customerId = new JObject()
                            {
                                { "id", contacts.First().EntityId }
                            };
                            record.SetFieldValue("Stock_Nbr", customerId);
                        }
                    }
                }

                if (lead.PageViews != null)
                {
                    record.SetFieldValue("Page_Views", lead.PageViews);
                }

                if (lead.Watchers != null)
                {
                    record.SetFieldValue("Current_Watchers", lead.Watchers.ToString());
                }

                if (!String.IsNullOrEmpty(lead.VehicleYear))
                {
                    record.SetFieldValue("Year_of_Unit", lead.VehicleYear);
                }

                if (!String.IsNullOrEmpty(lead.PhoneNumber))
                {
                    record.SetFieldValue("Phone_Number", lead.PhoneNumber);
                }
                if (!String.IsNullOrEmpty(lead.VehicleMake))
                {
                    record.SetFieldValue("Year_Make_Model", lead.VehicleMake + " " + lead.VehicleModel);
                    record.SetFieldValue("Year_Make_Model1", lead.VehicleMake + " " + lead.VehicleModel);
                }

                record.SetFieldValue("Item_Number", lead.EbayItemId);

                if (!String.IsNullOrEmpty(lead.City))
                {
                    record.SetFieldValue("Bidders_City", lead.City);
                }
                if (!String.IsNullOrEmpty(lead.State))
                {
                    record.SetFieldValue("Bidders_State", lead.State);
                }
                record.SetFieldValue("Last_Name", lead.LastName);
                record.SetFieldValue("Name1", lead.FullName);
                record.SetFieldValue("Email_provided", lead.Email);

                record.SetFieldValue("Ebay_User_ID", lead.UserId);

                JObject layout = new JObject()
                {
                    { "id", 4212012000003357243 }
                };
                //string layout = "{\"name\", \"Ebay Offer\",\"id\", \4212012000003357243\"}";

                record.SetFieldValue("Layout", layout);

                return(record);
            }
            catch (Exception ex)
            {
                Trace.TraceError(ex.Message);
                throw ex;
            }
        }
Beispiel #25
0
        public void SetRecordProperties(JObject recordJSON, ZCRMRecord record)
        {
            foreach (KeyValuePair <string, JToken> token in recordJSON)
            {
                string fieldAPIName = token.Key;
                if (fieldAPIName.Equals("id"))
                {
                    record.EntityId = Convert.ToInt64(token.Value);
                }
                else if (fieldAPIName.Equals("Product_Details"))
                {
                    SetInventoryLineItems(token.Value);
                }
                else if (fieldAPIName.Equals("Participants"))
                {
                    SetParticipants(token.Value);
                }
                else if (fieldAPIName.Equals("Pricing_Details"))
                {
                    SetPriceDetails((JArray)token.Value);
                }
                else if (fieldAPIName.Equals("Created_By") && token.Value.Type != JTokenType.Null)
                {
                    JObject  createdObject = (JObject)token.Value;
                    ZCRMUser createdUser   = ZCRMUser.GetInstance(Convert.ToInt64(createdObject["id"]), (string)createdObject["name"]);
                    record.CreatedBy = createdUser;
                }
                else if (fieldAPIName.Equals("Modified_By") && token.Value.Type != JTokenType.Null)
                {
                    JObject  modifiedObject = (JObject)token.Value;
                    ZCRMUser modifiedBy     = ZCRMUser.GetInstance(Convert.ToInt64(modifiedObject["id"]), (string)modifiedObject["name"]);
                    record.ModifiedBy = modifiedBy;
                }
                else if (fieldAPIName.Equals("Created_Time"))
                {
                    record.CreatedTime = CommonUtil.removeEscaping((string)JsonConvert.SerializeObject(token.Value));
                }
                else if (fieldAPIName.Equals("Modified_Time"))
                {
                    record.ModifiedTime = CommonUtil.removeEscaping((string)JsonConvert.SerializeObject(token.Value));
                }
                else if (fieldAPIName.Equals("Owner") && token.Value.Type != JTokenType.Null)
                {
                    JObject  ownerObject = (JObject)token.Value;
                    ZCRMUser ownerUser   = ZCRMUser.GetInstance(Convert.ToInt64(ownerObject["id"]), (string)ownerObject["name"]);
                    record.Owner = ownerUser;
                }
                else if (fieldAPIName.Equals("Layout") && token.Value.Type != JTokenType.Null)
                {
                    JObject    layoutObject = (JObject)token.Value;
                    ZCRMLayout layout       = ZCRMLayout.GetInstance(Convert.ToInt64(layoutObject["id"]));
                    layout.Name = (string)layoutObject["name"];
                }
                else if (fieldAPIName.Equals("Handler") && token.Value.Type != JTokenType.Null)
                {
                    JObject  handlerObject = (JObject)token.Value;
                    ZCRMUser handler       = ZCRMUser.GetInstance(Convert.ToInt64(handlerObject["id"]), (string)handlerObject["name"]);
                    record.SetFieldValue(fieldAPIName, handler);
                }

                else if (fieldAPIName.Equals("Remind_At") && token.Value.Type != JTokenType.Null)
                {
                    if (token.Value is JObject)
                    {
                        JObject remindObject = (JObject)token.Value;
                        record.SetFieldValue(fieldAPIName, remindObject["ALARM"]);
                    }
                    else
                    {
                        record.SetFieldValue(fieldAPIName, token.Value);
                    }
                }
                else if (fieldAPIName.Equals("Recurring_Activity") && token.Value.Type != JTokenType.Null)
                {
                    JObject recurringActivityObject = (JObject)token.Value;
                    record.SetFieldValue(fieldAPIName, recurringActivityObject["RRULE"]);
                }
                else if (fieldAPIName.Equals("$line_tax") && token.Value.Type != JTokenType.Null)
                {
                    JArray taxDetails = (JArray)token.Value;
                    foreach (JObject taxDetail in taxDetails)
                    {
                        ZCRMTax tax = ZCRMTax.GetInstance((string)taxDetail["name"]);
                        tax.Percentage = Convert.ToDouble(taxDetail["percentage"]);
                        tax.Value      = Convert.ToDouble(taxDetail["value"]);
                        record.AddTax(tax);
                    }
                }
                else if (fieldAPIName.Equals("Tax") && token.Value.Type != JTokenType.Null)
                {
                    var taxNames = token.Value;
                    foreach (string data in taxNames)
                    {
                        ZCRMTax tax = ZCRMTax.GetInstance(data);
                        record.AddTax(tax);
                    }
                }
                else if (fieldAPIName.Equals("tags") && token.Value.Type != JTokenType.Null)
                {
                    JArray        jsonArray = (JArray)token.Value;
                    List <string> tags      = new List <string>();
                    foreach (string tag in jsonArray)
                    {
                        tags.Add(tag);
                    }
                    record.TagNames = tags;
                }
                else if (fieldAPIName.Equals("Tag") && token.Value.Type != JTokenType.Null)
                {
                    JArray jsonArray = (JArray)token.Value;
                    foreach (JObject tag in jsonArray)
                    {
                        ZCRMTag tagIns = ZCRMTag.GetInstance(Convert.ToInt64(tag.GetValue("id")));
                        tagIns.Name = tag.GetValue("name").ToString();
                        record.Tags.Add(tagIns);
                    }
                }
                else if (fieldAPIName.StartsWith("$", StringComparison.CurrentCulture))
                {
                    fieldAPIName = fieldAPIName.TrimStart('\\', '$');
                    if (APIConstants.PROPERTIES_AS_FILEDS.Contains(fieldAPIName))
                    {
                        record.SetFieldValue(fieldAPIName, token.Value);
                    }
                    else
                    {
                        record.SetProperty(fieldAPIName, token.Value);
                    }
                }
                else if (token.Value is JObject)
                {
                    JObject    lookupDetails = (JObject)token.Value;
                    ZCRMRecord lookupRecord  = ZCRMRecord.GetInstance(fieldAPIName, Convert.ToInt64(lookupDetails["id"]));
                    lookupRecord.LookupLabel = (string)lookupDetails["name"];
                    record.SetFieldValue(fieldAPIName, lookupRecord);
                }
                else if (token.Value is JArray)
                {
                    JArray        jsonArray = (JArray)token.Value;
                    List <object> values    = new List <object>();

                    foreach (Object obj in jsonArray)
                    {
                        if (obj is JObject)
                        {
                            values.Add((JObject)obj);
                        }
                        else
                        {
                            values.Add(obj);
                        }
                    }
                    record.SetFieldValue(fieldAPIName, values);
                }
                else
                {
                    if (token.Value.Type.ToString().Equals("Date"))
                    {
                        record.SetFieldValue(fieldAPIName, CommonUtil.removeEscaping((string)JsonConvert.SerializeObject(token.Value)));
                    }
                    else
                    {
                        record.SetFieldValue(fieldAPIName, token.Value);
                    }
                }
            }
        }
Beispiel #26
0
 //TODO<IMPORTANT>: Lots of performance tune-ups are needed and needs plenty of testing!!;
 public void SetRecordProperties(JObject recordJSON, ZCRMRecord record)
 {
     //JObject recordDetails = new JObject(recordJSON);
     //TODO: If Performance is needed implement JSONTextReader or JSONReader and put thought into it later after completing the SDK;
     foreach (KeyValuePair <string, JToken> token in recordJSON)
     {
         string fieldAPIName = token.Key;
         if (fieldAPIName.Equals("id"))
         {
             record.EntityId = Convert.ToInt64(token.Value);
         }
         else if (fieldAPIName.Equals("Product_Details"))
         {
             SetInventoryLineItems((JArray)token.Value);
         }
         else if (fieldAPIName.Equals("Participants"))
         {
             SetParticipants((JArray)token.Value);
         }
         else if (fieldAPIName.Equals("Pricing_Details"))
         {
             SetPriceDetails((JArray)token.Value);
         }
         else if (fieldAPIName.Equals("Created_By"))
         {
             JObject  createdObject = (JObject)token.Value;
             ZCRMUser createdUser   = ZCRMUser.GetInstance(Convert.ToInt64(createdObject.GetValue("id")), Convert.ToString(createdObject.GetValue("name")));
             record.CreatedBy = createdUser;
         }
         else if (fieldAPIName.Equals("Modified_By"))
         {
             JObject  modifiedObject = (JObject)token.Value;
             ZCRMUser modifiedBy     = ZCRMUser.GetInstance(Convert.ToInt64(modifiedObject.GetValue("id")), Convert.ToString(modifiedObject.GetValue("name")));
         }
         else if (fieldAPIName.Equals("Created_Time"))
         {
             record.CreatedTime = Convert.ToString(token.Value);
         }
         else if (fieldAPIName.Equals("Modified_Time"))
         {
             record.ModifiedTime = Convert.ToString(token.Value);
         }
         else if (fieldAPIName.Equals("Owner"))
         {
             JObject  ownerObject = (JObject)token.Value;
             ZCRMUser ownerUser   = ZCRMUser.GetInstance(Convert.ToInt64(ownerObject.GetValue("id")), Convert.ToString(ownerObject.GetValue("name")));
             record.Owner = ownerUser;
         }
         else if (fieldAPIName.Equals("Layout") && token.Value.Type != JTokenType.Null)
         {
             JObject    layoutObject = (JObject)token.Value;
             ZCRMLayout layout       = ZCRMLayout.GetInstance(Convert.ToInt64(layoutObject.GetValue("id")));
             layout.Name = Convert.ToString(layoutObject.GetValue("name"));
         }
         else if (fieldAPIName.Equals("Handler") && token.Value.Type != JTokenType.Null)
         {
             JObject  handlerObject = (JObject)token.Value;
             ZCRMUser handler       = ZCRMUser.GetInstance(Convert.ToInt64(handlerObject.GetValue("id")), Convert.ToString(handlerObject.GetValue("name")));
             record.SetFieldValue(fieldAPIName, handler);
         }
         else if (fieldAPIName.Equals("Remind_At") && token.Value.Type == JTokenType.Null)
         {
             JObject remindObject = (JObject)token.Value;
             record.SetFieldValue(fieldAPIName, remindObject.GetValue("ALARM"));
         }
         else if (fieldAPIName.Equals("Recurring_Activity") && token.Value.Type != JTokenType.Null)
         {
             JObject recurringActivityObject = (JObject)token.Value;
             record.SetFieldValue(fieldAPIName, recurringActivityObject.GetValue("RRULE"));
         }
         else if (fieldAPIName.Equals("$line_tax"))
         {
             JArray taxDetails = (JArray)token.Value;
             foreach (JObject taxDetail in taxDetails)
             {
                 ZCRMTax tax = ZCRMTax.GetInstance(Convert.ToString(taxDetail.GetValue("name")));
                 tax.Percentage = Convert.ToDouble(taxDetail.GetValue("percentage"));
                 tax.Value      = Convert.ToDouble(taxDetail.GetValue("value"));
                 record.AddTax(tax);
             }
         }
         else if (fieldAPIName.Equals("Tax") && token.Value.Type != JTokenType.Null)
         {
             JArray taxNames = (JArray)token.Value;
             int    arrayLen = taxNames.Count;
             for (int i = 0; i < arrayLen; i++)
             {
                 ZCRMTax tax = ZCRMTax.GetInstance(Convert.ToString(taxNames[i]));
                 record.AddTax(tax);
             }
         }
         else if (fieldAPIName.StartsWith("$", StringComparison.CurrentCulture))
         {
             fieldAPIName = fieldAPIName.TrimStart('\\', '$');
             if (APIConstants.PROPERTIES_AS_FILEDS.Contains(fieldAPIName))
             {
                 record.SetFieldValue(fieldAPIName, token.Value);
             }
             else
             {
                 record.SetProperty(fieldAPIName, token.Value);
             }
         }
         else if (token.Value is JObject)
         {
             JObject    lookupDetails = (JObject)token.Value;
             ZCRMRecord lookupRecord  = ZCRMRecord.GetInstance(fieldAPIName, Convert.ToInt64(lookupDetails.GetValue("id")));
             lookupRecord.LookupLabel = Convert.ToString(lookupDetails.GetValue("name"));
             record.SetFieldValue(fieldAPIName, lookupRecord);
         }
         else if (token.Value is JArray)
         {
             JArray        jsonArray = (JArray)token.Value;
             List <object> values    = new List <object>();
             foreach (JObject jsonObject in jsonArray)
             {
                 values.Add(jsonObject);
             }
             record.SetFieldValue(fieldAPIName, values);
         }
         else
         {
             record.SetFieldValue(fieldAPIName, token.Value);
         }
     }
 }
Beispiel #27
0
 /// <summary>
 /// To get ZohoCRM record instance by passing module API name and entity(record) Id.
 /// </summary>
 /// <returns>ZCRMRecord class instance.</returns>
 /// <param name="moduleAPIName">modules' API name (String)</param>
 /// <param name="entityId">entity(record) Id (Long)</param>
 public ZCRMRecord GetRecordInstance(string moduleAPIName, long entityId)
 {
     return(ZCRMRecord.GetInstance(moduleAPIName, entityId));
 }