private ServiceObject InitialMatch(string b2cObjectId)
        {
tryagain:

            HttpRequestMessage request = new HttpRequestMessage(
                method: HttpMethod.Get,
                requestUri: D365Client.BaseAddress + $"contacts?$select=defra_uniquereference,defra_securityword&$filter=defra_b2cobjectid eq '{b2cObjectId}'");

            HttpResponseMessage content = D365Client.SendAsync(request).Result;

            if (!content.IsSuccessStatusCode)
            {
                if (content.StatusCode == System.Net.HttpStatusCode.TooManyRequests ||
                    content.StatusCode == System.Net.HttpStatusCode.Unauthorized)
                {
                    D365Client = ClientFactory.GetHttpClient(moveToken: true);

                    goto tryagain;
                }

                throw new WebFaultException(content.ReasonPhrase, (int)content.StatusCode);
            }

            InitialMatchResponse contactResponse = JsonConvert.DeserializeObject <InitialMatchResponse>(content.Content.ReadAsStringAsync().Result);

            ServiceObject returnObj = new ServiceObject();

            if (contactResponse?.Value?.Count > 0)
            {
                if (contactResponse.Value.Count == 1)
                {
                    returnObj.ServiceUserID     = contactResponse.Value[0].ServiceUserID;
                    returnObj.UniqueReferenceId = contactResponse.Value[0].UniqueReferenceId;
                    returnObj.securityWordSet   = !string.IsNullOrWhiteSpace(contactResponse.Value[0].defra_securityword) ? true : false;
                    returnObj.ErrorCode         = 200;
                }
                else
                {
                    returnObj.ErrorCode = 412;
                    returnObj.ErrorMsg  = "Multiple records found";
                }
            }
            else
            {
                returnObj.ErrorCode = 204;
                returnObj.ErrorMsg  = "No Content";
            }

            return(returnObj);
        }
Exemplo n.º 2
0
        /// <summary>
        /// https://defra-custmstr-sanbox.api.crm4.dynamics.com/api/data/v8.2/contacts?$select=contactid,defra_uniquereference&$filter=defra_b2cobjectid eq '7b1ad2d0-7946-11e8-8d36-851e870eee8a'
        /// </summary>
        /// <param name="b2cObjectId"></param>
        /// <returns></returns>
        public ServiceObject InitialMatch(string b2cObjectId)
        {
            HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, httpClient.BaseAddress + "contacts?$select=contactid,defra_uniquereference&$filter=defra_b2cobjectid eq '" + b2cObjectId + "'");

            //request.Content.Headers.ContentType = MediaTypeHeaderValue.Parse("application/json");

            var content = httpClient.SendAsync(request).Result;

            if (!content.IsSuccessStatusCode)
            {
                throw new WebFaultException(content.ReasonPhrase, (int)content.StatusCode);
            }
            InitialMatchResponse contactResponse = JsonConvert.DeserializeObject <InitialMatchResponse>(content.Content.ReadAsStringAsync().Result);

            ServiceObject returnObj = new ServiceObject()
            {
                ErrorCode = 200
            };

            if (contactResponse != null && contactResponse.value != null && contactResponse.value.Count > 0)
            {
                if (contactResponse.value.Count == 1)
                {
                    returnObj.ServiceUserID     = contactResponse.value[0].ServiceUserID;
                    returnObj.UniqueReferenceId = contactResponse.value[0].UniqueReferenceId;
                }
                else
                {
                    returnObj.ErrorCode = 412;
                    returnObj.ErrorMsg  = "Multiple records found";
                }
            }
            else
            {
                returnObj.ErrorCode = 204;
                returnObj.ErrorMsg  = "No Content";
            }

            return(returnObj);
        }