Skip to content

Commit d47ef61

Browse files
authored
Merge pull request #140 from BuildFire/fix/loyalty-multiple-redemptions-24hrs
fix(redemptions): Fix multiple redemptions
2 parents 79a4685 + 17a6275 commit d47ef61

2 files changed

Lines changed: 90 additions & 67 deletions

File tree

resources/languages.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,12 @@
116116
"maxLength": 60,
117117
"defaultValue": "Error redeeming reward. Please try again later."
118118
},
119+
"notEnoughPoints": {
120+
"title": "Not Enough Points Error Messages",
121+
"placeholder": "The user does not have enough points to redeem this item.",
122+
"maxLength": 100,
123+
"defaultValue": "The user does not have enough points to redeem this item."
124+
},
119125
"redeemDailyLimit": {
120126
"title": "Exceeded Daily Limit Message",
121127
"placeholder": "You have exceeded the daily limit.",

widget/controllers/widget.approvalrequests.controller.js

Lines changed: 84 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -68,78 +68,95 @@
6868
const pointslistView = new buildfire.components.listView('pointsContainer');
6969

7070

71-
redeemslistView.onItemActionClicked = (item) => {
72-
var success = function (result) {
73-
ApprovalRequests.RedeemItems = ApprovalRequests.RedeemItems.filter(x => x.id != item.id )
74-
redeemslistView.clear();
75-
redeemslistView.loadListViewItems(ApprovalRequests.RedeemItems)
76-
updateListViewDesign();
77-
78-
}
79-
, error = function (err) {
80-
if (err ) {
81-
console.error('Error Updating Reddeem Status', err);
82-
}
71+
redeemslistView.onItemActionClicked = (item) => {
72+
var success = function (result) {
73+
ApprovalRequests.RedeemItems = ApprovalRequests.RedeemItems.filter(x => x.id != item.id);
74+
redeemslistView.clear();
75+
redeemslistView.loadListViewItems(ApprovalRequests.RedeemItems);
76+
updateListViewDesign();
77+
},
78+
error = function (err) {
79+
if (err) {
80+
console.error('Error Updating Redeem Status', err);
81+
}
8382
};
84-
85-
buildfire.components.drawer.open(
86-
{
87-
listItems: ApprovalRequests.drawerItems
88-
},
89-
(err, result) => {
90-
if (err) return console.error(err);
91-
buildfire.components.drawer.closeDrawer();
92-
var status = "";
93-
if(result.value == "Approve"){
94-
status = STATUS.Approved
95-
} else {
96-
status = STATUS.Denied
83+
buildfire.components.drawer.open(
84+
{
85+
listItems: ApprovalRequests.drawerItems
86+
},
87+
(err, result) => {
88+
if (err) return console.error(err);
89+
buildfire.components.drawer.closeDrawer();
90+
var status = "";
91+
if (result.value == "Approve") {
92+
status = STATUS.Approved;
93+
} else {
94+
status = STATUS.Denied;
95+
}
96+
let selectedItem = ApprovalRequests.RedeemResult.find(x => x.id == item.id);
97+
98+
LoyaltyAPI.getLoyaltyPoints(
99+
selectedItem.data.createdBy.userId,
100+
selectedItem.data.createdBy.userToken,
101+
ApprovalRequests.context.appId + "_" + ApprovalRequests.context.instanceId
102+
).then(async (points) => {
103+
// Check if user points are less than item points
104+
if (points.totalPoints < item.data.points) {
105+
const errorMessage = await Utils.getLanguage("redeem.notEnoughPoints");
106+
buildfire.dialog.toast({message: errorMessage, type: "danger"});
107+
return;
97108
}
98-
let selectedItem = ApprovalRequests.RedeemResult.find(x => x.id == item.id )
99-
100-
Transactions.updateRequestedRedeemStatus(selectedItem, status, ApprovalRequests.currentLoggedInUser.displayName ? ApprovalRequests.currentLoggedInUser.displayName : ApprovalRequests.currentLoggedInUser.email ).then(success, error).then(x =>{
101-
if(status == STATUS.Approved){
102-
buildfire.dialog.toast({
103-
message: item.data.points + " points approved for " + item.title,
104-
type: "success"
105-
});
106-
LoyaltyAPI.redeemPoints(selectedItem.data.createdBy._id, selectedItem.data.createdBy.userToken, `${ApprovalRequests.context.appId}_${ApprovalRequests.context.instanceId}`, selectedItem.data.item._id).then();
107109

108-
buildfire.notifications.pushNotification.schedule(
109-
{
110-
title: "Points Approved",
111-
text: item.data.points + " points earned from " + item.title + " have been approved",
112-
users: [selectedItem.data.createdBy._id]
113-
, at: new Date()
114-
},
115-
(err, result) => {
116-
if (err) return console.error(err);
117-
}
118-
);
119-
} else {
120-
buildfire.dialog.toast({
121-
message: item.data.points + " points denied for " + item.title,
122-
type: "danger"
123-
});
124-
buildfire.notifications.pushNotification.schedule(
125-
{
126-
title: "Points Denied",
127-
text: item.data.points + " points earned from " + item.title + " have been denied",
128-
users: [selectedItem.data.createdBy._id]
129-
, at: new Date()
130-
},
131-
(err, result) => {
132-
if (err) return console.error(err);
133-
}
134-
);
135-
}
110+
Transactions.updateRequestedRedeemStatus(selectedItem, status,
111+
ApprovalRequests.currentLoggedInUser.displayName
112+
? ApprovalRequests.currentLoggedInUser.displayName
113+
: ApprovalRequests.currentLoggedInUser.email
114+
)
115+
.then(success, error)
116+
.then(() => {
117+
if (status == STATUS.Approved) {
118+
buildfire.dialog.toast({
119+
message: item.data.points + " points approved for " + item.title,
120+
type: "success"
121+
});
122+
LoyaltyAPI.redeemPoints(selectedItem.data.createdBy._id, selectedItem.data.createdBy.userToken, `${ApprovalRequests.context.appId}_${ApprovalRequests.context.instanceId}`, selectedItem.data.item._id).then();
123+
124+
buildfire.notifications.pushNotification.schedule(
125+
{
126+
title: "Points Approved",
127+
text: item.data.points + " points earned from " + item.title + " have been approved",
128+
users: [selectedItem.data.createdBy._id],
129+
at: new Date()
130+
},
131+
(err, result) => {
132+
if (err) return console.error(err);
133+
}
134+
);
135+
} else {
136+
buildfire.dialog.toast({
137+
message: item.data.points + " points denied for " + item.title,
138+
type: "danger"
139+
});
140+
buildfire.notifications.pushNotification.schedule(
141+
{
142+
title: "Points Denied",
143+
text: item.data.points + " points earned from " + item.title + " have been denied",
144+
users: [selectedItem.data.createdBy._id],
145+
at: new Date()
146+
},
147+
(err, result) => {
148+
if (err) return console.error(err);
149+
}
150+
);
151+
}
152+
});
153+
});
154+
}
155+
);
156+
};
136157

137-
});
138-
}
139-
);
140-
};
141158

142-
pointslistView.onItemActionClicked = (item) => {
159+
pointslistView.onItemActionClicked = (item) => {
143160
var success = function (result) {
144161

145162
}

0 commit comments

Comments
 (0)