Как получить активность клиентов из Acumatica API - PullRequest
0 голосов
/ 17 сентября 2018

Итак, я пытался получить действия клиентов от Acumatica, используя конечную точку API.Я пытаюсь получить информацию из следующего списка:

  1. клиент-> контакты-> Действия
  2. сотрудник-> контакт-> Действия
  3. контакт-> Действия (не удалось заставить его работать) Contact?$expand=Activities

Может кто-нибудь сказать мне, какой путь мне нужно выбрать для получения действий клиента из конечной точки API Acumatica?Также у меня есть Активность на моем экземпляре Acumatica.Я иду через отладчик, чтобы посмотреть содержимое, но действия пустые.

 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;

    }
}

}

1 Ответ

0 голосов
/ 18 сентября 2018

После недолгого времяпровождения я наконец получил его.

Я сделал свой собственный запрос.

Затем сделал конечную точку из этого запроса.

Тогда я позвонил в пут, чтобы получить данные. так выглядит следующий код:

        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;

    }

Класс активности:

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; }
   }
}
...