From facbfcfa8e458dc6ca356b9e48bbc0576c930dd5 Mon Sep 17 00:00:00 2001 From: Fabien O'Carroll Date: Tue, 12 Oct 2021 17:11:52 +0200 Subject: [PATCH] Added support for Offer status to API refs https://github.com/TryGhost/Team/issues/1131 - Includes `status` on OfferDTO so client can use it - Allows editing `status` of Offers - Allows setting initial `status` when creating Offers --- ghost/offers/lib/application/OfferMapper.js | 3 +++ ghost/offers/lib/application/OffersAPI.js | 9 ++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/ghost/offers/lib/application/OfferMapper.js b/ghost/offers/lib/application/OfferMapper.js index f9d2d832b0..09f4da5546 100644 --- a/ghost/offers/lib/application/OfferMapper.js +++ b/ghost/offers/lib/application/OfferMapper.js @@ -22,6 +22,8 @@ * @prop {'once'|'repeating'|'forever'} duration * @prop {null|number} duration_in_months * + * @prop {'active'|'archived'} status + * * @prop {object} tier * @prop {string} tier.id * @prop {string} tier.name @@ -46,6 +48,7 @@ class OfferMapper { duration_in_months: offer.duration.value.type === 'repeating' ? offer.duration.value.months : null, currency_restriction: offer.type.value === 'fixed', currency: offer.type.value === 'fixed' ? offer.currency.value : null, + status: offer.status.value, tier: { id: offer.tier.id, name: offer.tier.name diff --git a/ghost/offers/lib/application/OffersAPI.js b/ghost/offers/lib/application/OffersAPI.js index ac4db2d0ef..652e271e9d 100644 --- a/ghost/offers/lib/application/OffersAPI.js +++ b/ghost/offers/lib/application/OffersAPI.js @@ -3,6 +3,7 @@ const OfferName = require('../domain/models/OfferName'); const OfferCode = require('../domain/models/OfferCode'); const OfferTitle = require('../domain/models/OfferTitle'); const OfferDescription = require('../domain/models/OfferDescription'); +const OfferStatus = require('../domain/models/OfferStatus'); const OfferMapper = require('./OfferMapper'); const UniqueChecker = require('./UniqueChecker'); @@ -31,7 +32,7 @@ class OffersAPI { } /** - * @param {object} data + * @param {any} data * * @returns {Promise} */ @@ -55,6 +56,7 @@ class OffersAPI { * @param {string} [data.display_title] * @param {string} [data.display_description] * @param {string} [data.code] + * @param {string} [data.status] * * @returns {Promise} */ @@ -85,6 +87,11 @@ class OffersAPI { offer.displayDescription = description; } + if (data.status) { + const status = OfferStatus.create(data.status); + offer.status = status; + } + await this.repository.save(offer, options); return OfferMapper.toDTO(offer);