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