38 lines
1.4 KiB
JavaScript
38 lines
1.4 KiB
JavaScript
class Abonemment {
|
|
constructor(row) {
|
|
this.id = row.id;
|
|
this.status = row.status;
|
|
this.started_at = row.started_at;
|
|
this.ended_at = row.ended_at;
|
|
this.next_billing_at = row.next_billing_at;
|
|
this.billing_interval = row.billing_interval;
|
|
this.interval_count = row.interval_count;
|
|
this.price = row.price;
|
|
this.currency = row.currency;
|
|
this.is_auto_renew = !!row.is_auto_renew;
|
|
this.notes = row.notes;
|
|
this.pack_group = row.pack_group;
|
|
this.pack_breakdown = row.pack_breakdown ? (typeof row.pack_breakdown === 'string' ? JSON.parse(row.pack_breakdown) : row.pack_breakdown) : null;
|
|
this.first_name = row.first_name;
|
|
this.last_name = row.last_name;
|
|
this.email = row.email;
|
|
this.street = row.street;
|
|
this.postal_code = row.postal_code;
|
|
this.city = row.city;
|
|
this.country = row.country;
|
|
this.frequency = row.frequency;
|
|
this.referred_by = row.referred_by; // NEW
|
|
this.purchaser_user_id = row.purchaser_user_id ?? null; // NEW
|
|
this.user_id = row.user_id ?? null; // NEW: map owner user_id
|
|
this.created_at = row.created_at;
|
|
this.updated_at = row.updated_at;
|
|
}
|
|
|
|
get isActive() { return this.status === 'active'; }
|
|
get isPaused() { return this.status === 'paused'; }
|
|
get isCanceled() { return this.status === 'canceled'; }
|
|
get isExpired() { return this.status === 'expired'; }
|
|
}
|
|
|
|
module.exports = Abonemment;
|