/// <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); }
//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); }
//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)); }
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); }
/// <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); }
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 } }); }