private bool CheckStakingInfo(ref CoinControlStatusReport statusReport)
        {
            string errorMessage;

            StakingInfoRequest  stakingInfoRequest = new StakingInfoRequest();
            StakingInfoResponse stakingInfoResponse;

            if (!m_dataConnector.TryPost <StakingInfoResponse>(
                    stakingInfoRequest,
                    out stakingInfoResponse,
                    out errorMessage))
            {
                MessageService.Error(errorMessage);
                return(false);
            }

            if (!stakingInfoResponse.Enabled)
            {
                MessageService.Warning(string.Format("Staking is disabled!"));
            }

            statusReport.Staking = stakingInfoResponse.Staking;

            if (stakingInfoResponse.Staking)
            {
                statusReport.ExpectedTimeToEarnReward = TimeSpan.FromSeconds(stakingInfoResponse.ExpectedTimeInSeconds);
            }

            if (!string.IsNullOrEmpty(stakingInfoResponse.Errors))
            {
                MessageService.Error(string.Format("Staking errors found: {0}", stakingInfoResponse.Errors));
            }

            return(true);
        }
        public bool TryCheckWalletCompaitibility(ConsoleMessageHandlingService messageService, out string errorMessage)
        {
            InfoResponse info;
            InfoRequest  requestForInfo = new InfoRequest();

            messageService.Info("Connecting and reading Linda wallet info...");

            if (!m_dataConnector.TryPost <InfoResponse>(requestForInfo, out info, out errorMessage))
            {
                return(false);
            }

            messageService.Info("Linda wallet info retrieved!");
            messageService.Info("Checking for wallet compatibility...");
            messageService.Info(string.Format("Compatible versions: {0}", COMPATIBLE_WALLET_VERSIONS));

            if (!COMPATIBLE_WALLET_VERSIONS.Contains(info.Version.ToLower()))
            {
                errorMessage = string.Format(
                    "Linda wallet version: '{0}' is not compatible!",
                    info.Version);

                return(false);
            }

            messageService.Info(string.Format("Connected wallet version: {0} is compatible!", info.Version));
            return(true);
        }
        public bool TryGetTransactions(
            string address,
            string category,
            int numberOfDays,
            out List <TransactionResponse> transactionsInCategory,
            out string errorMessage)
        {
            DateTimeOffset localNowDate  = DateTimeOffset.Now.Date;
            DateTimeOffset localXDaysAgo = localNowDate.AddDays(numberOfDays * -1);

            transactionsInCategory = new List <TransactionResponse>();

            int count = 10;
            int from  = 0;

            DateTimeOffset lastTransactionTime = DateTimeOffset.UtcNow;

            while (lastTransactionTime.LocalDateTime.Date >= localXDaysAgo)
            {
                ListTransactionsRequest listRequest = new ListTransactionsRequest()
                {
                    Account = "*",
                    Count   = count,
                    From    = from
                };

                List <TransactionResponse> allTransactions;
                if (!m_dataConnector.TryPost <List <TransactionResponse> >(listRequest, out allTransactions, out errorMessage))
                {
                    return(false);
                }

                allTransactions.Reverse();

                foreach (TransactionResponse trans in allTransactions)
                {
                    lastTransactionTime = GetTransactionTime(trans.Time);
                    if (trans.Address.Equals(address, StringComparison.CurrentCultureIgnoreCase) &&
                        lastTransactionTime.LocalDateTime.Date >= localXDaysAgo &&
                        trans.Category.Equals(category, StringComparison.InvariantCultureIgnoreCase))
                    {
                        transactionsInCategory.Add(trans);
                    }
                }

                if (allTransactions.Count < count)
                {
                    break;
                }

                from += count;
            }

            errorMessage = null;
            return(true);
        }
        public bool IsUp(LindaDataConnector dataConnector)
        {
            string       errorMessage;
            InfoRequest  request = new InfoRequest();
            InfoResponse response;

            return(dataConnector.TryPost <InfoResponse>(request, out response, out errorMessage));
        }
        public bool TryStopLindaWallet(LindaDataConnector dataConnector, out string errorMessage)
        {
            StopRequest request = new StopRequest();
            string      responseStr;

            if (!dataConnector.TryPost <string>(request, out responseStr, out errorMessage))
            {
                return(false);
            }

            if (!WaitForWalletToGoDown(dataConnector))
            {
                errorMessage = "Wallet won't stop!";
                return(false);
            }

            return(true);
        }