开发者

Binding Links in a Custom Object using Upsert function in C# SalesForce?

开发者 https://www.devze.com 2023-03-20 06:06 出处:网络
I have the following code which creates a Task in Salesforce and then tracks a user\'s browsing history and stores it in SalesForce. Currently, it displays each and every page the user has browsed as

I have the following code which creates a Task in Salesforce and then tracks a user's browsing history and stores it in SalesForce. Currently, it displays each and every page the user has browsed as an individual entry. I want to group all those entries together in the Browsing_History__c object instead of task being created every time a user visits a page.

Any help would be appreciated..I am not familiar with SF very much. :)

private void CreateTaskInSF(string id, string type, string details, string description)
    {
        // if there's a similar Event in the past 2 hours, don't add it
        QueryResult qr = null;
        try // get events from past 2 hours
        {
            qr = Binding.query("Select Details__c from Task WHERE WhoId='" + id + "' and Type__c='" + type + "' and CreatedDate > " + DateTime.UtcNow.AddHours(-2).ToString("s") + "Z");
        }
        catch (Exception e)
        {
            return;
        }
        bool logged = false;
        if (qr != null) // if there are Tasks in past 2 hours
        {
            sforce.sObject[] browsing = qr.records;
            if (browsing != null)
            {
                // iterate through events to make sure the new Task isn't logged
                for (int i = 0; i < browsing.Length; i++)
                {
                    Task currTask = (Task)browsing[i];
                    if (currTask.Details__c == details)
                    {
                        if (description != "") // is there a description to check for?
                        {
                            string oldTaskDescription = "";
                            if (currTask.Description != null)
                                oldTaskDescription = currTask.Description;
                            if (oldTaskDescription == description) // if there is a description match
                                logged = true;
                        }
                        else
                            logged = true; // there's no description, so check only on details field
                    }
                }
            }
        }
        if (logged == true)
        {
            return; // if Activity is already logged, don't log it again
        }

        else if (type == "Browsing")
        {
            QueryResult browsingQuery = null;
            try // get events from past 2 hours
            {
                browsingQuery = Binding.query("Select Web_Browsing__c from Task WHERE WhoId='" + id + "' and Subject='" + type + "' and Details__c='" + details + "' and CreatedDate > " + DateTime.UtcNow.AddHours(-2).ToString("s") + "Z");
            }
            catch
            {

            }

            Boolean createNewBrowsing = false;
            if (browsingQuery != null) // if there are Tasks in past 2 hours
            {
                sforce.sObject[] webBrowsing = browsingQuery.records;
                if (webBrowsing != null)
                {
  开发者_运维技巧                  //find correct object and update Browsing_History__c
                    //Binding.update

                }

                else
                {
                    createNewBrowsing = true;
                }

            }
            else
            {
                createNewBrowsing = true;
            }

            if (createNewBrowsing)
            {

                Web_Browsing__c newTask = new Web_Browsing__c();
                newTask.Lead__c = id;
                newTask.Browsing_History_255__c = details;
                newTask.Type__c = type;

                newTask.Browsing_History__c = details;
                newTask.CreatedDate = DateTime.Now;
                //if(type == "Browsing") newTask. = details;
                //SaveResult[] createResult = Binding.create(new sObject[] { newTask });

            try
            {
                SaveResult[] createResult = Binding.create(new sObject[] { newTask });
            }
            catch (Exception e)
            {
                return;
            }

            }

        }

        else
        {
            // if this new Activity isn't logged, then create a new Activity Task
            sforce.Task newTask = new sforce.Task();
            newTask.WhoId = id;
            newTask.Subject = type;
            newTask.Details__c = details;
            if (description != "") newTask.Description = description;
            newTask.Status = "Completed";
            newTask.Priority = "Normal";
            newTask.ActivityDate = DateTime.Now;
            newTask.ActivityDateSpecified = true;

            // insert it
            try
            {
                SaveResult[] createResult = Binding.create(new sforce.sObject[] { newTask });

            }
            catch (Exception e)
            {
                return;
            }
        }


    }


You'll need to update your query to ask for the browsing history object and update the code to create a browsing history object instead of a task.

If you haven't already, review the Web Services API docs, it has examples for querying and creating in java/c#.

0

精彩评论

暂无评论...
验证码 换一张
取 消