async updateLastSeenAtWithoutKnownLastSeen(memberId, timestamp) {
        // Note: we are not using Bookshelf / member repository to prevent firing webhooks + to prevent deadlock issues
        // If we would use the member repostiory, we would create a forUpdate lock when editing the member, including when fetching the member labels. Creating a possible deadlock if somewhere else we do the reverse in a transaction.
        const timezone = this._settingsCacheService.get('timezone') || 'Etc/UTC';
        const startOfDayInSiteTimezone = moment.utc(timestamp).tz(timezone).startOf('day').utc().format('YYYY-MM-DD HH:mm:ss');
        const formattedTimestamp = moment.utc(timestamp).format('YYYY-MM-DD HH:mm:ss');
        await this._db.knex('members')
            .where('id', '=', memberId)
            .andWhere(builder => builder
                .where('last_seen_at', '<', startOfDayInSiteTimezone)
                .orWhereNull('last_seen_at')
            )
            .update({
                last_seen_at: formattedTimestamp
            });
    }
Updates the member.last_seen_at field if it wasn't updated in the current day yet (in the publication timezone)
Example: current time is 2022-02-28 18:00:00
- memberLastSeenAt is 2022-02-27 23:00:00, timestamp is current time, then `last_seen_at` is set to the current time
- memberLastSeenAt is 2022-02-28 01:00:00, timestamp is current time, then `last_seen_at` isn't changed
@param {string} memberId The id of the member to be udpated
@param {Date} timestamp The event timestamp