Reputation: 51
So I've been trying to get Customer activities from Acumatica using the API endpoint. I try pulling the info down from the following:
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
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