示例#1
0
        //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);
        }
示例#2
0
        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);
        }