private AddRemoveRequestSAPResponse ProcessSAPResponse(Z_V_Osw_R_Add_Rem_Contract_RFCReturn RFCStrOutput) { try { AddRemoveRequestSAPResponse addremoveSAPResponse = new AddRemoveRequestSAPResponse(); addremoveSAPResponse.ProductSAPResponse = new List <AddRemoveProductSAPResponse>(); bool isAtLeastOneProductActionFailed = false; foreach (ZLW_OUT_GENERAL_DATA outGeneralData in RFCStrOutput.Out_General_Data) { AddRemoveProductSAPResponse LstSAPResponse = new AddRemoveProductSAPResponse(); addremoveSAPResponse.AgreementNumber = outGeneralData.OUT_IDENTIFIER; LstSAPResponse.LicensableID = outGeneralData.OUT_MATERIAL; if (outGeneralData.OUT_RETURN_VALUE == "00") { LstSAPResponse.Status = AddRemoveRequestDetailStatus.Success; } else if (outGeneralData.OUT_RETURN_VALUE == "02") { LstSAPResponse.Status = AddRemoveRequestDetailStatus.Warning; } else { LstSAPResponse.Status = AddRemoveRequestDetailStatus.Failure; isAtLeastOneProductActionFailed = true; } LstSAPResponse.Message = outGeneralData.OUT_RETURN_MSG; ContractAmendmentRequestARDetailsDTO obj = _addremoveRequest.ContractAddRemoveRequestDetails.Where(c => c.LicensableID == LstSAPResponse.LicensableID).First(); LstSAPResponse.ProductID = obj.ProductID.ToString(); LstSAPResponse.ProductName = obj.ProductName; LstSAPResponse.Action = (AddRemoveRequestDetailAction)obj.Action; addremoveSAPResponse.ProductSAPResponse.Add(LstSAPResponse); } if (isAtLeastOneProductActionFailed) { addremoveSAPResponse.RequestResponseStatus = AddRemoveRequestResponseStatus.Failure; } else { addremoveSAPResponse.RequestResponseStatus = AddRemoveRequestResponseStatus.Success; } return(addremoveSAPResponse); } catch (Exception ex) { throw ex; } }
public async Task <AddRemoveRequestSAPResponse> SendSAPRequest(List <ContractAmendmentRequestARDetailsDTO> contractAmendmentRequestARDetailsDTOList) { try { _addremoveRequest = new AddRemoveRequestCompositeEntity(); _addremoveRequest.ContractAddRemoveRequestDetails = contractAmendmentRequestARDetailsDTOList; //Service SAPRFCService = new Service(); //string strURL = System.Configuration.ConfigurationManager.AppSettings["ContractManagementSAPURL"]; AddRemoveRequestSAPResponse addremoveResp = null; ZLW_AGR_ADD_REM_CONTRACT[] sapAddRemoveProductData = null; ZLW_OUT_GENERAL_DATA[] sapOutput = null; BAPIRET2[] messageOutput = null; int numberOfProducts = contractAmendmentRequestARDetailsDTOList.Count; sapAddRemoveProductData = new ZLW_AGR_ADD_REM_CONTRACT[numberOfProducts]; sapOutput = new ZLW_OUT_GENERAL_DATA[0]; messageOutput = new BAPIRET2[numberOfProducts]; int count = 0; foreach (ContractAmendmentRequestARDetailsDTO addRemoveProduct in contractAmendmentRequestARDetailsDTOList) { sapAddRemoveProductData[count] = new ZLW_AGR_ADD_REM_CONTRACT(); messageOutput[count] = new BAPIRET2(); if (addRemoveProduct.Action == 1) { sapAddRemoveProductData[count].ACTN_CODE = "A"; } else { sapAddRemoveProductData[count].ACTN_CODE = "R"; } sapAddRemoveProductData[count].VBELN = addRemoveProduct.ContractNumber; sapAddRemoveProductData[count].MATNR = addRemoveProduct.LicensableID; sapAddRemoveProductData[count].ITEM_CATEG = addRemoveProduct.BillingTypeCode; count++; } Z_V_OSW_R_ADD_REM_CONTRACTRequest request = new Z_V_OSW_R_ADD_REM_CONTRACTRequest(); request.In_Agr_Add_Rem_Contract_In = sapAddRemoveProductData; request.Out_General_Data_In = sapOutput; request.Out_Messages_In = messageOutput; // HttpConnector client = new HttpConnector(); HttpClient httpClient = new HttpClient(); var baseUri = "https://saptstws.trafficmanager.net/MST/MSSDOEMCONTRACT/"; httpClient.BaseAddress = new Uri(baseUri); string token = ""; AuthenticationResult accessToken = await GetToken(); token = accessToken.AccessToken; // httpClient.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", "c55ddee3fc0643eab5534af29776892c"); httpClient.DefaultRequestHeaders.Accept.Clear(); httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); httpClient.DefaultRequestHeaders.Add("Authorization", accessToken.CreateAuthorizationHeader()); httpClient.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", "c55ddee3fc0643eab5534af29776892c"); httpClient.DefaultRequestHeaders.Add("Ocp-Apim-trace", "true"); httpClient.DefaultRequestHeaders.Add("X-CorrelationId", Guid.NewGuid().ToString()); var myContent = JsonConvert.SerializeObject(request); var buffer = System.Text.Encoding.UTF8.GetBytes(myContent); var byteContent = new ByteArrayContent(buffer); byteContent.Headers.ContentType = new MediaTypeHeaderValue("application/json"); var response = await httpClient.PostAsync("api/Contracts/AddOrRemove", byteContent); //var response = await httpClient.PostAsync("api/Contracts/AddOrRemove/", request, new JsonMediaTypeFormatter()); var responseContent = await response.Content.ReadAsStringAsync(); Z_V_Osw_R_Add_Rem_Contract_RFCReturn RFCStrOutput = JsonConvert.DeserializeObject <Z_V_Osw_R_Add_Rem_Contract_RFCReturn>(responseContent); addremoveResp = ProcessSAPResponse(RFCStrOutput); addremoveResp.SAPResponse = SerializeObject(RFCStrOutput, typeof(Z_V_Osw_R_Add_Rem_Contract_RFCReturn)); return(addremoveResp); } catch (Exception ex) { // _logger.LogError(ex, ex.Message); throw ex; } }