Module: ShelbyArena::Client::Person

Included in:
ShelbyArena::Client
Defined in:
lib/shelby_arena/resources/person.rb

Instance Method Summary collapse

Instance Method Details

#create_person(first_name:, last_name:, email:) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/shelby_arena/resources/person.rb', line 25

def create_person(
  first_name:,
  last_name:,
  email:
)
  path = 'person/add'

  body = {
    'FirstName' => first_name,
    'LastName' => last_name,
    'Emails' => ['Address' => email]
  }

  options = {}
  options[:api_sig] = generate_api_sig(path, options)
  res = json_post("#{path}?api_session=#{options[:api_session]}&api_sig=#{options[:api_sig]}", body.to_json)
  res.dig('ModifyResult', 'ObjectID')
end

#find_people_by_email(email) ⇒ Object



14
15
16
# File 'lib/shelby_arena/resources/person.rb', line 14

def find_people_by_email(email)
  list_people(email: email)
end

#find_people_by_name_and_email(first_name, last_name, email) ⇒ Object



10
11
12
# File 'lib/shelby_arena/resources/person.rb', line 10

def find_people_by_name_and_email(first_name, last_name, email)
  list_people(firstName: first_name, lastName: last_name, email: email)
end

#find_person(id, options = {}) ⇒ Object



18
19
20
21
22
23
# File 'lib/shelby_arena/resources/person.rb', line 18

def find_person(id, options = {})
  path = people_path(id)
  options[:api_sig] = generate_api_sig(path, options)
  res = get(path, options.sort)
  Response::Person.format(res.dig('Person'))
end

#list_people(options = {}) ⇒ Object



4
5
6
7
8
# File 'lib/shelby_arena/resources/person.rb', line 4

def list_people(options = {})
  options[:api_sig] = generate_api_sig(people_path, options)
  res = get(people_path, options.sort)
  Response::Person.format_list(res.dig('PersonListResult', 'Persons', 'Person'))
end

#update_person(id, first_name: nil, last_name: nil, email: nil) ⇒ Object



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/shelby_arena/resources/person.rb', line 44

def update_person(
  id,
  first_name: nil,
  last_name: nil,
  email: nil
)
  path = "#{people_path(id)}/update"

  body = {}

  body['FirstName'] = first_name if first_name
  body['LastName'] = last_name if last_name
  body['Emails'] = ['Address' => email] if email

  options = {}
  options[:api_sig] = generate_api_sig(path, options)

  res = json_post("#{path}?api_session=#{options[:api_session]}&api_sig=#{options[:api_sig]}", body.to_json)
  res.dig('ModifyResult', 'ObjectID')
end