import { Event } from '@sanar/payments-sdk'; import { HttpRequestService } from './http.request.service'; require('dotenv/config'); export class SubscriptionsService { private static instance: SubscriptionsService; private httpService: HttpRequestService; constructor() { this.httpService = new HttpRequestService( process.env.SUBSCRIPTIONS_URL, ); } static getInstance() : SubscriptionsService { if (!SubscriptionsService.instance) { SubscriptionsService.instance = new SubscriptionsService(); } return SubscriptionsService.instance; } async listCustomerSubscriptions(customer_id: number | string) : Promise { const result = await this.httpService.get('/subscriptions', { params: { where: { customer_id, platform: 'resmed', }, }, }); if (!(result.data.subscriptions?.length > 0)) { throw new Error('Customer not found'); } const compare = (a, b) => { if (a.created_at > b.created_at) return -1; if (a.created_at < b.created_at) return 1; return 0; }; return result.data.subscriptions.sort(compare); } async findSubscriptions(filter: any = {}) { const result = await this.httpService.get('/subscriptions', { params: filter, }); const { data } = result; if (data && data.subscriptions) { return data.subscriptions; } return []; } }