Files

62 lines
1.4 KiB
JavaScript
Raw Permalink Normal View History

import EmberObject from "@ember/object";
2024-01-16 17:51:44 +01:00
import { ajax } from "discourse/lib/ajax";
import discourseComputed from "discourse/lib/decorators";
2024-11-29 15:42:50 +00:00
export default class AdminCoupon extends EmberObject {
static list() {
return ajax("/s/admin/coupons", {
method: "get",
}).then((result) => {
if (result === null) {
return { unconfigured: true };
}
return result.map((coupon) => AdminCoupon.create(coupon));
});
2024-11-29 15:42:50 +00:00
}
static save(params) {
const data = {
promo: params.promo,
discount_type: params.discount_type,
discount: params.discount,
active: params.active,
};
return ajax("/s/admin/coupons", {
method: "post",
data,
}).then((coupon) => AdminCoupon.create(coupon));
2024-11-29 15:42:50 +00:00
}
2024-11-29 15:42:50 +00:00
static update(params) {
const data = {
id: params.id,
active: params.active,
};
return ajax("/s/admin/coupons", {
method: "put",
data,
}).then((coupon) => AdminCoupon.create(coupon));
2024-11-29 15:42:50 +00:00
}
2024-11-29 15:42:50 +00:00
static destroy(params) {
const data = {
coupon_id: params.coupon.id,
};
return ajax("/s/admin/coupons", {
method: "delete",
data,
});
2024-11-29 15:42:50 +00:00
}
2024-11-29 15:42:50 +00:00
@discourseComputed("coupon.amount_off", "coupon.percent_off")
discount(amount_off, percent_off) {
if (amount_off) {
return `${parseFloat(amount_off * 0.01).toFixed(2)}`;
} else if (percent_off) {
return `${percent_off}%`;
}
}
}