48 lines
1.8 KiB
JavaScript
48 lines
1.8 KiB
JavaScript
function registerRedeemedPromotionDetailRoute({ app, context }) {
|
|
app.post(
|
|
[
|
|
'/ewl/promotion/v1/redeemedpromotion/detail',
|
|
'/ewl/bal/v1/redeemedpromotion/detail',
|
|
],
|
|
(req, res) => {
|
|
const fixtureCustomerId =
|
|
typeof context.promotionsRedeemedFixture?.data?.customerId === 'string'
|
|
? context.promotionsRedeemedFixture.data.customerId
|
|
: ''
|
|
const fixtureOutcomeList = Array.isArray(context.promotionsRedeemedFixture?.data?.outcomeList)
|
|
? context.cloneJsonValue(context.promotionsRedeemedFixture.data.outcomeList)
|
|
: []
|
|
const accountNum = context.resolveAccountNum(req.body) || fixtureCustomerId
|
|
const recordedOutcomeList = context.getRecordedRedeemedPromotionOutcomes(accountNum)
|
|
const fallbackOutcomeList = [context.buildMockRedeemedPromotionOutcome(req.body)]
|
|
let outcomeList = recordedOutcomeList
|
|
|
|
if (outcomeList.length === 0) {
|
|
const accountFixture = context.getAccountSpecificRedeemedPromotionsFixture(accountNum)
|
|
const accountFixtureOutcomeList = Array.isArray(accountFixture?.data?.outcomeList)
|
|
? context.cloneJsonValue(accountFixture.data.outcomeList)
|
|
: null
|
|
|
|
if (accountFixtureOutcomeList !== null) {
|
|
outcomeList = accountFixtureOutcomeList
|
|
} else {
|
|
outcomeList = context.redeemedPromotionDetailIncludeDefaultRecord
|
|
? fixtureOutcomeList.length > 0
|
|
? fixtureOutcomeList
|
|
: fallbackOutcomeList
|
|
: []
|
|
}
|
|
}
|
|
|
|
return res.status(200).json({
|
|
errorCode: context.redeemedPromotionDetailErrorCode,
|
|
errorMsg: context.redeemedPromotionDetailErrorMsg,
|
|
accountNum,
|
|
outcomeList,
|
|
})
|
|
}
|
|
)
|
|
}
|
|
|
|
module.exports = registerRedeemedPromotionDetailRoute
|