public async Task CreateReport(AddressTransactionReportQueueCommand command)
        {
            try
            {
                await _log.WriteInfoAsync(nameof(AddressTransactionsQueueFunctions),
                                          nameof(CreateReport),
                                          command.ToJson(), "Started");

                await _addressTransactionsReportMetadataRepository.SetProcessing(command.Address);

                var reportDate = DateTime.UtcNow;

                var reportData = await _addressTransactionReportService.GetTransactionsReport(command.Address);


                var saveResult = await _addressTransactionsReportStorage.SaveXlsxReport(command.Address, reportData);


                var emailMes = new EmailMessage
                {
                    Subject  = $"Report for {command.Address} at {reportDate:f}",
                    TextBody = $"Report for {command.Address} at {reportDate:f} - {saveResult.Url}"
                };

                if (!string.IsNullOrEmpty(command.Email))
                {
                    await _emailSenderProducer.SendAsync(emailMes, new EmailAddressee()
                    {
                        DisplayName = command.Email, EmailAddress = command.Email
                    });
                }

                await _addressTransactionsReportMetadataRepository.SetDone(command.Address, saveResult.Url);

                await _log.WriteInfoAsync(nameof(AddressTransactionsQueueFunctions),
                                          nameof(CreateReport),
                                          command.ToJson(), "Done");
            }
            catch (Exception e)
            {
                await _log.WriteFatalErrorAsync(nameof(AddressTransactionsQueueFunctions),
                                                nameof(CreateReport),
                                                command.ToJson(), e);

                await _addressTransactionsReportMetadataRepository.SetError(command.Address, e.ToString());

                throw;
            }
        }
        public async Task CreateReport(BlockTransactionReportQueueCommand command)
        {
            try
            {
                await _log.WriteInfoAsync(nameof(BlockTransactionsQueueFunctions),
                                          nameof(CreateReport),
                                          command.ToJson(), "Started");

                var reportDate = DateTime.UtcNow;

                var saveResults = await command.Blocks.SelectAsync(p => Retry.Try(() => SaveReport(p), nameof(CreateReport), 5, logger: _log));


                if (!string.IsNullOrEmpty(command.Email))
                {
                    var reportDescrpt = saveResults.Select(p => $"Report for blocks at {reportDate:f} - {p.url}");
                    var emailMes      = new EmailMessage
                    {
                        Subject  = $"Report for block {command.Blocks} at {reportDate:f}",
                        HtmlBody = string.Join("<br/>", reportDescrpt)
                    };

                    await _emailSenderProducer.SendAsync(emailMes, new EmailAddressee { DisplayName = command.Email, EmailAddress = command.Email });
                }

                await _log.WriteInfoAsync(nameof(BlockTransactionsQueueFunctions),
                                          nameof(CreateReport),
                                          command.ToJson(), "Done");
            }
            catch (Exception e)
            {
                await _log.WriteErrorAsync(nameof(BlockTransactionsQueueFunctions),
                                           nameof(CreateReport),
                                           command.ToJson(), e);

                throw;
            }
        }