async edit(idString, data) {
        const id = ObjectID.createFromHexString(idString);
        const tier = await this.#repository.getById(id);

        const editableProperties = [
            'name',
            'benefits',
            'description',
            'visibility',
            'status',
            'trialDays',
            'welcomePageURL'
        ];

        for (const editableProperty of editableProperties) {
            if (Reflect.has(data, editableProperty)) {
                tier[editableProperty] = data[editableProperty];
            }
        }

        tier.updatePricing({
            currency: data.currency || tier.currency,
            monthlyPrice: data.monthlyPrice || tier.monthlyPrice,
            yearlyPrice: data.yearlyPrice || tier.yearlyPrice
        });

        await this.#repository.save(tier);

        return tier;
    }
@param {string} idString
@param {object} data
@returns {Promise<Tier>}