//public async Task<bool> UpdateDocumentId(PaymentReceiptTemplateBO paymentReceipt) //{ // var member = await _unitOfWork.GetRepository<Member>(). // GetFirstOrDefaultAsync(a => a, predicate: b => b.ExternalId == paymentReceipt.ExternalId); // var memberPaymentDetailRepo = await _unitOfWork.GetRepository<MemberPaymentDetail>(). // GetPagedListAsync(a => a, predicate: b => b.MemberId == member.MemberId // && paymentReceipt.ProductIds.Contains(b.ProductId.GetValueOrDefault()) // && b.PaidDate == Convert.ToDateTime(paymentReceipt.PaidDate), // pageIndex: BrokerConstants.PAGE_INDEX, pageSize: BrokerConstants.PAGE_SIZE); // foreach (var paymentDetail in memberPaymentDetailRepo.Items) // { // paymentDetail.DocumentId = paymentReceipt.DocumentId; // _unitOfWork.GetRepository<MemberPaymentDetail>().Update(paymentDetail); // } // return await _unitOfWork.SaveChangesAsync() > 0; //} #region /// <summary> /// Updates the rh payment information. /// </summary> /// <param name="paymentInformation">The payment information.</param> /// <param name="auditLogBO">The audit log bo.</param> /// <returns></returns> /// //public async Task<RHPaymentResponse> UpdateRHPaymentInformation(PaymentInformationBO paymentInformation, AuditLogBO auditLogBO) //{ // var rhReponse = new RHPaymentResponse(); // var member = await _unitOfWork.GetRepository<Member>().GetFirstOrDefaultAsync(a => a, b => b.UserId == paymentInformation.UserId); // //fetching existing payment type // var existingPaymentType = await _unitOfWork.GetRepository<MemberSubscription>().GetFirstOrDefaultAsync(a => a, b => b.MemberId == member.MemberId); // if (paymentInformation != null) // { // var paymentDetail = MemberMapper.MapRH(paymentInformation, _appSettings, member.MemberId); // var getPaymentDetails = await _rectangleGatewayService.GetPaymentDetails( // paymentDetail.CustomerVaultId, _appSettings); // var vaultInfo = await _rectangleGatewayService.GetPaymentDetails(paymentDetail.CustomerVaultId, _appSettings); // if (vaultInfo?.RHCustomerVault?.Customer != null) // { // var customer = vaultInfo?.RHCustomerVault?.Customer; // // adding payment = cc from UI and creditcard number exist in RH (or) // // adding payment = ACH and achaccount number exist in RH then update the number // // there is no payment method change. // if ((existingPaymentType.PaymentType == (int)PaymentType.CC && !string.IsNullOrEmpty(customer.CreditCardNumber)) || // (existingPaymentType.PaymentType == (int)PaymentType.ACH && !string.IsNullOrEmpty(customer.ACHAccount))) // { // rhReponse = await _rectangleGatewayService.AddPaymentDetails(paymentDetail, _appSettings, true); // // should update the vault // //return true; // } // // adding payment = cc from UI and creditcard number not exist in RH (or) // // adding payment = ACH and achaccount number not exist in RH then dlete vault and add new vault // // there is no payment method change. // else if ((existingPaymentType.PaymentType == (int)PaymentType.CC && string.IsNullOrEmpty(customer.ACHAccount)) || // (existingPaymentType.PaymentType == (int)PaymentType.ACH && string.IsNullOrEmpty(customer.CreditCardNumber))) // { // // implement delete functionality // var deletePaymentDetail = MemberMapper.MapDeleteRH(_appSettings, member.MemberId); // rhReponse = await _rectangleGatewayService.DeletePaymentDetails(deletePaymentDetail, _appSettings); // // add new vault // if (rhReponse.Code.Equals(MemberConstants.RHErrorSuccessResponseCode)) // { // rhReponse = await _rectangleGatewayService.AddPaymentDetails(paymentDetail, _appSettings, false); // } // } // else // { // rhReponse = await AddPaymentDetails(rhReponse, member, paymentDetail); // } // } // else // { // rhReponse = await AddPaymentDetails(rhReponse, member, paymentDetail); // } // } // return rhReponse; //} #endregion public async Task <RHPaymentResponse> UpdateRHPaymentInformation(PaymentInformationBO paymentInformation, AuditLogBO auditLogBO) { var rhReponse = new RHPaymentResponse(); var member = await _unitOfWork.GetRepository <Member>().GetFirstOrDefaultAsync(a => a, b => b.UserId == paymentInformation.UserId); //fetching existing payment type var existingPaymentType = await _unitOfWork.GetRepository <MemberSubscription>().GetFirstOrDefaultAsync(a => a, b => b.MemberId == member.MemberId); if (paymentInformation != null) { var paymentDetail = MemberMapper.MapRH(paymentInformation, _appSettings, member.MemberId, member.ExternalId); rhReponse = await _rectangleGatewayService.AddPaymentDetails(paymentDetail, _appSettings, false); if (rhReponse.Code.Equals(MemberConstants.RHErrorResponseCode) && rhReponse.Text.ToLower().Trim().Contains(MemberConstants.DuplicateVaultId)) { var deletePaymentDetail = MemberMapper.MapDeleteRH(_appSettings, member.MemberId, member.ExternalId); rhReponse = await _rectangleGatewayService.DeletePaymentDetails(deletePaymentDetail, _appSettings); if (rhReponse.Code.Equals(MemberConstants.RHErrorSuccessResponseCode)) { rhReponse = await _rectangleGatewayService.AddPaymentDetails(paymentDetail, _appSettings, false); } } } return(rhReponse); }
private async Task <RHPaymentResponse> AddPaymentDetails(RHPaymentResponse rhReponse, Member member, RectangleHealthCustomer paymentDetail) { rhReponse = await _rectangleGatewayService.AddPaymentDetails(paymentDetail, _appSettings, false); if (rhReponse.Code.Equals(MemberConstants.RHErrorResponseCode) && rhReponse.Text.ToLower().Trim().Contains(MemberConstants.DuplicateVaultId)) { var deletePaymentDetail = MemberMapper.MapDeleteRH(_appSettings, member.MemberId, member.ExternalId); rhReponse = await _rectangleGatewayService.DeletePaymentDetails(deletePaymentDetail, _appSettings); if (rhReponse.Code.Equals(MemberConstants.RHErrorSuccessResponseCode)) { rhReponse = await _rectangleGatewayService.AddPaymentDetails(paymentDetail, _appSettings, false); } } return(rhReponse); }