Exemple #1
0
        /// <summary>
        /// Updates the payment details to admin123.
        /// </summary>
        /// <param name="paymentInfo">The payment information.</param>
        /// <param name="memberExternalId">The member external identifier.</param>
        /// <param name="memberId">The member identifier.</param>
        /// <param name="memberDetailId">The member detail identifier.</param>
        /// <returns></returns>
        public async Task <string> UpdatePaymentDetailsToAdmin123(PaymentInformationBO paymentInfo, string memberExternalId,
                                                                  long memberId, long memberDetailId)
        {
            if (paymentInfo != null && memberExternalId != string.Empty && memberId > 0 && memberDetailId > 0)
            {
                var memberID      = Convert.ToString(memberId);
                var memberDetails = await _unitOfWork.GetRepository <MemberDetail>().GetFirstOrDefaultAsync(a => a, b => b.MemberDetailId == memberDetailId);

                var admin123   = new Admin123Mapper(_unitOfWork);
                var admin123BO = new Admin123BO
                {
                    CORPID   = _appSettings.Value.CorpId,
                    AGENT    = _appSettings.Value.AgentId,
                    LASTNAME = memberDetails.LastName,
                    PAYMENT  = new PAYMENT
                    {
                        PAYMENTTYPE = paymentInfo.PaymentMethodType.ToLower().Equals(PaymentType.CC.ToString().ToLower()) ?
                                      PaymentType.CC.ToString() : PaymentType.ACH.ToString(),
                        TOKEN = AppSettings.Environment == Utilities.Enumerations.Environment.Production.ToString() ?
                                memberID : string.Concat(memberID, "-", AppSettings.Environment)
                    }
                };

                var memberDetailsObject = JsonConvert.SerializeObject(admin123BO);
                var uri           = new Uri(_appSettings.Value.Admin123Url);
                var stringContent = new StringContent(memberDetailsObject, UnicodeEncoding.UTF8, "application/json");
                var task          = Task.Run(() => admin123.PostURIAsync(uri, stringContent,
                                                                         _appSettings.Value.Admin123User, _appSettings.Value.Admin123Password, memberDetailsObject, memberExternalId));
                task.Wait();

                return(task.Result);
            }

            return(string.Empty);
        }
Exemple #2
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);
        }
Exemple #3
0
        //public async Task<bool> UpdateDocumentId(PaymentReceiptTemplateBO paymentReceiptTemplate)
        //{
        //   return await _paymentDataAccess.UpdateDocumentId(paymentReceiptTemplate);
        //}

        /// <summary>
        /// Updates the payment information.
        /// </summary>
        /// <param name="paymentInformation">The payment information.</param>
        /// /// <param name="auditLogBO">The payment information.</param>
        /// <returns></returns>
        /// <exception cref="CustomException">PaymentServiceUpdatePaymentInformationInputEmptyErrorCode</exception>
        public Task <RHPaymentResponse> UpdateRHPaymentInformation(PaymentInformationBO paymentInformation, AuditLogBO auditLogBO)
        {
            if (paymentInformation == null)
            {
                throw new CustomException(nameof(MemberConstants.PaymentServiceUpdatePaymentInformationInputEmptyErrorCode));
            }
            return(_paymentDataAccess.UpdateRHPaymentInformation(paymentInformation, auditLogBO));
        }
Exemple #4
0
        public async Task <int> UpdatePaymentInformation([FromBody] PaymentInformationBO paymentInformation)
        {
            var jwt = await HttpContext.GetTokenAsync(BrokerConstants.TokenScheme, BrokerConstants.AccessToken);

            var auditLogBO = new AuditLogBO(_appSettings.Value.ApplicationName, jwt, _httpContextAccessor);
            var statusCode = await _paymentService.UpdatePaymentInformation(paymentInformation, auditLogBO);

            return(statusCode);
        }
Exemple #5
0
        /// <summary>
        /// Updates the payment information.
        /// </summary>
        /// <param name="paymentInformation">The payment information.</param>
        /// <param name="auditLogBO">The audit log bo.</param>
        /// <returns></returns>
        public async Task <int> UpdatePaymentInformation(PaymentInformationBO paymentInformation, AuditLogBO auditLogBO)
        {
            var rows       = 0;
            var statusCode = PaymentUpdate.IsNotUpdated;

            if (paymentInformation != null)
            {
                var member = await _unitOfWork.GetRepository <Member>().GetFirstOrDefaultAsync(a => a, b => b.UserId == paymentInformation.UserId);

                var memberPayInfoToUpdate = await _unitOfWork.GetRepository <MemberSubscription>().GetPagedListAsync(a => a, predicate: b => b.MemberId == member.MemberId,
                                                                                                                     pageIndex: BrokerConstants.PAGE_INDEX, pageSize: BrokerConstants.PAGE_SIZE);

                var response = await UpdatePaymentDetailsToAdmin123(paymentInformation, member.Admin123Id, member.MemberId,
                                                                    member.MemberDetailId); //Updating payment information Admin123

                if (response.Trim().ToLower().Equals("ok"))
                {
                    foreach (var memberPaymentInfo in memberPayInfoToUpdate.Items)
                    {
                        if (paymentInformation.IsCardUpdate)
                        {
                            memberPaymentInfo.RoutingNumber       = string.Empty;
                            memberPaymentInfo.CardOrAccountNumber = paymentInformation.CreditCardNumber;
                            memberPaymentInfo.PaymentType         = (int)PaymentType.CC;
                            memberPaymentInfo.ModifiedBy          = paymentInformation.UserId;
                            memberPaymentInfo.ModifiedOn          = DateTime.Now;
                        }
                        else
                        {
                            memberPaymentInfo.CardOrAccountNumber = paymentInformation.BankAccountNumber;
                            memberPaymentInfo.PaymentType         = (int)PaymentType.ACH;
                            memberPaymentInfo.RoutingNumber       = paymentInformation.BankRoutingNumber;
                            memberPaymentInfo.ModifiedBy          = paymentInformation.UserId;
                            memberPaymentInfo.ModifiedOn          = DateTime.Now;
                        }
                        _unitOfWork.GetRepository <MemberSubscription>().Update(memberPaymentInfo);
                    }
                    rows = _unitOfWork.SaveChanges();
                    if (rows > 0)
                    {
                        statusCode = PaymentUpdate.IsUpdated;
                    }
                }

                //Log audit for update action on Payment Information
                await AuditMapper.AuditLogging(auditLogBO, paymentInformation.MemberId, AuditAction.Update, paymentInformation);
            }
            return((int)statusCode);
        }
Exemple #6
0
        public static RectangleHealthCustomer MapRH(PaymentInformationBO paymentInformationBO, IOptions <AppSettings> appSettings, long memberId, string externalId)
        {
            var memberID = Convert.ToString(memberId);

            return(new RectangleHealthCustomer
            {
                APIKey = appSettings.Value.RHAPIKey,

                //CustomerVaultId = AppSettings.Environment == Utilities.Enumerations.Environment.Production.ToString() ?
                //                                    memberID : string.Concat(memberID, "-", AppSettings.Environment),
                CustomerVaultId = externalId,
                RedirectURL = appSettings.Value.RedirectURLForRH,

                Billing = new RectangleBillingInfo
                {
                    FirstName = paymentInformationBO.FirstName,
                    LastName = paymentInformationBO.LastName,
                    Address1 = paymentInformationBO.Address,
                    City = paymentInformationBO.City,
                    State = paymentInformationBO.State,
                    Postal = paymentInformationBO.ZipCode
                }
            });
        }