summaryrefslogtreecommitdiff
path: root/src/enums/MembershipType.ts
blob: e153755e9367611559f47e87cd46bab15cdbae1f (plain)
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
enum MembershipType {
  IndividualUk,
  IndividualNonUk,
  InstitutionUk,
}

export type MembershipTypeSnakeCase = 'individual-uk' | 'individual-non-uk' | 'institution-uk';

const allMembershipTypesSnakeCaseHash: { [key in MembershipTypeSnakeCase]: null } = {
  'individual-uk': null,
  'individual-non-uk': null,
  'institution-uk': null,
};
export const allMembershipTypesSnakeCase = Object.keys(
  allMembershipTypesSnakeCaseHash
) as MembershipTypeSnakeCase[];

export function membershipTypeToSnakeCase(membershipType: MembershipType): MembershipTypeSnakeCase {
  switch (membershipType) {
    case MembershipType.IndividualUk:
      return 'individual-uk';
    case MembershipType.IndividualNonUk:
      return 'individual-non-uk';
    case MembershipType.InstitutionUk:
      return 'institution-uk';
  }
}

export function snakeCaseToMembershipType(membershipType: MembershipTypeSnakeCase): MembershipType {
  switch (membershipType) {
    case 'individual-uk':
      return MembershipType.IndividualUk;
    case 'individual-non-uk':
      return MembershipType.IndividualNonUk;
    case 'institution-uk':
      return MembershipType.InstitutionUk;
  }
}

export const allMembershipTypes = allMembershipTypesSnakeCase.map(snakeCaseToMembershipType);

export default MembershipType;