private async Task <IPersonalData> FindByMultisigIndex(string phrase)
        {
            var clientId = await _walletCredentialsRepository.GetClientIdByMultisig(phrase);

            if (clientId == null)
            {
                return(null);
            }
            return(await _personalDataRepository.GetAsync(clientId));
        }
Exemple #2
0
        private async Task GenerateRequestsForAsset(string asset, decimal minAmount, DateTime?lastActivity = null)
        {
            var createdCount = 0;

            try
            {
                var channels = await GetChannels(asset);

                var existingRequests = await PrepareExistingRequests(asset);

                foreach (var channel in channels.Balances)
                {
                    // check balance
                    if (channel.HubAmount < minAmount || existingRequests.Contains(channel.Multisig))
                    {
                        continue;
                    }

                    //check last activity date
                    if (lastActivity != null && channel.UpdateDt > lastActivity)
                    {
                        continue;
                    }

                    var client = await _walletCredentialsRepository.GetClientIdByMultisig(channel.Multisig);

                    if (string.IsNullOrWhiteSpace(client))
                    {
                        continue;
                    }

                    await _offchainRequestService.CreateHubCashoutRequests(asset, client);

                    createdCount++;
                }
            }
            finally
            {
                if (createdCount != 0)
                {
                    await _slackNotificationsSender.SendAsync("Offchain", ":information_source:", $"New {createdCount} hub requests were created for {asset}. (min. {minAmount})");
                }

                await _log.WriteInfoAsync(nameof(ManualHubCashoutFunction), nameof(GenerateRequestsForAsset), $"Asset: {asset}, requests created: {createdCount}", "Finished");
            }
        }