Passed
Push — main ( 8785b1...fdb7a5 )
by Alexis
01:04
created

endpoints.customer_groups.CustomerGroups.create()   A

Complexity

Conditions 5

Size

Total Lines 19
Code Lines 18

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 5
eloc 18
nop 6
dl 0
loc 19
rs 9.0333
c 0
b 0
f 0
1
from .base import Resource, UserRoles
2
3
4
# =======================================================
5
# Customer Groups
6
# =======================================================
7
class CustomerGroups(Resource):
8
    def fetch(self,
9
              with_invited: bool = False,
10
              with_roles:   list = (UserRoles.ADMIN, UserRoles.AGENT, UserRoles.COLLABORATOR)):
11
        roles = ",".join([role.value[0] for role in with_roles])
12
        return self._get("/users", with_invited=with_invited, with_roles=roles, type="customer_group")
13
14
    def create(self,
15
               name:                             str,
16
               role:                             UserRoles = None,
17
               team_ids:                         list      = None,
18
               can_members_access_group_tickets: bool      = None,
19
               email_domains:                    list      = None):
20
        customer_group = {
21
            "name": name,
22
            "type": "customer_group"
23
        }
24
        if role is not None:
25
            customer_group["role"] = role.value[1]
26
        if team_ids is not None:
27
            customer_group["team_ids"] = ",".join(team_ids)
28
        if can_members_access_group_tickets is not None:
29
            customer_group["can_members_access_group_tickets"] = can_members_access_group_tickets
30
        if email_domains is not None:
31
            customer_group["email_domains"] = ",".join(email_domains)
32
        return self._post("/users", data={"user": customer_group})
33
34
    def update(self,
35
               group_id:                         int,
36
               first_name:                       str       = None,
37
               last_name:                        str       = None,
38
               role:                             UserRoles = None,
39
               team_ids:                         list      = None,
40
               can_members_access_group_tickets: bool      = None,
41
               email_domains:                    list      = None):
42
        customer_group = {
43
            "type": "customer_group"
44
        }
45
46
        if first_name is not None:
47
            customer_group["first_name"] = first_name
48
        if last_name is not None:
49
            customer_group["last_name"] = last_name
50
        if role is not None:
51
            customer_group["role"] = role.value[1]
52
        if team_ids is not None:
53
            customer_group["team_ids"] = ",".join(team_ids)
54
        if can_members_access_group_tickets is not None:
55
            customer_group["can_members_access_group_tickets"] = can_members_access_group_tickets
56
        if email_domains is not None:
57
            customer_group["email_domains"] = ",".join(email_domains)
58
59
        if len(customer_group.keys()) == 1:
60
            return  # No update called
61
62
        return self._post("/users/{user_id}".format(user_id=group_id), data={"user": customer_group})
63
64
    def fetchMembers(self,
65
                     group_id: int):
66
        return self._get("/users/{group_id}/members".format(group_id=group_id))
67
68
    def addMember(self,
69
                  group_id: int,
70
                  member_id: int):
71
        member = {
72
            "id": member_id
73
        }
74
        return self._post("/users/{group_id}/members".format(group_id=group_id), data={"member": member})
75