account.serializer.js 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. // ./api/accounts/account.serializer.js
  2. import BaseSerializer from "../../serializers/base.serializer.js";
  3. import moment from "moment";
  4. class AccountSerializer extends BaseSerializer {
  5. constructor() {
  6. super();
  7. this.properties = [
  8. "_id",
  9. "subdomain",
  10. "companyName",
  11. "companyVat",
  12. "companyBillingAddress",
  13. "companySdi",
  14. "companyPec",
  15. "companyPhone",
  16. "companyEmail",
  17. "companyCountry",
  18. "paymentFailed",
  19. "paymentFailedFirstAt",
  20. "trialPeriodEndsAt",
  21. "paymentFailedSubscriptionEndsAt",
  22. "privacyAccepted",
  23. "marketingAccepted",
  24. "stripePlanId",
  25. "subscriptionExpiresAt",
  26. "planType",
  27. "createdAt",
  28. "updatedAt",
  29. "subscriptionStatus"
  30. ];
  31. }
  32. show(object) {
  33. const serialized = super.show(object);
  34. // Calculate subscription status
  35. if (serialized.subscriptionExpiresAt && moment(serialized.subscriptionExpiresAt).isAfter(Date.now())) {
  36. serialized.subscriptionStatus = 'active';
  37. } else if (serialized.paymentFailed) {
  38. if (serialized.paymentFailedSubscriptionEndsAt &&
  39. moment(serialized.paymentFailedSubscriptionEndsAt).isAfter(Date.now())) {
  40. serialized.subscriptionStatus = 'payment_failed';
  41. } else {
  42. serialized.subscriptionStatus = 'deactivated';
  43. }
  44. } else if (serialized.trialPeriodEndsAt) {
  45. if (moment(serialized.trialPeriodEndsAt).isAfter(Date.now())) {
  46. serialized.subscriptionStatus = 'trial';
  47. } else {
  48. serialized.subscriptionStatus = 'deactivated';
  49. }
  50. } else {
  51. serialized.subscriptionStatus = 'deactivated';
  52. }
  53. return serialized;
  54. }
  55. }
  56. export default new AccountSerializer();