/
payment_options.ts
81 lines (68 loc) · 2.31 KB
/
payment_options.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
import { Client } from '../../../client'
import { UriHelper } from '../../../uri-helper'
import * as errors from '../../../errors/analytics'
export interface PaymentOptionsOptions {
user?: string
base?: string
}
export interface PaymentOptionsResponse {
data: object[]
metadata: object
}
export interface PaymentOptionsQuery {
start?: string
end?: string
branch_number?: string
register_id?: string
payment_method?: string
uri?: string
format?: string
legacy?: boolean
cursor_field?: string
}
export class PaymentOptions {
http: Client
public options: PaymentOptionsOptions
public uriHelper: UriHelper
constructor(options: PaymentOptionsOptions, http: Client, uriHelper: UriHelper) {
this.options = options
this.http = http
this.uriHelper = uriHelper
}
getAll(query?: PaymentOptionsQuery): Promise<PaymentOptionsResponse> {
return new Promise(async (resolve, reject) => {
try {
const base = this.uriHelper.generateBaseUri('/reports/payment_options')
const uri = this.uriHelper.generateUriWithQuery(base, query)
const response = await this.http.getClient().get(uri)
return resolve({
data: response.data.results,
metadata: { count: response.data.count }
} as PaymentOptionsResponse)
} catch (err) {
return reject(new errors.ReportsPaymentOptionsFetchAllFailed())
}
})
}
meta(query?: PaymentOptionsQuery): Promise<PaymentOptionsResponse> {
return new Promise(async (resolve, reject) => {
try {
const base = this.uriHelper.generateBaseUri('/reports/payment_options/meta')
const uri = this.uriHelper.generateUriWithQuery(base, query)
const response = await this.http.getClient().get(uri)
if (response.status !== 200) return reject(new errors.ReportsPaymentOptionsMetaFailed(undefined, { status: response.status }))
if (!response.data.results[0]) {
return reject(
new errors.ReportsPaymentOptionsMetaFailed('Could not get balances metadata unexpectedly')
)
}
return resolve({
data: response.data.results[0],
metadata: { count: response.data.count }
} as PaymentOptionsResponse)
} catch (err) {
return reject(new errors.ReportsPaymentOptionsMetaFailed())
}
})
}
}