Exemple #1
0
        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;
            }
        }
Exemple #2
0
        private AddRemoveRequestSAPResponse CreateFailureSAPResponse(List <ContractAmendmentRequestARDetailsDTO> contractAmendmentRequestARDetailsDTOList, string agreementNumber)
        {
            AddRemoveRequestSAPResponse addRemoveRequestSAPResponse = new AddRemoveRequestSAPResponse();

            addRemoveRequestSAPResponse.RequestResponseStatus = AddRemoveRequestResponseStatus.RFCFailure;

            addRemoveRequestSAPResponse.AgreementNumber  = agreementNumber;
            addRemoveRequestSAPResponse.UniqueIdentifier = contractAmendmentRequestARDetailsDTOList[0].ContractAmendmentRequestID.ToString();

            foreach (ContractAmendmentRequestARDetailsDTO contractAddRemoveRequestDetailsDTO in contractAmendmentRequestARDetailsDTOList)
            {
                AddRemoveProductSAPResponse objProdResponse = new AddRemoveProductSAPResponse();
                objProdResponse.LicensableID = contractAddRemoveRequestDetailsDTO.LicensableID;
                objProdResponse.ProductID    = contractAddRemoveRequestDetailsDTO.ProductID.ToString();
                objProdResponse.ProductName  = contractAddRemoveRequestDetailsDTO.ProductName;
                objProdResponse.Status       = AddRemoveRequestDetailStatus.Failure;
                objProdResponse.Action       = (AddRemoveRequestDetailAction)contractAddRemoveRequestDetailsDTO.Action;

                addRemoveRequestSAPResponse.ProductSAPResponse.Add(objProdResponse);
            }

            return(addRemoveRequestSAPResponse);
        }
Exemple #3
0
        //private readonly ILogger<AddRemoveRequestService> _logger;



        public void SubmitAddRemoveRequest(AddRemoveRequestCompositeEntity addRemoveRequestCompositeEntity)
        {
            try
            {
                using (ContractDbContext contractDetailsEntities = new ContractDbContext())
                {
                    var config = new MapperConfiguration(cfg =>
                    {
                        cfg.CreateMap <ContractAmendmentRequestARDetailsDTO, ContractAmendmentRequestARDetails>();
                        cfg.CreateMap <UserInfoDTO, UserInfo>();
                    }
                                                         );
                    var mapper = new Mapper(config);
                    //UserInfo userInfo1 = mapper.Map<UserInfo>(addRemoveRequestCompositeEntity.UserInfo);
                    UserInfo userInfo = new UserInfo();

                    userInfo = GetEntityByDTOKey(addRemoveRequestCompositeEntity.UserInfo);

                    // _logger.LogInformation("Logging from addremoverequestservice");

                    //UserInfo userInfo = mapper. userMap<UserInfo>(addRemoveRequestCompositeEntity.UserInfo);
                    var customerNumber = addRemoveRequestCompositeEntity.AssociatedSoldTo;
                    //var ContractAmendmentAr = new List<ContractAmendmentRequestARDetails>();
                    //ContractAmendmentAr = ContractAmendmentRequestARs(addRemoveRequestCompositeEntity);
                    var entityID = userInfo.Entity_ID;
                    var email    = userInfo.EMail;
                    ContractAmendmentRequest contractAmendmentRequest = new ContractAmendmentRequest
                    {
                        // ContractAmendmentRequestID = 98373,
                        SubmissionDateTime  = System.DateTime.UtcNow,
                        EntityID            = entityID,
                        SAPResponseDateTime = System.DateTime.UtcNow,
                        SAPResponseDetails  = " ",
                        CustomerNumber      = customerNumber,
                        Description         = " ",
                        Status           = (short)AddRemoveRequestStatus.InProgress,
                        Type             = (short)AddRemoveRequestType.AddRemove,
                        LastModifiedDate = System.DateTime.UtcNow,
                        LastModifiedBy   = "xyz",
                        IsArchived       = false,
                        UserEmail        = email,
                    };

                    // contractDetailsEntities.Entry(contractAmendmentRequest).State = EntityState.Added;
                    //contractDetailsEntities.ContractAmendmentRequest.Add(contractAmendmentRequest);
                    contractDetailsEntities.ContractAmendmentRequest.Add(contractAmendmentRequest);
                    contractDetailsEntities.SaveChanges();
                    string contractSalesOrg = string.Empty;

                    string sAgreementNumber = string.Empty;
                    //contractAmendmentRequest.ContractAmendmentRequestARDetails = ContractAmendmentRequestARs(addRemoveRequestCompositeEntity);
                    foreach (ContractAmendmentRequestARDetailsDTO contractAmendmentRequestARDetailsDTO in addRemoveRequestCompositeEntity.ContractAddRemoveRequestDetails)
                    {
                        ContractAmendmentRequestARDetails contractAmendmentRequestARDetails = mapper.Map <ContractAmendmentRequestARDetails>(contractAmendmentRequestARDetailsDTO);
                        contractAmendmentRequest.ContractAmendmentRequestARDetails.Add(contractAmendmentRequestARDetails);
                        //contractDetailsEntities.Entry(contractAmendmentRequestARDetails).State = EntityState.Added;

                        //contractDetailsEntities.ContractAmendmentRequestARDetails.Add(contractAmendmentRequestARDetails);
                        //contractAmendmentRequest.ContractAmendmentRequestARDetails.Add(contractAmendmentRequestARDetails);
                    }

                    contractDetailsEntities.Entry(contractAmendmentRequest).State = EntityState.Modified;
                    try {
                        contractDetailsEntities.SaveChanges();
                    }
                    catch (Exception e)
                    {
                        throw e;
                    }

                    //Send SAP request
                    ContractAmendmentSAPService contractAmendmentSAPServices = new ContractAmendmentSAPService();
                    AddRemoveRequestSAPResponse addRemoveRequestSAPResponse  = null;
                    try
                    {
                        addRemoveRequestSAPResponse = contractAmendmentSAPServices.SendSAPRequest(addRemoveRequestCompositeEntity.ContractAddRemoveRequestDetails).GetAwaiter().GetResult();
                    }
                    catch (Exception ex)
                    {
                        addRemoveRequestSAPResponse = CreateFailureSAPResponse(addRemoveRequestCompositeEntity.ContractAddRemoveRequestDetails, sAgreementNumber);

                        // objlog.LogException(ex, -1, null, "AddRemoveRequestService", System.Diagnostics.TraceEventType.Error, "", "SubmitAddRemoveRequest");
                        // LogHelper.LogExceptionMessage(ex);
                        //logger.LogException(ex);
                    }
                    finally
                    {
                        UpdateSAPResponse(contractAmendmentRequest, addRemoveRequestSAPResponse);

                        // persist the changes to database.
                        contractDetailsEntities.SaveChanges();
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Exemple #4
0
        private void UpdateSAPResponse(ContractAmendmentRequest contractAmendmentRequest, AddRemoveRequestSAPResponse addRemoveRequestSAPResponse)
        {
            if (addRemoveRequestSAPResponse.RequestResponseStatus == AddRemoveRequestResponseStatus.Failure ||
                addRemoveRequestSAPResponse.RequestResponseStatus == AddRemoveRequestResponseStatus.RFCFailure)
            {
                contractAmendmentRequest.Status = (int)AddRemoveRequestStatus.Failure;
            }
            else if (addRemoveRequestSAPResponse.RequestResponseStatus == AddRemoveRequestResponseStatus.Success)
            {
                contractAmendmentRequest.Status = (int)AddRemoveRequestStatus.Success;
            }
            else if (addRemoveRequestSAPResponse.RequestResponseStatus == AddRemoveRequestResponseStatus.SuccessWithWarnings)
            {
                contractAmendmentRequest.Status = (int)AddRemoveRequestStatus.Success;
            }

            foreach (ContractAmendmentRequestARDetails contractContractAmendmentRequestARDetails in contractAmendmentRequest.ContractAmendmentRequestARDetails)
            {
                AddRemoveProductSAPResponse addRemoveProductSAPResponse
                    = addRemoveRequestSAPResponse.ProductSAPResponse.Where(
                          c => c.LicensableID == contractContractAmendmentRequestARDetails.LicensableID &&
                          Convert.ToInt64(c.ProductID) == contractContractAmendmentRequestARDetails.ProductID).First();

                contractContractAmendmentRequestARDetails.Status = (short)addRemoveProductSAPResponse.Status;
            }
        }
Exemple #5
0
        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;
            }
        }