예제 #1
0
    public static string GetPaymentButtons(BaseButtonGenerator bg)
    {
        var BtcCryptocurrency = CryptocurrencyFactory.Get(CryptocurrencyType.BTC);

        int           buttonsPresent = 0;
        StringBuilder sb             = new StringBuilder();

        foreach (var t in PaymentAccountDetails.PaymentAccountDetailsClasses)
        {
            var instance = Activator.CreateInstance(t);

            var gateway = (PaymentAccountDetails)PaymentAccountDetails.RunStaticMethod(t, "GetFirstIncomeGateway");

            if (gateway != null && gateway.AccountType != "MPesaAgent") //MPesaAgent do not support payment buttons
            {
                bg.Strategy = gateway.GetStrategy();
                sb.Append(bg.Generate());
                buttonsPresent++;
            }
        }

        if (BtcCryptocurrency.DepositEnabled && CryptocurrencyApiFactory.Get(BtcCryptocurrency.DepositApiProcessor).AllowToUsePaymentButtons())
        {
            sb.Append(GetBtcButton(bg));
            buttonsPresent++;
        }

        if (buttonsPresent == 0)
        {
            return(U6011.NOACTIVEPAYMENTPROCESSORS);
        }

        return(sb.ToString());
    }
예제 #2
0
    //For MPesa
    protected void SetProcessorValues()
    {
        AccountInformationDiv.Visible = false;
        string selectedProcessor = RadioFrom.SelectedValue;

        if (selectedProcessor == "MPesa")
        {
            AccountInformationDiv.Visible = true;
            Account.Enabled             = true;
            ChangeAccountButton.Visible = false;
            AddNewAccount.Visible       = false;
            var userAccountAddress = "";

            PaymentProcessor targetprocessor = PaymentAccountDetails.GetFromStringType(selectedProcessor);
            userAccountAddress = user.GetPaymentAddress(targetprocessor);

            if (!string.IsNullOrWhiteSpace(userAccountAddress))
            {
                Account.Visible             = true;
                Account.Enabled             = false;
                Account.Text                = userAccountAddress;
                ChangeAccountButton.Text    = U6007.CHANGE;
                ChangeAccountButton.Visible = true;
            }
            else
            {
                Account.Visible       = false;
                AddNewAccount.Text    = L1.ADDNEW;
                AddNewAccount.Visible = true;
            }
        }
    }
예제 #3
0
    public static void logPayout(string message, TransactionRequest request, TransactionResponse response,
                                 string paymentProcessor)
    {
        PaymentProcessor processor = PaymentAccountDetails.GetFromStringType(paymentProcessor);

        ErrorLogger.Log(String.Format(@"{0}:
                        PayoutRequest ID: {1}
                        Raw response: {2}", message, request.PayeeId, response.RawResponse), ErrorLoggerHelper.GetTypeFromProcessor(processor), true);
    }
예제 #4
0
    public static Money GetProperLimitValue(Member User, PaymentAccountDetails PP)
    {
        if (PP.OverrideGlobalLimit)
        {
            return(PP.CashoutLimit);
        }

        return(GetGlobalLimitValue(User));
    }
예제 #5
0
        public static void AddPaymentAccount(PaymentAccountDetails account)
        {
            Statistics stat = new Statistics();

            stat.Data1        = StatisticsManager.GetPaymentAccountName(account);
            stat.data2        = "0.000#0.000#0.000#0.000#0.000#0.000#0.000#0.000#0.000#0.000#0.000#0.000#0.000#0.000";
            stat.Type         = StatisticsType.AvailableFunds;
            stat.NumberOfDays = 14;
            stat.Save();
        }
예제 #6
0
        public static void UpdatePaymentAccount(string oldUserName, PaymentAccountDetails account)
        {
            if (oldUserName == account.Username)
            {
                return;
            }

            var        id   = TableHelper.SelectScalar(string.Format("SELECT Id FROM [Statistics] WHERE Data1 LIKE '{0}:{1}'", account.AccountType, oldUserName));
            Statistics stat = new Statistics((int)id);

            stat.Data1 = StatisticsManager.GetPaymentAccountName(account);
            stat.Save();
        }
예제 #7
0
    private void CheckBaseLimits()
    {
        if (IsCustomPayoutProcessor)
        {
            CheckMaxPayout(PaymentProcessor.CustomPayoutProcessor, User, AmountToPayout, CustomPayoutProcessorId);
        }
        else
        {
            CheckMaxPayout(PaymentAccountDetails.GetFromStringType(TargetPaymentProcessor), User, AmountToPayout);
        }

        PaymentAccountDetails TheGateway = null;

        if (!IsCustomPayoutProcessor)
        {
            TheGateway = PaymentAccountDetails.GetFirstGateway(TargetPaymentProcessor);
        }

        if (TheGateway == null && !IsCustomPayoutProcessor)
        {
            throw new MsgException("Sorry, no payment gateway available at the moment. Please try again soon.");
        }

        Money minPayout = Money.Zero;

        if (IsCustomPayoutProcessor)
        {
            minPayout = PayoutLimit.GetProperLimitValue(User, new CustomPayoutProcessor(CustomPayoutProcessorId));
        }
        else
        {
            minPayout = PayoutLimit.GetProperLimitValue(User, TheGateway);
        }

        if (AmountToPayout < minPayout)
        {
            throw new MsgException(U2502.AMOUNTHIGHER + ": " + minPayout.ToString());
        }

        //Cashout limits for automatic
        if (TheGateway != null && AppSettings.Payments.IsInstantPayout)
        {
            TheLimit = TheGateway.ManualCashoutAfterExceeding;

            if (AmountToPayout > TheGateway.ManualCashoutAfterExceeding)
            {
                IsAutomaticButAvoveTheLimit = true;
            }
        }
    }
예제 #8
0
    public static string GetPaymentButton(BaseButtonGenerator bg, Type t)
    {
        var sb       = new StringBuilder();
        var instance = Activator.CreateInstance(t);
        var gateway  = (PaymentAccountDetails)PaymentAccountDetails.RunStaticMethod(t, "GetFirstIncomeGateway");

        if (gateway != null && gateway.AccountType != "MPesaAgent") //MPesaAgent do not support payment buttons
        {
            bg.Strategy = gateway.GetStrategy();
            sb.Append(bg.Generate());
        }

        return(string.IsNullOrEmpty(sb.ToString()) ? U6011.NOACTIVEPAYMENTPROCESSORS : sb.ToString());
    }
예제 #9
0
        protected override ApiResultMessage HandleRequest(object args)
        {
            string  token          = ((JObject)args)["token"].ToString();
            int     pin            = Convert.ToInt32(((JObject)args)["pin"]);
            decimal amount         = Convert.ToDecimal(((JObject)args)["amount"]);
            string  processorValue = ((JObject)args)["processor"].ToString();

            int    userId = ApiAccessToken.ValidateAndGetUserId(token);
            Member User   = new Member(userId);

            User.ValidatePIN(pin.ToString());

            Money Amount = new Money(amount);

            Amount = Money.Parse(Amount.ToShortClearString());

            var userAccountAddress = String.Empty;

            try
            {
                var CustomProcessor = new CustomPayoutProcessor(int.Parse(processorValue));
                userAccountAddress = User.GetPaymentAddress(CustomProcessor.Id);
            }
            catch (Exception)
            {
                var selectedProcessor            = processorValue;
                PaymentProcessor targetprocessor = PaymentAccountDetails.GetFromStringType(selectedProcessor);
                userAccountAddress = User.GetPaymentAddress(targetprocessor);
            }

            //Lets process to cashout
            PayoutManager Manager = new PayoutManager(User, Amount, processorValue,
                                                      CustomPayoutProcessor.IsCustomPayoutProcessor(processorValue), CustomPayoutProcessor.GetCustomPayoutProcessorId(processorValue), userAccountAddress);

            string successMessage = Manager.TryMakePayout();

            return(new ApiResultMessage
            {
                success = true,
                message = successMessage,
                data = null
            });
        }
예제 #10
0
    public static void TryMarkAccountActivationFeeAsPaid(Member user, Money amount, string from, string transId, string cryptoCurrencyInfo)
    {
        bool Successful = false;

        try
        {
            String Message = String.Format(" {0} money for account activation. ", amount);

            if (amount < AppSettings.Registration.AccountActivationFee)
            {
                Message += "Amount is lower than expected! Account not activated.";
                History.AddEntry(Member.CurrentName, HistoryType.Transfer, Message);

                PoolDistributionManager.AddProfit(ProfitSource.AccountActivationFee, amount);
                throw new Exception(String.Format("Account activation fee is lower than expected! ({0})", amount));
            }

            AccountActivationFeeCrediter Crediter = (AccountActivationFeeCrediter)CrediterFactory.Acquire(user, CreditType.AccountActivationFee);
            var moneyLeftForPools = Crediter.CreditReferer(amount);

            //Pools
            PoolDistributionManager.AddProfit(ProfitSource.AccountActivationFee, moneyLeftForPools);

            user.IsAccountActivationFeePaid = true;
            user.Save();

            Message += "Account activated.";
            History.AddEntry(Member.CurrentName, HistoryType.Transfer, Message);

            Successful = true;
        }
        catch (Exception ex)
        {
            ErrorLogger.Log(ex);
        }

        PaymentProcessor PP = PaymentAccountDetails.GetFromStringType(from);

        CompletedPaymentLog.Create(PP, "Activation Fee", transId, false, user.Name, amount, Money.Zero, Successful, cryptoCurrencyInfo);
    }
예제 #11
0
    public string TryMakePayout()
    {
        ValidatePayout();

        string paymentAddress = PaymentAccountDetails.GetPaymentProcessorUserAccount(user, paymentProcessor);

        var         request     = new TransactionRequest(user.Name, paymentAddress, amountToPayout);
        Transaction transaction = TransactionFactory.CreateTransaction(request, paymentProcessor);
        var         response    = transaction.Commit();

        if (!response.IsSuccess)
        {
            if (request != null && response != null)
            {
                PayoutManager.logPayout("Commission Balance Payout unsuccessful", request, response, paymentProcessor);
            }
            throw new MsgException(response.Note);
        }

        PayoutRequest req = new PayoutRequest();

        req.Amount           = amountToPayout;
        req.IsPaid           = true;
        req.RequestDate      = DateTime.Now;
        req.Username         = user.Name;
        req.IsRequest        = false;
        req.BalanceType      = BalanceType.CommissionBalance;
        req.PaymentAddress   = paymentAddress;
        req.PaymentProcessor = paymentProcessor;
        req.Save();

        user.SubtractFromCommissionBalance(amountToPayout, "Payout");
        user.SaveBalances();

        History.AddCashout(user.Name, amountToPayout);
        PayoutManager.logPayout("Commission Balance Payout successful", request, response, paymentProcessor);
        PaymentProof.Add(user, req);

        return(U3501.AUTOMATICCASHOUTSUCC + ": " + response.Note);
    }
예제 #12
0
    /// <summary>
    /// FROM AP
    /// </summary>
    /// <param name="request"></param>
    /// <param name="gateway"></param>
    /// <param name="transaction"></param>
    /// <returns></returns>
    public static bool MakePayout(PayoutRequest request, PaymentAccountDetails gateway, ref Transaction transaction)
    {
        transaction.Commit();
        if (transaction.Response.IsSuccess)
        {
            request.IsPaid    = true;
            request.IsRequest = false;
            request.Save();

            Member User = new Member(request.Username);

            //Add payment proof
            PaymentProof.Add(User, request);

            //Add statistics
            var stats = new Statistics(StatisticsType.Cashflow);
            stats.AddToData2(request.Amount);
            stats.Save();

            //Add history
            History.AddCashout(request.Username, request.Amount);


            if (gateway is PayPalAccountDetails)
            {
                // Log because payment may have response status SuccessWithWarning
                // More on this: https://developer.paypal.com/webapps/developer/docs/classic/api/NVPAPIOverview/
                logPayout("Payout successful", request, transaction.Response, request.PaymentProcessor);
            }

            return(true);
        }
        else
        {
            logPayout("Payout unsuccessful", request, transaction.Response, request.PaymentProcessor);
            return(false);
        }
    }
예제 #13
0
    /// <summary>
    /// FROM AP
    /// </summary>
    /// <param name="request"></param>
    public static void RejectRequest(PayoutRequest request)
    {
        Member User = new Member(request.Username);

        try
        {
            PaymentProcessor processor = PaymentAccountDetails.GetFromStringType(request.PaymentProcessor);
            PaymentProportionsManager.UndoMemberPaidOut(request.Amount, processor, User);
        }
        catch
        {
            //processor = custom processor
        }

        request.IsPaid           = true;
        request.PaymentProcessor = "REJECTED";
        request.Save();

        User.MoneyCashout -= request.Amount;
        User.AddToMainBalance(request.Amount, "Payout rejected");
        User.Save();

        History.AddCashoutRejection(User.Name, request.Amount.ToString());
    }
예제 #14
0
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!AppSettings.Registration.IsAccountActivationFeeEnabled || User.IsAccountActivationFeePaid)
        {
            AccessManager.RedirectIfDisabled(false);
        }

        UpgradeViaPaymentProcessor.Text = U6005.PAYVIAPAYMENTPROCESSOR;
        PriceLiteral.Text = AppSettings.Registration.AccountActivationFee.ToString();

        if (!Page.IsPostBack)
        {
            if (!PaymentAccountDetails.AreIncomingPaymentProcessorsAvailable())
            {
                UpgradeViaPaymentProcessorPlaceHolder.Visible = false;
                NoPaymentProcessorsPlaceHolder.Visible        = true;
            }

            if (AppSettings.Payments.CashBalanceEnabled && AppSettings.Registration.AccountActivationFeeViaCashBalanceEnabled &&
                AppSettings.Registration.AccountActivationFeeVia == AccountActivationFeeVia.UserPanel)
            {
                PayViaCashBalancePlaceHolder.Visible = true;
                PayViaCashBalanceButton.Text         = String.Format("{0} ({1})", U6005.PAYVIACASHBALANCE, User.CashBalance);
                PayViaCashBalanceButton.Enabled      = User.CashBalance >= AppSettings.Registration.AccountActivationFee ? true : false;

                String linkToDeposit = String.Format("<a href=\"user/transfer.aspx\">{0}</a>.", U6011.HERE);
                RedirectToDepositLiteral.Text    = String.Format("<p style=\"text-align:center\"> <br /> {0} <br />{1} {2}</p>  ", U6011.YOUCANPAYVIACASHBALANCE, U6011.YOUCANDEPOSITCASH, linkToDeposit);
                RedirectToDepositLiteral.Visible = !PayViaCashBalanceButton.Enabled;
            }
        }

        if (TitanFeatures.IsRofriqueWorkMines)
        {
            UpgradeViaPaymentProcessorPlaceHolder.Visible = false;
        }
    }
예제 #15
0
 public static void DeletePaymentAccount(PaymentAccountDetails account)
 {
     TableHelper.DeleteRows <Statistics>(TableHelper.MakeDictionary("Data1", StatisticsManager.GetPaymentAccountName(account)));
 }
예제 #16
0
    protected void btnTransfer_Click(object sender, EventArgs e)
    {
        ErrorMessagePanel.Visible = false;
        ErrorMessage.Text         = "";
        MessageUpdatePanel.Update();

        string amount = TransferFromTextBox.Text.Trim().Replace(",", ".");
        Money  Amount;

        try
        {
            Amount = Money.Parse(amount).FromMulticurrency();

            //Direct BTC transfer. BTC -> BTC Wallet
            if (RequestedBTCCryptocurrencyTransfer)
            {
                Amount = new CryptocurrencyMoney(CryptocurrencyType.BTC, Decimal.Parse(amount));
            }

            Member User = Member.Current;

            var HtmlResponse  = false;
            var ResultMessage = TransferHelper.TryInvokeTransfer(RadioFrom.SelectedValue, RadioTo.SelectedValue, Amount, User, ref HtmlResponse);

            if (ResultMessage == U3501.TRANSFEROK)
            {
                Response.Redirect("../status.aspx?type=transferok");
            }
            else
            {
                //It was a payment processor transfer
                btnTransfer.Visible = false;

                //MPesa Sapama?
                if (RadioFrom.SelectedValue == "MPesaAgent")
                {
                    Response.Redirect("~/user/deposit.aspx?mpesa=" + Amount.ToClearString());
                }

                PaymentAmountLabel.Text = L1.AMOUNT + ": <b>" + Amount.ToString() + "</b>";

                if (RadioFrom.SelectedValue == BtcCryptocurrency.DepositApiProcessor.ToString())
                {
                    PaymentFeeLabel.Visible           = false;
                    PaymentAmountWithFeeLabel.Visible = false;
                }
                else
                {
                    var gateway = PaymentAccountDetails.GetFirstGateway(RadioFrom.SelectedValue, true);

                    if (gateway == null)
                    {
                        throw new MsgException("No specified gateway installed.");
                    }

                    Amount = gateway.CalculateAmountWithFee(Amount);
                    PaymentFeeLabel.Text           = U3500.CASHOUT_FEES + ": <b>" + gateway.StaticFee.ToString() + "</b> + <b>" + gateway.PercentFee + "%</b>";
                    PaymentAmountWithFeeLabel.Text = L1.AMOUNT + " + " + U3500.CASHOUT_FEES + " = <b>" + Amount.ToString() + "</b>";

                    PaymentFeeLabel.Visible           = true;
                    PaymentAmountWithFeeLabel.Visible = true;
                }

                PaymentAmountLabel.Visible = true;
                transferInputRow.Visible   = false;
                dropdownlistsRow.Visible   = false;
                PaymentButtons.Text        = ResultMessage;
            }
        }
        catch (MsgException ex)
        {
            ShowErrorMessage(ex.Message);
        }
        catch (Exception ex)
        {
            ErrorLogger.Log(ex);
            ShowErrorMessage(ex.Message);
        }
    }
예제 #17
0
    protected void Page_Load(object sender, EventArgs e)
    {
        AccessManager.RedirectIfDisabled(AppSettings.TitanFeatures.MoneyTransferEnabled);

        user = Member.Current;
        AppSettings.Reload();

        BtcCryptocurrency   = CryptocurrencyFactory.Get <BitcoinCryptocurrency>();
        EthCryptocurrency   = CryptocurrencyFactory.Get <EthereumCryptocurrency>();
        XrpCryptocurrency   = CryptocurrencyFactory.Get <RippleCryptocurrency>();
        TokenCryptocurrency = CryptocurrencyFactory.Get <RippleCryptocurrency>();

        DepositButton.Visible = AppSettings.Representatives.RepresentativesHelpDepositEnabled;

        if (!Page.IsPostBack)
        {
            if (BtcCryptocurrency.DepositEnabled)
            {
                BTCButton.Visible = !CryptocurrencyApiFactory.GetDepositApi(BtcCryptocurrency).AllowToUsePaymentButtons();

                if (TitanFeatures.IsRofriqueWorkMines)
                {
                    BTCButton.Text = "BTC Deposits";
                }
                else
                {
                    BTCButton.Text = "BTC";
                }
            }

            if (TitanFeatures.IsFlotrading)
            {
                BalanceButton.CssClass        = "";
                BTCButton.CssClass            = "ViewSelected";
                MenuMultiView.ActiveViewIndex = 1;
            }

            if (TitanFeatures.IsTrafficThunder)
            {
                UserBalancesPlaceHolder.Visible = false;
            }

            AppSettings.Reload();

            LangAdder.Add(DepositButton, U6010.DEPOSITVIAREPRESENTATIVE);
            LangAdder.Add(btnTransfer, L1.TRANSFER);
            LangAdder.Add(DepositViaRepresentativeButton, U6010.SENDTRANSFERMESSAGE);
            LangAdder.Add(MPesaConfirmButton, L1.CONFIRM);
            LangAdder.Add(BTCAmountRequiredFieldValidator, U2502.INVALIDMONEYFORMAT);
            LangAdder.Add(CalculatePointsValueButton, U6007.CALCULATE);

            //MPesa?
            if (Request.QueryString["mpesa"] != null)
            {
                StandardTransferPlaceHolder.Visible = false;
                MPesaTransferPlaceHolder2.Visible   = true;
                var gateway = PaymentAccountDetails.GetFirstIncomeGateway <MPesaSapamaAccountDetails>();
                MPesaAmount.Text = String.Format(U6005.TODEPOSITVIAMPESA, gateway.Username, gateway.Username,
                                                 Money.Parse(Request.QueryString["mpesa"]).ToString());
            }

            //Pre-selected tab
            if (Request.QueryString["button"] != null)
            {
                var button = (Button)MenuButtonPlaceHolder.FindControl("Button" + Request.QueryString["button"]);
                MenuButton_Click(button, null);
            }

            RadioFrom.Items.AddRange(GenerateHTMLButtons.DepositBalanceFromItems);

            if (TitanFeatures.IsRofriqueWorkMines && !CryptocurrencyApiFactory.GetDepositApi(BtcCryptocurrency).AllowToUsePaymentButtons())
            {
                RadioFrom.Items.Add(new ListItem("", "BTC"));
            }

            BTCTo.Items.AddRange(GenerateHTMLButtons.BTCToItems);

            if (BtcCryptocurrency.DepositEnabled)
            {
                BTCValueLabel.Text    = ClassicBTCValueLabel.Text = string.Format("<p class='alert alert-info'>{0}: <b>{1}</b></p>", U5003.ESTIMATEDBTCVALUE, BtcCryptocurrency.GetValue().ToString());
                BTCValueLabel.Visible = ClassicBTCValueLabel.Visible = AppSettings.Site.CurrencyCode != "BTC"; //We don't want to show 1B = 1B

                BTCPointsFrom.Items.AddRange(GenerateHTMLButtons.BTCFromItems);

                BTCPointsFrom.SelectedIndex = 0;

                if (BTCPointsFrom.SelectedValue == "Wallet")
                {
                    btnDepositBTC.Visible = true;

                    if (BtcCryptocurrency.DepositTarget == DepositTargetBalance.PurchaseBalance)
                    {
                        BTCTo.SelectedValue = "AdBalance";
                    }
                    else if (BtcCryptocurrency.DepositTarget == DepositTargetBalance.CashBalance)
                    {
                        BTCTo.SelectedValue = "CashBalance";
                    }
                    else if (BtcCryptocurrency.DepositTarget == DepositTargetBalance.Wallet)
                    {
                        BTCTo.SelectedValue = "BTCWallet";
                    }
                }

                BTCButtonPanel.Visible  = CryptocurrencyApiFactory.GetDepositApi(BtcCryptocurrency).AllowToUsePaymentButtons();
                ClassicBTCPanel.Visible = !CryptocurrencyApiFactory.GetDepositApi(BtcCryptocurrency).AllowToUsePaymentButtons();
            }

            if (((AppSettings.Payments.CommissionToMainBalanceEnabled && !TitanFeatures.UserCommissionToMainBalanceEnabled) ||
                 (TitanFeatures.UserCommissionToMainBalanceEnabled && user.CommissionToMainBalanceEnabled) ||
                 TitanFeatures.IsRevolca) && user.CheckAccessCustomizeTradeOwnSystem)
            {
                RadioTo.Items.Add(new ListItem("", "Main balance"));
            }

            if (!AppSettings.Payments.CashBalanceEnabled)
            {
                ListItem cb = RadioTo.Items.FindByValue("Cash balance");
                if (cb != null)
                {
                    RadioTo.Items.Remove(cb);
                }
            }

            if (!AppSettings.Payments.MarketplaceBalanceEnabled)
            {
                ListItem cb = RadioTo.Items.FindByValue("Marketplace balance");
                if (cb != null)
                {
                    RadioTo.Items.Remove(cb);
                }
            }

            SetRadioToValues();
            SetProcessorValues();
            SetupSpecialTransfersProperties();

            if (RadioFrom.Items.Count == 0 || RadioTo.Items.Count == 0)
            {
                //No transfers available
                transferInputRow.Visible = false;
                TransferSameCommissionToMainLiteral.Visible = true;
                TransferSameCommissionToMainLiteral.Text    = U5006.NOTRANSFEROPTIONS;
                transfertable.Visible = false;
            }

            if (TitanFeatures.IsTradeOwnSystem)
            {
                //Checking condition to display appropriate message
                if (!user.CheckAccessCustomizeTradeOwnSystem && user.CommissionToMainBalanceRequiredViewsMessageInt > 0)
                {
                    CommissionTransferInfoDiv.Visible = true;
                    CommissionTransferInfo.Text       = String.Format(U6010.COMMISSIONBALANCETRANSFERINFO, user.CommissionToMainBalanceRequiredViewsMessageInt, AppSettings.RevShare.AdPack.AdPackName);
                }
                else if (!user.CheckAccessCustomizeTradeOwnSystem && user.CommissionToMainBalanceRequiredViewsMessageInt == 0)
                {
                    CommissionTransferInfoDiv.Visible = true;
                    CommissionTransferInfo.Text       = String.Format(U6010.COMMISSIONBALANCETRANSFERNOACTIVEADPACKINFO, AppSettings.RevShare.AdPack.AdPackName);
                }
                else
                {
                    CommissionTransferInfoDiv.Visible = false;
                }
            }

            if (BtcCryptocurrency.DepositEnabled && BtcCryptocurrency.DepositMinimum > 0)
            {
                AdditionalInfoPlaceHolder.Visible = true;
                AdditionalInfoLiteral.Text        = String.Format(U6012.WARNINGMINBTCDEPOSIT, CryptocurrencyMoney.Parse(BtcCryptocurrency.DepositMinimum.ToString(), CryptocurrencyType.BTC).ToString());
            }
        }

        SetRadioItemsValues(RadioFrom);
        SetRadioItemsValues(RadioTo);
        SetRadioItemsValues(BTCTo);

        RemoveDuplicatesFromList();

        foreach (ListItem item in BTCPointsFrom.Items)
        {
            item.Attributes.Add("data-content", "<img src='../Images/OneSite/TransferMoney/GoCoin.png' /> BTC");
        }

        if (!TitanFeatures.IsRofriqueWorkMines)
        {
            LangAdder.Add(BalanceButton, U5009.BALANCE);
        }
        else
        {
            LangAdder.Add(BalanceButton, "Cash Deposits");
        }

        LangAdder.Add(btnDepositBTC, U4200.DEPOSIT);
        LangAdder.Add(classicbtcDepositBTC, U4200.DEPOSIT);
    }
예제 #18
0
    public bool TryMakeInvestmentLevelsPayout()
    {
        // payoutRequest --> change property to false (it isn't request)
        var req = new PayoutRequest
        {
            Amount      = AmountToPayout,
            IsPaid      = true,
            RequestDate = DateTime.Now,
            Username    = User.Name,
            IsRequest   = false,
            BalanceType = BalanceType.InvestmentLevels
        };

        //User payment address
        string paymentAddress = PaymentAccountDetails.GetPaymentProcessorUserAccount(User, TargetPaymentProcessor);

        if (String.IsNullOrEmpty(paymentAddress))
        {
            throw new MsgException(U5004.YOUMUST);
        }

        request = new TransactionRequest(User.Name, paymentAddress, AmountToPayout);
        Transaction transaction = TransactionFactory.CreateTransaction(request, TargetPaymentProcessor);

        response = transaction.Commit();

        req.PaymentAddress   = paymentAddress;
        req.PaymentProcessor = TargetPaymentProcessor;

        if (!response.IsSuccess)
        {
            if (request != null && response != null)
            {
                logPayout("Payout unsuccessful", request, response, req.PaymentProcessor);
            }
            return(false);
        }
        req.Save();

        History.AddInvestmentLevelCashout(User.Name, AmountToPayout);

        //Add to daily cashout
        AppSettings.Payments.GlobalCashoutsToday += AmountToPayout;
        AppSettings.Payments.Save();

        //Add outcome to stats (Data2);
        var stats = new Statistics(StatisticsType.Cashflow);

        stats.AddToData2(AmountToPayout);
        stats.Save();

        //Add paymentproof
        PaymentProof.Add(User.Id, AmountToPayout, PaymentType.Instant, PaymentAccountDetails.GetFromStringType(TargetPaymentProcessor));

        // Log because payment may have response status SuccessWithWarning
        // More on this: https://developer.paypal.com/webapps/developer/docs/classic/api/NVPAPIOverview/
        logPayout("Payout successful", request, response, req.PaymentProcessor);

        ErrorLogger.Log(string.Format("{0}: {1}", U3501.AUTOMATICCASHOUTSUCC, response.Note));
        return(true);
    }
예제 #19
0
    protected void SetProcessorValues()
    {
        Account.Enabled             = true;
        ChangeAccountButton.Visible = false;
        AddNewAccount.Visible       = false;
        var   userAccountAddress = "";
        Money GlobalLimit        = PayoutLimit.GetGlobalLimitValue(User);
        var   errorNote          = "";

        try
        {
            //Custom Processor
            var CustomProcessor = new CustomPayoutProcessor(int.Parse(RadioFrom.SelectedValue));
            userAccountAddress = User.GetPaymentAddress(CustomProcessor.Id);
            Account.Text       = userAccountAddress;

            //Limits
            string limit     = (CustomProcessor.OverrideGlobalLimit ? CustomProcessor.CashoutLimit : GlobalLimit).ToShortString();
            Money  maxPayout = PayoutManager.GetMaxPossiblePayout(PaymentProcessor.CustomPayoutProcessor, User, out errorNote);

            if (maxPayout > User.MainBalance)
            {
                maxPayout = User.MainBalance;
            }

            MinLimitLabel.Text = limit;
            MaxLimitLabel.Text = maxPayout.ToShortString();
            InfoLabel.Text     = CustomProcessor.Description;
            FeesLabel.Text     = CustomProcessor.FeesToString();
        }
        catch (Exception)
        {
            //Automatic processor
            var selectedProcessor = RadioFrom.SelectedValue;

            if (!String.IsNullOrEmpty(selectedProcessor))
            {
                PaymentProcessor targetprocessor = PaymentAccountDetails.GetFromStringType(selectedProcessor);
                userAccountAddress = User.GetPaymentAddress(targetprocessor);
                var gateway = PaymentAccountDetails.GetFirstGateway(selectedProcessor);

                //Limits
                string limit     = (gateway.OverrideGlobalLimit ? gateway.CashoutLimit : GlobalLimit).ToShortString();
                Money  maxPayout = PayoutManager.GetMaxPossiblePayout(PaymentAccountDetails.GetFromStringType(gateway.AccountType), User, out errorNote);

                if (maxPayout > User.MainBalance)
                {
                    maxPayout = User.MainBalance;
                }

                MinLimitLabel.Text = limit;
                MaxLimitLabel.Text = maxPayout.ToShortString();
                FeesLabel.Text     = NumberUtils.FormatPercents(gateway.WithdrawalFeePercent.ToString());
            }
        }

        if (!string.IsNullOrWhiteSpace(userAccountAddress))
        {
            Account.Visible             = true;
            Account.Enabled             = false;
            Account.Text                = userAccountAddress;
            ChangeAccountButton.Text    = U6007.CHANGE;
            ChangeAccountButton.Visible = true;
        }
        else
        {
            Account.Visible       = false;
            AddNewAccount.Text    = L1.ADDNEW;
            AddNewAccount.Visible = true;
        }
    }
예제 #20
0
    protected void BuyViaPaymentProcessorButton_Click(object sender, EventArgs e)
    {
        try
        {
            var selectedPlan = new InvestmentPlatformPlan(int.Parse(PlansDropDownList.SelectedValue));
            var targetPrice  = selectedPlan.Price;

            if (AppSettings.InvestmentPlatform.LevelsEnabled)
            {
                InvestmentLevelsManager.CanUserDepositOnLevel(selectedPlan, User);
            }

            if (selectedPlan.MaxPrice > Money.Zero)
            {
                if (AppSettings.InvestmentPlatform.InvestmentPlatformPlansPolicy == PlansPolicy.OneUpgradedPlan)
                {
                    throw new MsgException(U6012.CANTUPGRADERANGEPLAN);
                }

                targetPrice = Money.Parse(RangePriceTextBox.Text);
                if (!selectedPlan.CheckPlanPrice(targetPrice))
                {
                    throw new MsgException(U6012.TYPECORRECTPRICE);
                }
            }

            var bg          = new BuyInvestmentPlanButtonGenerator(User, selectedPlan, targetPrice);
            var buttonsText = string.Empty;

            if (CurrentMode == InvestmentPlatformMode.Levels)
            {
                if (selectedPlan.PaymentProcessor == PaymentProcessor.Null)
                {
                    throw new MsgException(U6013.NOPAYMENTPROCESSORSCONNECTEDWITHLEVEL);
                }

                /* TODO - Add options to pay with cryptocurrency(?)
                 * if(selectedPlan.PaymentProcessor == PaymentProcessor.Coinbase || selectedPlan.PaymentProcessor == PaymentProcessor.CoinPayments)
                 *  buttonsText = GenerateHTMLButtons.GetPaymentButton(bg, CryptocurrencyType);
                 */

                var type = PaymentAccountDetails.GetGatewayType(selectedPlan.PaymentProcessor.ToString());
                buttonsText = GenerateHTMLButtons.GetPaymentButton(bg, type);
            }
            else
            {
                buttonsText = GenerateHTMLButtons.GetPaymentButtons(bg);
            }

            PaymentButtons.Text = buttonsText;

            PaymentProcessorsButtonPlaceHolder.Visible = true;
            BuyControlsPlaceHolder.Visible             = false;
        }
        catch (Exception ex)
        {
            ErrorPanel.Visible    = true;
            ErrorTextLiteral.Text = ex.Message;
            if (ex is MsgException == false)
            {
                ErrorLogger.Log(ex);
            }
        }
    }
예제 #21
0
    private string TryMakeInstantPayout(Money fee)
    {
        // payoutRequest --> change property to false (it isn't request)
        PayoutRequest req = new PayoutRequest();

        req.Amount      = AmountToPayout - fee;
        req.IsPaid      = true;
        req.RequestDate = DateTime.Now;
        req.Username    = User.Name;
        req.IsRequest   = false;
        req.BalanceType = BalanceType.MainBalance;

        //Check if daily limit is not reached
        if (AppSettings.Payments.GlobalCashoutsToday + AmountToPayout - fee > AppSettings.Payments.GlobalCashoutLimitPerDay)
        {
            throw new MsgException(L1.TOOMANYCASHOUTS + " " + AppSettings.Payments.GlobalCashoutLimitPerDay.ToString());
        }

        //User payment address
        string paymentAddress = PaymentAccountDetails.GetPaymentProcessorUserAccount(User, TargetPaymentProcessor);

        if (String.IsNullOrEmpty(paymentAddress))
        {
            throw new MsgException(U5004.YOUMUST);
        }

        request = new TransactionRequest(User.Name, paymentAddress, AmountToPayout - fee);
        Transaction transaction = TransactionFactory.CreateTransaction(request, TargetPaymentProcessor);

        response = transaction.Commit();

        req.PaymentAddress   = paymentAddress;
        req.PaymentProcessor = TargetPaymentProcessor;

        if (!response.IsSuccess)
        {
            if (request != null && response != null)
            {
                PayoutManager.logPayout("Payout unsuccessful", request, response, req.PaymentProcessor);
            }
            throw new MsgException(response.Note);
        }

        req.Save();

        History.AddCashout(User.Name, AmountToPayout);

        User.SubtractFromMainBalance(AmountToPayout, "Payout");
        User.MoneyCashout += AmountToPayout - fee;
        User.IsPhoneVerifiedBeforeCashout = false;
        User.CashoutsProceed++;
        User.Save();

        //Update payout proportions
        PaymentProportionsManager.MemberPaidOut(AmountToPayout - fee, PaymentAccountDetails.GetFromStringType(TargetPaymentProcessor), User, IsCustomPayoutProcessor);

        //Add to daily cashout
        AppSettings.Payments.GlobalCashoutsToday += AmountToPayout - fee;
        AppSettings.Payments.Save();

        //Add outcome to stats (Data2);
        var stats = new Statistics(StatisticsType.Cashflow);

        stats.AddToData2(AmountToPayout);
        stats.Save();

        //Add paymentproof
        PaymentProof.Add(User.Id, AmountToPayout, PaymentType.Instant, PaymentAccountDetails.GetFromStringType(TargetPaymentProcessor));

        // Log because payment may have response status SuccessWithWarning
        // More on this: https://developer.paypal.com/webapps/developer/docs/classic/api/NVPAPIOverview/
        logPayout("Payout successful", request, response, req.PaymentProcessor);

        return(U3501.AUTOMATICCASHOUTSUCC + ": " + response.Note);
    }
예제 #22
0
    public static Dictionary <string, List <string> > GetAvailableOptions()
    {
        Dictionary <string, List <string> > AvailableTransfers = new Dictionary <string, List <string> >();

        var TokenCryptocurrency = CryptocurrencyFactory.Get(CryptocurrencyType.ERC20Token);
        var BtcCryptocurrency   = CryptocurrencyFactory.Get(CryptocurrencyType.BTC);

        if (AppSettings.Payments.TransferMainInAdBalanceEnabled)
        {
            TryAdd(AvailableTransfers, "Main balance", "Purchase balance");
        }

        if (((AppSettings.Payments.CommissionToMainBalanceEnabled && !TitanFeatures.UserCommissionToMainBalanceEnabled) ||
             (TitanFeatures.UserCommissionToMainBalanceEnabled && Member.Current.CommissionToMainBalanceEnabled)) && Member.CurrentInCache.CheckAccessCustomizeTradeOwnSystem)
        {
            TryAdd(AvailableTransfers, "Commission Balance", "Main balance");
        }

        if (AppSettings.Payments.CommissionToAdBalanceEnabled)
        {
            TryAdd(AvailableTransfers, "Commission Balance", "Purchase balance");
        }

        if (TitanFeatures.isAri)
        {
            TryAdd(AvailableTransfers, "Main balance", "Cash balance");
            TryAdd(AvailableTransfers, "Commission Balance", "Cash balance");
        }

        if (TitanFeatures.IsRevolca)
        {
            TryAdd(AvailableTransfers, "Purchase balance", "Main balance");
        }

        foreach (var t in PaymentAccountDetails.PaymentAccountDetailsClasses)
        {
            var instance = Activator.CreateInstance(t);

            if (PaymentAccountDetails.RunStaticMethod(t, "GetFirstIncomeGateway") != null)
            {
                string pp = t.GetProperty("AccountType").GetValue(instance, null).ToString();

                if (pp == "MPesa")  //MPesa only to Cash Balance or Purchase Balance (if Cash Balance disabled)
                {
                    if (AppSettings.Payments.CashBalanceEnabled)
                    {
                        TryAdd(AvailableTransfers, pp, "Cash balance");
                    }
                    else
                    {
                        TryAdd(AvailableTransfers, pp, "Purchase balance");
                    }
                }
                else //All other payment processors = no restrictions
                {
                    if (AppSettings.Payments.TransferFromPaymentProcessorsToAdBalanceEnabled)
                    {
                        TryAdd(AvailableTransfers, pp, "Purchase balance");
                    }

                    if (AppSettings.TitanFeatures.AdvertTrafficExchangeEnabled)
                    {
                        TryAdd(AvailableTransfers, pp, "Traffic balance");
                    }

                    if (AppSettings.Payments.CashBalanceEnabled)
                    {
                        TryAdd(AvailableTransfers, pp, "Cash balance");
                    }

                    if (AppSettings.Payments.MarketplaceBalanceDepositEnabled)
                    {
                        TryAdd(AvailableTransfers, pp, "Marketplace balance");
                    }

                    if (AppSettings.Points.PointsDepositEnable)
                    {
                        TryAdd(AvailableTransfers, pp, TransferOptionConst.PointsTransfer);
                    }
                }
            }
        }

        if (AppSettings.TitanFeatures.AdvertTrafficExchangeEnabled)
        {
            TryAdd(AvailableTransfers, "Main balance", "Traffic balance");
        }

        if (AppSettings.Payments.CashToAdBalanceEnabled)
        {
            TryAdd(AvailableTransfers, "Cash balance", "Purchase balance");
        }

        if (AppSettings.Payments.MainToMarketplaceBalanceEnabled)
        {
            TryAdd(AvailableTransfers, "Main balance", "Marketplace balance");
        }

        if (AppSettings.Payments.TransferFromBTCWalletToPurchaseBalanceEnabled)
        {
            TryAdd(AvailableTransfers, "BTC Wallet", "Purchase balance");
        }

        if (AppSettings.Payments.TransferFromTokenWalletToPurchaseBalanceEnabled)
        {
            TryAdd(AvailableTransfers, TokenCryptocurrency.Code + " Wallet", "Purchase balance");
        }

        if (AppSettings.Payments.TransferFromMainBalanceToTokenWalletEnabled)
        {
            TryAdd(AvailableTransfers, "Main balance", TokenCryptocurrency.Code + " Wallet");
        }

        if (BtcCryptocurrency.DepositEnabled && CryptocurrencyApiFactory.Get(BtcCryptocurrency.DepositApiProcessor).AllowToUsePaymentButtons())
        {
            string RadioToName = (BtcCryptocurrency.DepositTarget == DepositTargetBalance.Wallet) ? "BTC Wallet" : BtcCryptocurrency.DepositTarget.ToString();
            TryAdd(AvailableTransfers, BtcCryptocurrency.DepositApiProcessor.ToString(), RadioToName);
        }

        return(AvailableTransfers);
    }
예제 #23
0
    protected static string TryInvokeProcessorTransfer(string transferFrom, string transferTo, Money amount, Member user)
    {
        var BtcCryptocurrency = CryptocurrencyFactory.Get(CryptocurrencyType.BTC);

        if (transferFrom == BtcCryptocurrency.DepositApiProcessor.ToString() && amount is CryptocurrencyMoney)
        {
            //We have BTC direct transfer
            var cryptoAmount = (CryptocurrencyMoney)amount;
            var bg           = new DepositToWalletCryptocurrencyButtonGenerator(user, cryptoAmount);
            return(GenerateHTMLButtons.GetBtcButton(bg));
        }

        if (transferFrom == BtcCryptocurrency.DepositApiProcessor.ToString())
        {
            var bg = new DepositCryptocurrencyButtonGenerator(user, amount);
            return(GenerateHTMLButtons.GetBtcButton(bg));
        }

        if (amount < AppSettings.Payments.MinimumTransferAmount)
        {
            throw new MsgException(U3000.ITSLOWERTHANMINIMUM);
        }

        var thegateway = PaymentAccountDetails.GetFirstGateway(transferFrom, true);

        if (thegateway == null)
        {
            throw new MsgException("No specified gateway installed.");
        }

        amount = thegateway.CalculateAmountWithFee(amount);

        if (transferTo == "Traffic balance")
        {
            var bg = new TransferToRentalBalanceButtonGenerator(user, amount);
            bg.Strategy = thegateway.GetStrategy();
            return(bg.Generate());
        }
        else if (transferTo == "Purchase balance")
        {
            var bg = new TransferToAdvertisingBalanceButtonGenerator(user, amount);
            bg.Strategy = thegateway.GetStrategy();
            return(bg.Generate());
        }
        else if (transferTo == "Cash balance")
        {
            var bg = new TransferToCashBalanceButtonGenerator(user, amount);
            bg.Strategy = thegateway.GetStrategy();
            return(bg.Generate());
        }
        else if (transferTo == "Marketplace balance")
        {
            var bg = new TransferToMarketplaceBalanceButtonGenerator(user, amount);
            bg.Strategy = thegateway.GetStrategy();
            return(bg.Generate());
        }
        else if (transferTo == TransferOptionConst.PointsTransfer)
        {
            var bg = new TransferToPointsBalanceButtonGenerator(user, amount);
            bg.Strategy = thegateway.GetStrategy();
            return(bg.Generate());
        }

        return(String.Empty);
    }
예제 #24
0
    public string TryMakePayout()
    {
        Money withdrawalFee = Money.Zero;

        if (!IsCustomPayoutProcessor)
        {
            var processor = PaymentAccountDetails.GetFirstGateway(TargetPaymentProcessor);
            withdrawalFee = Money.MultiplyPercent(AmountToPayout, processor.WithdrawalFeePercent);

            var address = UsersPaymentProcessorsAddress.GetAddress(User.Id, new PaymentProcessorInfo((PaymentProcessor)Enum.Parse(typeof(PaymentProcessor), processor.AccountType)));
            if (address != null)
            {
                if (TargetAccount != address.PaymentAddress)
                {
                    throw new MsgException("Don't try to use account ID which is different from your current one. To change account ID go to user settings panel.");
                }

                if (address.LastChanged.AddDays(processor.DaysToBlockWithdrawalsAfterAccountChangename) > AppSettings.ServerTime)
                {
                    throw new MsgException(string.Format(U6007.CANTWITHDRAWDAYSLIMIT, (address.LastChanged.AddDays(processor.DaysToBlockWithdrawalsAfterAccountChangename).DayOfYear - AppSettings.ServerTime.DayOfYear)));
                }
            }
            else
            {
                User.SetPaymentAddress(processor.Id, TargetAccount);
            }
        }
        else
        {
            var blockingDays = new CustomPayoutProcessor(CustomPayoutProcessorId).DaysToBlockWithdrawalsAfterAccounChange;
            var address      = UsersPaymentProcessorsAddress.GetAddress(User.Id, new PaymentProcessorInfo(CustomPayoutProcessorId));
            if (address != null)
            {
                if (TargetAccount != address.PaymentAddress)
                {
                    throw new MsgException("Don't try to use account ID which is different from your current one. To change account ID go to user settings panel.");
                }

                if (address.LastChanged.AddDays(blockingDays) > AppSettings.ServerTime)
                {
                    throw new MsgException(string.Format(U6007.CANTWITHDRAWDAYSLIMIT, (address.LastChanged.AddDays(blockingDays).DayOfYear - AppSettings.ServerTime.DayOfYear)));
                }
            }
            else
            {
                User.SetPaymentAddress(CustomPayoutProcessorId, TargetAccount);
            }
        }

        ValidatePayout(User, AmountToPayout);

        //Check the gateway limit (global limit, pp custom limit)
        CheckBaseLimits();

        //CLP ---> extension for private client CLP
        User = Titan.CLP.CLPManager.CheckCashoutBonus(User, AmountToPayout);

        if (IsManualPayout()) //Decide if we go with automatic or manual
        {
            return(TryMakeManualPayout(withdrawalFee));
        }
        else
        {
            return(TryMakeInstantPayout(withdrawalFee));
        }

        return("");
    }
예제 #25
0
    protected void Page_Load(object sender, EventArgs e)
    {
        AccessManager.RedirectIfDisabled(AppSettings.TitanFeatures.MoneyTransferEnabled);

        user = Member.Current;
        AppSettings.Reload();

        BtcCryptocurrency   = CryptocurrencyFactory.Get <BitcoinCryptocurrency>();
        EthCryptocurrency   = CryptocurrencyFactory.Get <EthereumCryptocurrency>();
        XrpCryptocurrency   = CryptocurrencyFactory.Get <RippleCryptocurrency>();
        TokenCryptocurrency = CryptocurrencyFactory.Get <RippleCryptocurrency>();

        PointsButton.Text           = AppSettings.PointsName;
        PointsButton.Visible        = ShowPointsView();
        PointsToSpinsButton.Visible = AppSettings.TitanFeatures.SlotMachineEnabled;
        RofriquePlaceHolder.Visible = TitanFeatures.IsRofrique;

        if (AppSettings.Payments.TransferMode != TransferFundsMode.DenyAll)
        {
            TransferToOthersButton.Visible = true;
            TransferToOthersButton.Text    = U3500.TRANSFERTOOTHER;
        }

        if (!Page.IsPostBack)
        {
            if (TitanFeatures.IsJ5WalterOffersFromHome)
            {
                BalanceButton.Visible         = false;
                PointsButton.CssClass         = "ViewSelected";
                MenuMultiView.ActiveViewIndex = 1;
            }

            if (TitanFeatures.isBoazorSite)
            {
                BalanceButton.Visible          = false;
                TransferToOthersButton.Visible = false;
                MenuMultiView.ActiveViewIndex  = 1;
            }


            if (TitanFeatures.IsTrafficThunder)
            {
                UserBalancesPlaceHolder.Visible = false;
            }

            AppSettings.Reload();

            LangAdder.Add(btnTransfer, L1.TRANSFER);
            LangAdder.Add(btnTransferPoints, L1.TRANSFER);
            LangAdder.Add(MPesaConfirmButton, L1.CONFIRM);

            //MPesa?
            if (Request.QueryString["mpesa"] != null)
            {
                StandardTransferPlaceHolder.Visible = false;
                MPesaTransferPlaceHolder2.Visible   = true;
                var gateway = PaymentAccountDetails.GetFirstIncomeGateway <MPesaSapamaAccountDetails>();
                MPesaAmount.Text = String.Format(U6005.TODEPOSITVIAMPESA, gateway.Username, gateway.Username,
                                                 Money.Parse(Request.QueryString["mpesa"]).ToString());
            }

            //Pre-selected tab
            if (Request.QueryString["button"] != null)
            {
                var button = (Button)MenuButtonPlaceHolder.FindControl("Button" + Request.QueryString["button"]);
                MenuButton_Click(button, null);
            }

            RadioFrom.Items.AddRange(GenerateHTMLButtons.TransferBalanceFromItems);

            //Points -> Main Balance (on/off)
            if (!AppSettings.Misc.IsTransferPointsToMainBalanceEnabled || !AppSettings.Points.PointsEnabled)
            {
                PointsTo.Items.RemoveAt(2);
            }

            if (!AppSettings.Payments.PointsToAdBalanceEnabled)
            {
                PointsTo.Items.Remove("Purchase balance");
            }

            if (AppSettings.Payments.TransferMode == TransferFundsMode.AllowMainBalanceOnly ||
                AppSettings.Payments.TransferMode == TransferFundsMode.AllowMainToPurchaseBalance)
            {
                MemberFrom.Items[1].Selected = true;
                MemberFrom.Items.RemoveAt(0);
            }
            else if (AppSettings.Payments.TransferMode == TransferFundsMode.AllowPointsOnly)
            {
                MemberFrom.Items.RemoveAt(1);
            }

            if (((AppSettings.Payments.CommissionToMainBalanceEnabled && !TitanFeatures.UserCommissionToMainBalanceEnabled) ||
                 (TitanFeatures.UserCommissionToMainBalanceEnabled && user.CommissionToMainBalanceEnabled) ||
                 TitanFeatures.IsRevolca) && user.CheckAccessCustomizeTradeOwnSystem)
            {
                RadioTo.Items.Add(new ListItem("", "Main balance"));
                TransferSameCommissionToMainLiteral.Visible = true;
                TransferSameCommissionToMainLiteral.Text    = U5004.TRANSFERCOMMISSIONTOMAINFEE + ": <b>"
                                                              + user.Membership.SameUserCommissionToMainTransferFee.ToString() + "%</b><br />";

                if (user.Membership.SameUserCommissionToMainTransferFee == 0)
                {
                    TransferSameCommissionToMainP.Visible = false;
                }
            }

            if (AppSettings.TitanFeatures.AdvertTrafficExchangeEnabled == false)
            {
                ListItem a = PointsTo.Items.FindByValue("Traffic balance");
                ListItem b = RadioTo.Items.FindByValue("Traffic balance");
                if (a != null)
                {
                    PointsTo.Items.Remove(a);
                }
                if (b != null)
                {
                    RadioTo.Items.Remove(b);
                }
            }

            if (!AppSettings.Payments.CashBalanceEnabled)
            {
                ListItem cb = RadioTo.Items.FindByValue("Cash balance");
                if (cb != null)
                {
                    RadioTo.Items.Remove(cb);
                }
            }

            if (!AppSettings.Payments.MarketplaceBalanceEnabled)
            {
                ListItem cb = RadioTo.Items.FindByValue("Marketplace balance");
                if (cb != null)
                {
                    RadioTo.Items.Remove(cb);
                }
            }

            #region TransferFee
            var pointsFee     = user.Membership.OtherUserPointsToPointsTransferFee;
            var mainToMainFee = user.Membership.OtherUserMainToMainTransferFee;
            var mainToAdFee   = user.Membership.OtherUserMainToAdTransferFee;

            if (AppSettings.Payments.TransferMode == TransferFundsMode.AllowPointsAndMainBalance)
            {
                TransferOthersMainToMainLiteral.Visible = true;
                TransferOthersMainToMainLiteral.Text    = U5004.THEFEE.Replace("%a%", "<b>" + L1.MAINBALANCE + "</b>")
                                                          .Replace("%n%", "<b>" + mainToMainFee.ToString() + "%</b>");

                TransferOthersPointsLiteral.Visible = true;
                TransferOthersPointsLiteral.Text    = U5004.THEFEE.Replace("%a%", "<b>" + AppSettings.PointsName + "</b>")
                                                      .Replace("%n%", "<b>" + pointsFee.ToString() + "%</b>");
            }
            else if (AppSettings.Payments.TransferMode == TransferFundsMode.AllowMainBalanceOnly)
            {
                TransferOthersMainToMainLiteral.Visible = true;
                TransferOthersMainToMainLiteral.Text    = U5004.THEFEE.Replace("%a%", "<b>" + L1.MAINBALANCE + "</b>")
                                                          .Replace("%n%", "<b>" + mainToMainFee.ToString() + "%</b>");
            }
            else if (AppSettings.Payments.TransferMode == TransferFundsMode.AllowPointsOnly)
            {
                TransferOthersPointsLiteral.Visible = true;
                TransferOthersPointsLiteral.Text    = U5004.THEFEE.Replace("%a%", "<b>" + AppSettings.PointsName + "</b>")
                                                      .Replace("%n%", "<b>" + pointsFee.ToString() + "%</b>");
            }
            else if (AppSettings.Payments.TransferMode == TransferFundsMode.AllowMainToPurchaseBalance)
            {
                TransferOthersMainToAdLiteral.Visible = true;
                TransferOthersMainToAdLiteral.Text    = U5004.THEFEE.Replace("%a%", "<b>" + L1.MAINBALANCE + "</b>")
                                                        .Replace("%n%", "<b>" + mainToAdFee.ToString() + "%</b>");
            }
            #endregion

            SetRadioToValues();
            //CalculatePointsValue();
            SetProcessorValues();
            SetupSpecialTransfersProperties();

            if (RadioFrom.Items.Count == 0 || RadioTo.Items.Count == 0)
            {
                //No transfers available
                transferInputRow.Visible = false;
                TransferSameCommissionToMainLiteral.Visible = true;
                TransferSameCommissionToMainLiteral.Text    = "<br/><br/>" + U5006.NOTRANSFEROPTIONS;
                transfertable.Visible = false;
            }

            if (TitanFeatures.IsTradeOwnSystem)
            {
                //Checking condition to display appropriate message
                if (!user.CheckAccessCustomizeTradeOwnSystem && user.CommissionToMainBalanceRequiredViewsMessageInt > 0)
                {
                    CommissionTransferInfoDiv.Visible = true;
                    CommissionTransferInfo.Text       = String.Format(U6010.COMMISSIONBALANCETRANSFERINFO, user.CommissionToMainBalanceRequiredViewsMessageInt, AppSettings.RevShare.AdPack.AdPackName);
                }
                else if (!user.CheckAccessCustomizeTradeOwnSystem && user.CommissionToMainBalanceRequiredViewsMessageInt == 0)
                {
                    CommissionTransferInfoDiv.Visible = true;
                    CommissionTransferInfo.Text       = String.Format(U6010.COMMISSIONBALANCETRANSFERNOACTIVEADPACKINFO, AppSettings.RevShare.AdPack.AdPackName);
                }
                else
                {
                    CommissionTransferInfoDiv.Visible = false;
                }
            }
        }

        SetRadioItemsValues(RadioFrom);
        SetRadioItemsValues(RadioTo);
        SetRadioItemsValues(PointsTo);

        RemoveDuplicatesFromList();

        PointsFrom.Items[0].Attributes.Add("data-content", "<img src = '../Images/OneSite/TransferMoney/Points.png' /> " + AppSettings.PointsName);

        if (!TitanFeatures.IsRofriqueWorkMines)
        {
            if (TitanFeatures.IsAhmed)
            {
                LangAdder.Add(BalanceButton, string.Format("{0}/{1}", U6012.DEPOSITCOINS, L1.TRANSFER));
            }
            else
            {
                LangAdder.Add(BalanceButton, L1.TRANSFER);
            }
        }
        else
        {
            LangAdder.Add(BalanceButton, "Cash Deposits");
        }

        LangAdder.Add(btnTransferMember, L1.TRANSFER);
        LangAdder.Add(CalculatePointsValueButton, U6007.CALCULATE);
    }
예제 #26
0
 public static string GetPaymentAccountName(PaymentAccountDetails account)
 {
     return(account.AccountType + ":" + account.Username);
 }
예제 #27
0
    protected void AdvertisePageLoad()
    {
        if (TitanFeatures.IsTrafficThunder)
        {
            Response.Redirect(AppSettings.Site.Url);
        }

        if (!AppSettings.TitanFeatures.AdvertAdsEnabled)
        {
            ptcLink.Visible = false;
        }

        if (!AppSettings.TitanFeatures.AdvertBannersEnabled || AppSettings.BannerAdverts.AdvertisingPolicy == BannerPolicy.BannerBidding)
        {
            bannerLink.Visible = false;
        }

        if (!AppSettings.TitanFeatures.AdvertFacebookEnabled)
        {
            facebookLink.Visible = false;
        }

        if (!AppSettings.TitanFeatures.AdvertTrafficGridEnabled)
        {
            trafficGridLink.Visible = false;
        }

        if (!AppSettings.TitanFeatures.AdvertMarketplaceEnabled || !AppSettings.Marketplace.MarketplaceAllowPurchaseFromPaymentProcessors)
        {
            marketplaceLink.Visible = false;
        }

        if (!AppSettings.InvestmentPlatform.InvestmentPlatformEnabled || !AppSettings.TitanFeatures.InvestmentPlatformCalculatorEnabled)
        {
            investmentPlatformCalculatorLink.Visible = false;
        }

        div02.Visible = (ptcLink.Visible || bannerLink.Visible || facebookLink.Visible || trafficGridLink.Visible || marketplaceLink.Visible || investmentPlatformCalculatorLink.Visible) && PaymentAccountDetails.AreIncomingPaymentProcessorsAvailable();
    }
예제 #28
0
    protected void Page_Load(object sender, EventArgs e)
    {
        var targetFeature  = PurchaseOption.Features.Upgrade;
        var purchaseOption = PurchaseOption.Get(targetFeature);

        if (purchaseOption.PurchaseBalanceEnabled)
        {
            UpgradeFromAdBalance.Visible = true;
        }
        else
        {
            UpgradeFromAdBalance.Visible = false;
            adBalanceInfo.Visible        = false;
        }

        if (AppSettings.Payments.CashBalanceEnabled && purchaseOption.CashBalanceEnabled)
        {
            UpgradeFromCashBalance.Visible = true;
        }
        else
        {
            UpgradeFromCashBalance.Visible = false;
            cashBalanceInfo.Visible        = false;
        }

        AccessManager.RedirectIfDisabled(AppSettings.TitanFeatures.UpgradeEnabled);

        User = Member.CurrentInCache;

        if (!Page.IsPostBack)
        {
            //Lang
            LangAdder.Add(UpgradeFromAdBalance, U6012.PAYVIAPURCHASEBALANCE);
            LangAdder.Add(UpgradeFromCashBalance, U6005.PAYVIACASHBALANCE);
            LangAdder.Add(UpgradeViaPaymentProcessor, U6005.PAYVIAPAYMENTPROCESSOR);

            //Bind the data dor DDL
            BindDataToDDL();

            //Visibility
            UpgradeViaPaymentProcessorPlaceHolder.Visible = PaymentAccountDetails.AreIncomingPaymentProcessorsAvailable();
        }

        if (TitanFeatures.IsRofriqueWorkMines)
        {
            UpgradeFromAdBalancePlaceHolder.Visible       = false;
            UpgradeViaPaymentProcessorPlaceHolder.Visible = false;
        }

        HideCashBalanceDepositCommissionColumn = AreAllCashBalanceDepositCommissionsZero();

        ddlOptions.Attributes.Add("onchange", "updatePrice();");
        autopayHelpArray = new Dictionary <string, bool>();

        Label10.Text  = AppSettings.Memberships.TenPointsValue.ToClearString();
        LabelIle.Text = AppSettings.Memberships.UpgradePointsDiscount.ToString();

        //Display warning
        string WarningMessage = UpgradePageHelper.GetWarningMessage(User);

        WarningPanel.Visible = !String.IsNullOrEmpty(WarningMessage);
        WarningLiteral.Text  = WarningMessage;

        AdBalanceLiteral.Text   = User.PurchaseBalance.ToString();
        CashBalanceLiteral.Text = User.CashBalance.ToString();

        if (AppSettings.Points.LevelMembershipPolicyEnabled)
        {
            BuyUpgradePlaceHolder.Visible = false;
        }

        hiddenProperties = MembershipProperty.GetPropsToHideForClient();
        TypesMembershipProperties.Text = AdPackTypeMembershipMapper.Mapper.GetHtmlFromCache();
        AdPackPropsPlaceHolder.Visible = AppSettings.TitanFeatures.AdvertAdPacksEnabled;

        PaymentProcessorsButtonPlaceholder.Visible = false;
    }
예제 #29
0
    private string TryMakeManualPayout(Money fee)
    {
        //Manual, add to payoutrequests
        PayoutRequest req = new PayoutRequest();

        //Calculate fees for CustomPP
        Money Fees = fee;

        if (IsCustomPayoutProcessor)
        {
            CustomPayoutProcessor CPP = new CustomPayoutProcessor(CustomPayoutProcessorId);
            Fees = Fees + CPP.MoneyFee;
            Fees = Fees + (AmountToPayout * (CPP.PercentageFee * new Money(0.01)));

            if (string.IsNullOrWhiteSpace(TargetAccount))
            {
                throw new MsgException(U4200.ACCOUNTFIELDNOTBLANK);
            }
        }

        req.Amount      = AmountToPayout - Fees;
        req.IsPaid      = false;
        req.RequestDate = DateTime.Now;
        req.Username    = User.Name;
        req.IsRequest   = true;
        req.BalanceType = BalanceType.MainBalance;

        if (IsCustomPayoutProcessor)
        {
            //CustomPP
            CustomPayoutProcessor CPP = new CustomPayoutProcessor(CustomPayoutProcessorId);
            req.PaymentAddress   = TargetAccount;
            req.PaymentProcessor = CPP.Name;

            //MPesa check
            if (CPP.Name.ToLower() == "mpesa" && (TargetAccount.Length != 10 || !TargetAccount.StartsWith("07")))
            {
                throw new MsgException("Check your phone number format. The number should be 07******** (10 length)");
            }
        }
        else
        {
            string paymentAddress = PaymentAccountDetails.GetPaymentProcessorUserAccount(User, TargetPaymentProcessor);

            if (String.IsNullOrEmpty(paymentAddress))
            {
                throw new MsgException(U5004.YOUMUST);
            }

            if (TargetPaymentProcessor == "Payeer" && paymentAddress.Contains("@"))
            {
                throw new MsgException(U6006.VALIDPAYEER);
            }

            req.PaymentAddress   = paymentAddress;
            req.PaymentProcessor = TargetPaymentProcessor;
        }

        req.Save();

        User.SubtractFromMainBalance(AmountToPayout, "Payout");
        User.MoneyCashout += (AmountToPayout - Fees);
        User.IsPhoneVerifiedBeforeCashout = false;
        User.CashoutsProceed++;
        User.Save();

        //Update payout proportions
        if (!IsCustomPayoutProcessor)
        {
            PaymentProportionsManager.MemberPaidOut(AmountToPayout - Fees, PaymentAccountDetails.GetFromStringType(TargetPaymentProcessor), User, IsCustomPayoutProcessor);
        }

        if (IsAutomaticButAvoveTheLimit)
        {
            return(U3501.CASHOUTSUCC + ": " + U3500.CASHOUT_APPROVE.Replace("%n%", TheLimit.ToString()));
        }
        else
        {
            return(U3501.CASHOUTSUCC + ": " + U3500.CASHOUT_MESSAGE.Replace("%n1%", (AmountToPayout - Fees).ToString()).Replace("%n2%", Fees.ToString()));
        }
    }