Skip to content

Commit 20d2eba

Browse files
struniuErwin Fedasz
authored andcommitted
Add Text messages and Visits and Visit Outcomes models to the client
1 parent efdc929 commit 20d2eba

12 files changed

Lines changed: 404 additions & 0 deletions

README.md

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -437,6 +437,17 @@ Actions:
437437
* Update a task - `client.tasks.update`
438438
* Delete a task - `client.tasks.destroy`
439439

440+
### TextMessage
441+
442+
```ruby
443+
client = BaseCRM::Client.new(access_token: "<YOUR_PERSONAL_ACCESS_TOKEN>")
444+
client.text_messages # => BaseCRM::TextMessagesService
445+
```
446+
447+
Actions:
448+
* Retrieve text messages - `client.text_messages.all`
449+
* Retrieve a single text message - `client.text_messages.find`
450+
440451
### User
441452

442453
```ruby
@@ -449,6 +460,26 @@ Actions:
449460
* Retrieve a single user - `client.users.find`
450461
* Retrieve an authenticating user - `client.users.self`
451462

463+
### Visit
464+
465+
```ruby
466+
client = BaseCRM::Client.new(access_token: "<YOUR_PERSONAL_ACCESS_TOKEN>")
467+
client.visits # => BaseCRM::VisitsService
468+
```
469+
470+
Actions:
471+
* Retrieve visits - `client.visits.all`
472+
473+
### VisitOutcome
474+
475+
```ruby
476+
client = BaseCRM::Client.new(access_token: "<YOUR_PERSONAL_ACCESS_TOKEN>")
477+
client.visit_outcomes # => BaseCRM::VisitOutcomesService
478+
```
479+
480+
Actions:
481+
* Retrieve visit outcomes - `client.visit_outcomes.all`
482+
452483

453484
## License
454485
MIT

lib/basecrm.rb

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,10 @@
3434
require 'basecrm/models/stage'
3535
require 'basecrm/models/tag'
3636
require 'basecrm/models/task'
37+
require 'basecrm/models/text_message'
3738
require 'basecrm/models/user'
39+
require 'basecrm/models/visit'
40+
require 'basecrm/models/visit_outcome'
3841
require 'basecrm/models/sync_queue'
3942
require 'basecrm/models/sync_session'
4043
require 'basecrm/models/sync_meta'
@@ -61,7 +64,10 @@
6164
require 'basecrm/services/stages_service'
6265
require 'basecrm/services/tags_service'
6366
require 'basecrm/services/tasks_service'
67+
require 'basecrm/services/text_messages_service'
6468
require 'basecrm/services/users_service'
69+
require 'basecrm/services/visits_service'
70+
require 'basecrm/services/visit_outcomes_service'
6571
require 'basecrm/services/sync_service'
6672

6773
require 'basecrm/sync'
@@ -283,6 +289,15 @@ def tasks
283289
@tasks ||= TasksService.new(@http_client)
284290
end
285291

292+
# Access all TextMessages related actions.
293+
# @see TextMessagesService
294+
# @see TextMessage
295+
#
296+
# @return [TextMessagesService] Service object for resources.
297+
def text_messages
298+
@text_messages ||= TextMessagesService.new(@http_client)
299+
end
300+
286301
# Access all Users related actions.
287302
# @see UsersService
288303
# @see User
@@ -292,6 +307,24 @@ def users
292307
@users ||= UsersService.new(@http_client)
293308
end
294309

310+
# Access all Visits related actions.
311+
# @see VisitsService
312+
# @see Visit
313+
#
314+
# @return [VisitsService] Service object for resources.
315+
def visits
316+
@visits ||= VisitsService.new(@http_client)
317+
end
318+
319+
# Access all VisitOutcomes related actions.
320+
# @see VisitOutcomesService
321+
# @see VisitOutcome
322+
#
323+
# @return [VisitOutcomesService] Service object for resources.
324+
def visit_outcomes
325+
@visit_outcomes ||= VisitOutcomesService.new(@http_client)
326+
end
327+
295328
# Access Sync API related low-level actions.
296329
# @see SyncService
297330
#

lib/basecrm/models/text_message.rb

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
# WARNING: This code is auto-generated from the BaseCRM API Discovery JSON Schema
2+
3+
module BaseCRM
4+
class TextMessage < Model
5+
# @!attribute [r] associated_deal_ids
6+
# @return [Array<Integer>] An array of ids of deals associated to the text message.
7+
# attr_reader :associated_deal_ids
8+
# @!attribute [r] content
9+
# @return [String] Content of the text message.
10+
# attr_reader :content
11+
# @!attribute [r] created_at
12+
# @return [DateTime] Date and time of creation in UTC (ISO8601 format).
13+
# attr_reader :created_at
14+
# @!attribute [r] id
15+
# @return [Integer] Unique identifier of the text_message.
16+
# attr_reader :id
17+
# @!attribute [r] incoming
18+
# @return [Boolean] Indicator of whether the text message was incoming or not.
19+
# attr_reader :incoming
20+
# @!attribute [r] resource_id
21+
# @return [Integer] Unique identifier of the resource the text message is attached to.
22+
# attr_reader :resource_id
23+
# @!attribute [r] resource_phone_number
24+
# @return [String] Phone number of a resource the text message was sent to/received by.
25+
# attr_reader :resource_phone_number
26+
# @!attribute [r] resource_type
27+
# @return [String] Name of a resource type the text message is attached to.
28+
# attr_reader :resource_type
29+
# @!attribute [r] sent_at
30+
# @return [DateTime] Date and time of the message send time in UTC (ISO8601 format).
31+
# attr_reader :sent_at
32+
# @!attribute [r] updated_at
33+
# @return [DateTime] Date and time of the last update in UTC (ISO8601 format).
34+
# attr_reader :updated_at
35+
# @!attribute [r] user_id
36+
# @return [Integer] Unique identifier of a user who sent/received a text message.
37+
# attr_reader :user_id
38+
# @!attribute [r] user_phone_number
39+
# @return [String] Phone number of a user who sent/received a text message.
40+
# attr_reader :user_phone_number
41+
42+
end
43+
end

lib/basecrm/models/visit.rb

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
# WARNING: This code is auto-generated from the BaseCRM API Discovery JSON Schema
2+
3+
module BaseCRM
4+
class Visit < Model
5+
# @!attribute [r] created_at
6+
# @return [DateTime] Date and time of creation in UTC (ISO8601 format).
7+
# attr_reader :created_at
8+
# @!attribute [r] creator_id
9+
# @return [Integer] Unique identifier of a user who created a visit.
10+
# attr_reader :creator_id
11+
# @!attribute [r] id
12+
# @return [Integer] Unique identifier of a visit.
13+
# attr_reader :id
14+
# @!attribute [r] outcome_id
15+
# @return [Integer] Unique identifier of a visit outcome.
16+
# attr_reader :outcome_id
17+
# @!attribute [r] rep_location_verification_status
18+
# @return [String] The status of the location verification of the device that created the visit (sales representative).
19+
# attr_reader :rep_location_verification_status
20+
# @!attribute [r] resource_address
21+
# @return [String] Address of the visit
22+
# attr_reader :resource_address
23+
# @!attribute [r] resource_id
24+
# @return [Integer] The ID of the resource the visit is attached to. Requires the resource_type query param to be set as well.
25+
# attr_reader :resource_id
26+
# @!attribute [r] resource_type
27+
# @return [String] The type of the resource the visit is attached to.
28+
# attr_reader :resource_type
29+
# @!attribute [r] summary
30+
# @return [String] Summary of the visit.
31+
# attr_reader :summary
32+
# @!attribute [r] updated_at
33+
# @return [DateTime] Date and time of the last update in UTC (ISO8601 format).
34+
# attr_reader :updated_at
35+
36+
end
37+
end
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# WARNING: This code is auto-generated from the BaseCRM API Discovery JSON Schema
2+
3+
module BaseCRM
4+
class VisitOutcome < Model
5+
# @!attribute [r] created_at
6+
# @return [DateTime] Date and time of creation in UTC (ISO8601 format).
7+
# attr_reader :created_at
8+
# @!attribute [r] id
9+
# @return [Integer] Unique identifier of a visit outcome.
10+
# attr_reader :id
11+
# @!attribute [r] name
12+
# @return [String] Name of the visit outcome.
13+
# attr_reader :name
14+
# @!attribute [r] updated_at
15+
# @return [DateTime] Date and time of the last update in UTC (ISO8601 format).
16+
# attr_reader :updated_at
17+
18+
end
19+
end
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
# WARNING: This code is auto-generated from the BaseCRM API Discovery JSON Schema
2+
3+
module BaseCRM
4+
class TextMessagesService
5+
def initialize(client)
6+
@client = client
7+
end
8+
9+
# Retrieve text messages
10+
#
11+
# get '/text_messages'
12+
#
13+
# If you want to use filtering or sorting (see #where).
14+
# @return [Enumerable] Paginated resource you can use to iterate over all the resources.
15+
def all
16+
PaginatedResource.new(self)
17+
end
18+
19+
# Retrieve text messages
20+
#
21+
# get '/text_messages'
22+
#
23+
# Returns Text Messages, according to the parameters provided
24+
#
25+
# @param options [Hash] Search options
26+
# @option options [Integer] :page (1) Page number to start from. Page numbering starts at 1, and omitting the `page` parameter will return the first page.
27+
# @option options [Integer] :per_page (25) Number of records to return per page. The default limit is *25* and the maximum number that can be returned at one time is *100*.
28+
# @option options [String] :ids Comma-separated list of text message IDs to be returned in request.
29+
# @option options [Integer] :resource_id Unique identifier of a resource the text message is attached to. Requires also resource_type to be specified.
30+
# @option options [String] :resource_type Name of a resource type the text message is attached to. Requires also resource_id to be specified.
31+
# @option options [String] :sort_by (id:desc) Comma-separated list of fields to sort by. The sort criteria is applied in the order specified. The **default** ordering is **descending**. If you want to change the sort ordering to ascending, append `:asc` to the field e.g. `sort_by=id:asc`
32+
# @return [Array<TextMessage>] The list of TextMessages for the first page, unless otherwise specified.
33+
def where(options = {})
34+
_, _, root = @client.get("/text_messages", options)
35+
36+
root[:items].map{ |item| TextMessage.new(item[:data]) }
37+
end
38+
39+
40+
# Retrieve a single text message
41+
#
42+
# get '/text_messages/{id}'
43+
#
44+
# Returns a single text message according to the unique ID provided
45+
# If the specified user does not exist, this query returns an error
46+
#
47+
# @param id [Integer] Unique identifier of a TextMessage
48+
# @return [TextMessage] Searched resource object.
49+
def find(id)
50+
_, _, root = @client.get("/text_messages/#{id}")
51+
52+
TextMessage.new(root[:data])
53+
end
54+
55+
56+
private
57+
def validate_type!(text_message)
58+
raise TypeError unless text_message.is_a?(TextMessage) || text_message.is_a?(Hash)
59+
end
60+
61+
def extract_params!(text_message, *args)
62+
params = text_message.to_h.select{ |k, _| args.include?(k) }
63+
raise ArgumentError, "one of required attributes is missing. Expected: #{args.join(',')}" if params.count != args.length
64+
params
65+
end
66+
end
67+
end
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
# WARNING: This code is auto-generated from the BaseCRM API Discovery JSON Schema
2+
3+
module BaseCRM
4+
class VisitOutcomesService
5+
def initialize(client)
6+
@client = client
7+
end
8+
9+
# Retrieve visit outcomes
10+
#
11+
# get '/visit_outcomes'
12+
#
13+
# If you want to use filtering or sorting (see #where).
14+
# @return [Enumerable] Paginated resource you can use to iterate over all the resources.
15+
def all
16+
PaginatedResource.new(self)
17+
end
18+
19+
# Retrieve visit outcomes
20+
#
21+
# get '/visit_outcomes'
22+
#
23+
# Returns Visit Outcomes, according to the parameters provided
24+
#
25+
# @param options [Hash] Search options
26+
# @option options [Integer] :page (1) Page number to start from. Page numbering starts at 1, and omitting the `page` parameter will return the first page.
27+
# @option options [Integer] :per_page (25) Number of records to return per page. The default limit is *25* and the maximum number that can be returned at one time is *100*.
28+
# @return [Array<VisitOutcome>] The list of VisitOutcomes for the first page, unless otherwise specified.
29+
def where(options = {})
30+
_, _, root = @client.get("/visit_outcomes", options)
31+
32+
root[:items].map{ |item| VisitOutcome.new(item[:data]) }
33+
end
34+
35+
36+
private
37+
def validate_type!(visit_outcome)
38+
raise TypeError unless visit_outcome.is_a?(VisitOutcome) || visit_outcome.is_a?(Hash)
39+
end
40+
41+
def extract_params!(visit_outcome, *args)
42+
params = visit_outcome.to_h.select{ |k, _| args.include?(k) }
43+
raise ArgumentError, "one of required attributes is missing. Expected: #{args.join(',')}" if params.count != args.length
44+
params
45+
end
46+
end
47+
end
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
# WARNING: This code is auto-generated from the BaseCRM API Discovery JSON Schema
2+
3+
module BaseCRM
4+
class VisitsService
5+
def initialize(client)
6+
@client = client
7+
end
8+
9+
# Retrieve visits
10+
#
11+
# get '/visits'
12+
#
13+
# If you want to use filtering or sorting (see #where).
14+
# @return [Enumerable] Paginated resource you can use to iterate over all the resources.
15+
def all
16+
PaginatedResource.new(self)
17+
end
18+
19+
# Retrieve visits
20+
#
21+
# get '/visits'
22+
#
23+
# Returns Visits, according to the parameters provided
24+
#
25+
# @param options [Hash] Search options
26+
# @option options [Integer] :page (1) Page number to start from. Page numbering starts at 1, and omitting the `page` parameter will return the first page.
27+
# @option options [Integer] :per_page (25) Number of records to return per page. The default limit is *25* and the maximum number that can be returned at one time is *100*.
28+
# @option options [Integer] :outcome_id Unique identifier of a visit outcome.
29+
# @option options [Integer] :creator_id Unique identifier of a user who created a visit.
30+
# @option options [Integer] :resource_id Unique identifier of a resource the visit is attached to. Requires also resource_type to be specified.
31+
# @option options [String] :resource_type Name of a resource type the visit is attached to. Requires also resource_id to be specified.
32+
# @option options [String] :rep_location_verification_status The status of the location verification of the device that created the visit (sales representative).
33+
# @option options [String] :sort_by (id:asc) A field to sort by. Default ordering is ascending. If you want to change the sort order to descending, append :desc to the filed e.g. sort_by=visited_at:desc.
34+
# @return [Array<Visit>] The list of Visits for the first page, unless otherwise specified.
35+
def where(options = {})
36+
_, _, root = @client.get("/visits", options)
37+
38+
root[:items].map{ |item| Visit.new(item[:data]) }
39+
end
40+
41+
42+
private
43+
def validate_type!(visit)
44+
raise TypeError unless visit.is_a?(Visit) || visit.is_a?(Hash)
45+
end
46+
47+
def extract_params!(visit, *args)
48+
params = visit.to_h.select{ |k, _| args.include?(k) }
49+
raise ArgumentError, "one of required attributes is missing. Expected: #{args.join(',')}" if params.count != args.length
50+
params
51+
end
52+
end
53+
end

spec/factories/text_message.rb

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
FactoryGirl.define do
2+
factory :text_message, class: BaseCRM::TextMessage do
3+
4+
5+
6+
end
7+
end

0 commit comments

Comments
 (0)