async sendLatestReport() {
        const lastReport = await this.#mentionReportHistoryService.getLatestReportDate();
        const now = new Date();

        if (now.valueOf() - lastReport.valueOf() < 24 * 60 * 60 * 1000) {
            return 0;
        }

        const report = await this.#mentionReportGenerator.getMentionReport(lastReport, now);

        report.mentions = report.mentions.map((mention) => {
            return {
                targetUrl: mention.target,
                sourceUrl: mention.source,
                sourceTitle: mention.sourceTitle,
                sourceExcerpt: mention.sourceExcerpt,
                sourceSiteTitle: mention.sourceSiteTitle,
                sourceFavicon: mention.sourceFavicon,
                sourceAuthor: mention.sourceAuthor,
                sourceFeaturedImage: mention.sourceFeaturedImage
            };
        });

        if (!report?.mentions?.length) {
            return 0;
        }

        const recipients = await this.#mentionReportRecipientRepository.getMentionReportRecipients();

        for (const recipient of recipients) {
            const subject = await this.#mentionReportEmailView.renderSubject(report, recipient);
            const html = await this.#mentionReportEmailView.renderHTML(report, recipient);
            const text = await this.#mentionReportEmailView.renderText(report, recipient);

            await this.#emailService.send(recipient.email, subject, html, text);
        }

        await this.#mentionReportHistoryService.setLatestReportDate(now);

        return report.mentions.length;
    }
Checks for new mentions since the last report and sends an email to the recipients.

@returns {Promise<number>} - A promise that resolves with the number of mentions found.