jonesy31944
jonesy31944

Reputation: 51

How to get Customer Activities from Acumatica API

So I've been trying to get Customer activities from Acumatica using the API endpoint. I try pulling the info down from the following:

  1. customer->contacts-> Activities
  2. employee->contact->Activities
  3. contact->Activities(could not get this one to work) Contact?$expand=Activities

Can someone please tell me which path I need to take to get Customer Activities from Acumatica API endpoint? Also I do have Activities on my Acumatica instance. I go through debugger to look at content but Activities are blank.

 public partial class RestService
{
    public async Task<List<Models.AcumaticaCustomerActivities>> GetCustomersActivitiesAsync(int top, string filterOperation, string filter)
    {
        if (await Login() == false) return null;

        List<Models.AcumaticaCustomerActivities> customersActivites; 

        //string url = settings.url + settings.endpoint + "Customer?$expand=Contacts,Contacts/Contact, Contacts/Contact/Activities";
        //string url = settings.url + settings.endpoint + "Employee?$expand=Contact/Activities";
        //string url = settings.url + settings.endpoint + "Contact?$expand=Activities";

        var uri = new Uri(url); //?$filter=Location eq 'MAIN'&$top=10");
        try
        {
            var response = await client.GetAsync(uri);
            if (response.IsSuccessStatusCode)
            {
                var content = await response.Content.ReadAsStringAsync();
                customersActivites = JsonConvert.DeserializeObject<List<Models.AcumaticaCustomerActivities>>(content);
            }
            else
            {
                err = await response.Content.ReadAsStringAsync();

                try
                {
                    ResponseMessage msg = JsonConvert.DeserializeObject<ResponseMessage>(err);
                    if (msg != null && msg.exceptionMessage != "") err = msg.exceptionMessage;
                    return null;
                }
                catch (Exception ex)
                {
                    err = ex.Message;
                    return null;
                }

            }
        }
        catch (Exception ex)
        {
            Debug.WriteLine(@"              ERROR {0}", ex.Message);
            err = ex.Message;
            return null;
        }


        return customersActivites;

    }
}

}

Upvotes: 0

Views: 347

Answers (1)

jonesy31944
jonesy31944

Reputation: 51

After messing with it for a week I finally got it.

I ended up making my own inquiry.

Then made an endpoint out of that inquiry.

Then I called a put to get the data. so it looks like this code wise:

        public async Task<List<Models.AcumaticaCustomerActivities>> GetCustomerActivitiesGIAsync(string filter)
    {
        if (await Login() == false) return null;

        List<Models.AcumaticaCustomerActivities> customerActivities = new List<Models.AcumaticaCustomerActivities>(); ;

        string url = settings.url + settings.endpoint + "AICustomerActivitiesGI?$expand=Result";
        string body = "{ \"ActivityIDGT\" : {value : \"" + filter + "\"} }";  // should be filter's name as exposed via endpoint.
        StringContent reqBody = new StringContent(body, Encoding.UTF8, "application/json");

        var uri = new Uri(url);
        try
        {
            var response = await client.PutAsync(uri, reqBody);
            if (response.IsSuccessStatusCode)
            {
                var content = await response.Content.ReadAsStringAsync();

                Models.AcumaticaCustomerActivityGIResults results = JsonConvert.DeserializeObject<Models.AcumaticaCustomerActivityGIResults>(content);

                if (results != null && results.Result != null && results.Result.Count > 0)
                {
                    customerActivities = results.Result;
                }

            }
            else
            {
                err = await response.Content.ReadAsStringAsync();

                try
                {
                    ResponseMessage msg = JsonConvert.DeserializeObject<ResponseMessage>(err);
                    if (msg != null && msg.exceptionMessage != "") err = msg.exceptionMessage;
                    return null;
                }
                catch (Exception ex)
                {
                    err = ex.Message;
                    return null;
                }

            }
        }
        catch (Exception ex)
        {
            Debug.WriteLine(@"              ERROR {0}", ex.Message);
            err = ex.Message;
            return null;
        }

        return customerActivities;

    }

Activity class:

public class AcumaticaCustomerActivityGIResults
    {
        public List<AcumaticaActivitiesGI> Result { get; set; }
    }

    public class AcumaticaActivitiesGI
    {
        public StringField NoteID { get; set; }

        public StringField CreatedByID { get; set; }
        public StringField CreatedBy { get; set; }
        public DateTimeField CreatedAt { get; set; } = new DateTimeField { value = Convert.ToDateTime("1/1/1900") };
        public StringField Owner { get; set; }
   }
}

Upvotes: 1

Related Questions