-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathISO4217Currencies.ts
More file actions
50 lines (43 loc) · 1.56 KB
/
ISO4217Currencies.ts
File metadata and controls
50 lines (43 loc) · 1.56 KB
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
import { json } from '@iso4217/json';
import LibraryResource from '../../utils/data/models/LibraryResource';
import { isEnabledFilter } from '../../utils/filters';
type Currency = {
id: string;
name: string;
};
// Prep currency data set
const transformed: Array<Currency> = Object.values(
json['$data'][0]['$data'].reduce((acc: any, blob: any) => {
const blobData = blob['$data'];
const name = blobData.find((item: any) => item['$name'] === 'CcyNm')?.['$data'] ?? '';
const code = blobData.find((item: any) => item['$name'] === 'Ccy')?.['$data'] ?? '';
//const country = blobData.find((item: any) => item["$name"] === "CtryNm")?.["$data"] ?? "";
if (typeof acc[code] === 'undefined') {
// Pick the first one in the dataset, prevent duplicate ids
acc[code] = {
id: code,
name,
};
}
return acc;
}, {} as Record<string, Currency>)
);
// Define resource filters
const filters = {
filterNsgValues(data: Array<Currency>): Array<Currency> {
return data.filter((currency: Currency) => ['EUR', 'SEK', 'NOK', 'ISK', 'DKK'].includes(currency.id));
},
};
export default new LibraryResource({
name: 'ISO4217Currencies',
async dataGetter(params?: Record<string, string>) {
let data = transformed;
if (isEnabledFilter(params, 'nsg')) {
data = filters.filterNsgValues(data);
}
return {
data: JSON.stringify(data),
mime: 'application/json; charset=utf-8',
};
},
});