コード例 #1
0
        /// <summary>
        /// CallPartnerCaseActivity
        /// </summary>
        /// <param name="activity"></param>
        /// <returns></returns>
        private async Task CallPartnerCaseActivity(CaseActivityRequest activity)
        {
            var logDic = new Dictionary <string, object>
            {
                { "PartnerCaseToken", activity.CaseNo },
                { "CaseID", activity.PartnerCaseNo },
                { "PartnerCaseStatusKey", activity.ParentCaseStatus.ToString() },
                { "PartnerCaseTypeKey", activity.PartnerCaseType?.ToString() },
            };

            try
            {
                var partnerRequest = new PartnerCaseActivityRequest();
                partnerRequest.Header = new RequestHeader()
                {
                    RequestId = Guid.NewGuid().ToString(),
                };
                partnerRequest.CaseId        = activity.PartnerCaseNo;
                partnerRequest.PartnerCaseId = activity.CaseNo;
                partnerRequest.Status        = activity.ParentCaseStatus.ToString();
                if (activity.PartnerCaseType.HasValue)
                {
                    partnerRequest.CaseType = activity.PartnerCaseType.ToString();
                }
                //To do call Partner API
                await PartnerService.PublishCaseStatus(partnerRequest);
            }
            catch (Exception ex)
            {
                logDic.Add("Exception", ex.Message);
                Log.Error(new LogObject("CaseActivityManager_PartnerService", logDic));
            }
        }
コード例 #2
0
        public async Task <ResponseBase> PublishCaseStatus(PartnerCaseActivityRequest request)
        {
            var endpointUrl = $"{ConfigManager.Instance.GetWebConfigBaseURI<PartnerWebApiClientSection>("partnerWebApiClient").BaseUrl?.Value}publishCaseStatus";
            var requestJson = JsonConvert.SerializeObject(request);

            var logDic = new Dictionary <string, object>
            {
                { "RequestBody", requestJson },
            };

            try
            {
                var handler = new HttpClientHandler
                {
                    PreAuthenticate          = true,
                    ClientCertificateOptions = ClientCertificateOption.Automatic
                };

                _apiClient.Client = new HttpClient(handler);

                foreach (var header in ConfigManager.Instance.GetPartnerApiHeader())
                {
                    _apiClient.Client.DefaultRequestHeaders.Add(header.Name, header.Value);
                }
                _apiClient.Client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                _apiClient.Client.DefaultRequestHeaders.Add(
                    "User-Agent",
                    "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36");

                logDic.Add("DefaultRequestHeaders", _apiClient.Client.DefaultRequestHeaders.ToString());
                var response = await _apiClient.PutAsync <ResponseBase, PartnerCaseActivityRequest>(
                    new Uri(endpointUrl), request, LogOptionEnum.FullLog, logDic);

                HandleResponse(logDic, response);
                return(response);
            }
            catch (Exception ex)
            {
                Log.Info(new LogObject("PublishCaseStatus_PartnerService", logDic));

                throw new ExternalErrorException(
                          "Error when calling PublishCaseStatus route from PartnerService",
                          new LogObject("PartnerService_PublishCaseStatus",
                                        logDic), ex);
            }
        }