mycrm 0.0.41

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,9 @@
1
+ require_relative 'models/adviser'
2
+ require_relative 'models/adviser_compliance_detail'
3
+ require_relative 'models/application'
4
+ require_relative 'models/client'
5
+ require_relative 'models/lender'
6
+ require_relative 'models/note'
7
+ require_relative 'models/office'
8
+ require_relative 'models/office_address'
9
+ require_relative 'models/structure'
@@ -0,0 +1,62 @@
1
+ require_relative '../model'
2
+ require_relative '../attributes/name'
3
+ require_relative '../attributes/date'
4
+ require_relative '../attributes/address'
5
+ require_relative '../attributes/organization'
6
+
7
+ module Mycrm
8
+ module Models
9
+ class Adviser
10
+ include Model
11
+
12
+ endpoint 'lm-advisers'
13
+
14
+ attribute :id, Integer
15
+ attribute :active, Boolean, default: true
16
+ attribute :source_id, Integer
17
+ attribute :family_id, Integer
18
+ attribute :country_id, Integer
19
+
20
+ attribute :name, Mycrm::Attributes::Name, embedded: true
21
+ attribute :trading_display_name, String
22
+ attribute :dob, Mycrm::Attributes::Date, embedded: true
23
+ attribute :address, Hash
24
+ attribute :business_address, Hash
25
+ attribute :email, String
26
+ attribute :mobile, String
27
+
28
+ attribute :business_phone, String
29
+ attribute :abn, String
30
+ attribute :acn, String
31
+ attribute :individual_ASICID, String, as: :asic_id
32
+
33
+ attribute :summary, String
34
+
35
+ attribute :reporting_country_id, Integer
36
+ attribute :client_type_ids, String #Array[Integer]
37
+ attribute :role, String #Array[Integer]
38
+ attribute :contractor_entity_id, Integer
39
+
40
+ attribute :organization, Mycrm::Attributes::Organization, embedded: true
41
+
42
+ attribute :uuid, String
43
+ attribute :subscription_list, Array[Integer], coerce: false, default: nil # coerce: false set here to avoid bug https://github.com/solnic/virtus/issues/334#issuecomment-190266441
44
+
45
+ def add_client_type(id)
46
+ self.client_type_ids = self.client_type_ids.to_s.split(',').push(id).join(',')
47
+ end
48
+
49
+ def reporting_country=(country)
50
+ self.reporting_country_id = Mycrm::Domains::Countries.find(country) rescue nil
51
+ end
52
+
53
+ def type=(country)
54
+ add_client_type Mycrm::Domains::AdviserTypes.find(country) rescue nil
55
+ end
56
+
57
+ def source=(source)
58
+ self.source_id = Mycrm::Domains::AdviserSources.find(source) rescue nil
59
+ end
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,26 @@
1
+ require_relative '../model'
2
+
3
+ module Mycrm
4
+ module Models
5
+ class AdviserComplianceDetail
6
+ include Model
7
+
8
+ endpoint 'corporate/FamilyComplianceGet'
9
+
10
+ only :get
11
+
12
+ attribute :FamilyId, String
13
+ attribute :AppointmentType, String
14
+
15
+ to :underscore
16
+
17
+ def self.find(id)
18
+ self.find_by(:familyId, id)
19
+ end
20
+
21
+ def self.parse(body)
22
+ JSON.parse(body)
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,23 @@
1
+ require_relative '../model'
2
+
3
+ module Mycrm
4
+ module Models
5
+ class AdviserNote
6
+ include Model
7
+
8
+ endpoint 'contacts/AdviserCommentSet?family_id=%{FamilyId}'
9
+
10
+ only :post
11
+
12
+ to :underscore
13
+
14
+ attribute :Id, Integer
15
+ attribute :FamilyId, Integer
16
+ attribute :Comment, String
17
+
18
+ def self.parse(body)
19
+ { 'Id' => body.to_i }
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,38 @@
1
+ require_relative '../model'
2
+ require_relative '../attributes/deposit'
3
+
4
+ module Mycrm
5
+ module Models
6
+ # leads
7
+ class Application
8
+ include Model
9
+
10
+ endpoint 'lm-clients/%{client_id}/scenarios'
11
+
12
+ only :post
13
+
14
+ attribute :id, Integer
15
+ attribute :client_id, Integer
16
+ attribute :deposit, Mycrm::Attributes::Deposit, embedded: true
17
+ attribute :salesforce_id, String
18
+ attribute :converted, Boolean, default: false
19
+ attribute :purposes, Array[Integer]
20
+ attribute :features, Array[Integer]
21
+ attribute :preferred_lenders, Array[Integer]
22
+ attribute :scenario_name, String
23
+ attribute :specific_goals, String
24
+ attribute :has_settlement_date, Boolean, default: true
25
+ attribute :settlement_date, String, default: lambda { |_,_| DateTime.now.to_s }
26
+ attribute :applicants, Array[Hash[Symbol => Integer]]
27
+ attribute :metadata, String
28
+
29
+ def add_purpose(purpose)
30
+ self.purposes << Mycrm::Domains::Purposes.find(purpose)
31
+ end
32
+
33
+ def add_feature(feature)
34
+ self.features << Mycrm::Domains::LoanFeatures.find(feature)
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,40 @@
1
+ require_relative '../model'
2
+ require_relative '../attributes/name'
3
+ require_relative '../attributes/date'
4
+ require_relative '../attributes/address'
5
+
6
+ module Mycrm
7
+ module Models
8
+ # leads
9
+ class Client
10
+ include Model
11
+
12
+ endpoint 'lm-clients'
13
+
14
+ attribute :id, Integer
15
+ attribute :active, Boolean, default: true
16
+ attribute :role_id, Integer, default: 1
17
+ attribute :source_id, Integer
18
+ attribute :family_id, Integer
19
+ attribute :allocated_broker_id, Integer
20
+ attribute :consumer_uuid, String
21
+ attribute :broker_uuid, String
22
+
23
+ attribute :name, Mycrm::Attributes::Name, embedded: true
24
+ attribute :dob, Mycrm::Attributes::Date, embedded: true
25
+ attribute :address, Mycrm::Attributes::Address, embedded: true
26
+ attribute :allocation_postcode, String
27
+ attribute :email, String
28
+ attribute :mobile, String
29
+ attribute :mobile_validated, Boolean, default: true
30
+ attribute :utm, Hash[Symbol => String]
31
+
32
+ attribute :web_lead_url, String
33
+ attribute :web_landing_url, String
34
+
35
+ def source=(source)
36
+ self.source_id = Mycrm::Domains::Sources.find(source) rescue nil
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,16 @@
1
+ require_relative '../model'
2
+
3
+ module Mycrm
4
+ module Models
5
+ class Lender
6
+ include Model
7
+
8
+ endpoint 'consumer/Lenders'
9
+
10
+ only :get
11
+
12
+ attribute :LenderId, String
13
+ attribute :LenderName, String
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,27 @@
1
+ require_relative '../model'
2
+
3
+ module Mycrm
4
+ module Models
5
+ class Note
6
+ include Model
7
+
8
+ endpoint 'contacts/NoteSet?family_id=%{FamilyId}'
9
+
10
+ only :post
11
+
12
+ to :underscore
13
+
14
+ attribute :Id, Integer
15
+ attribute :IsSticky, Boolean, default: true
16
+ attribute :FamilyId, Integer
17
+ attribute :ActivityTitle, String, default: ''
18
+ attribute :ActivityDetails, String, default: ''
19
+
20
+ attribute :Note, String
21
+
22
+ def self.parse(body)
23
+ { 'Id' => body.to_i }
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,48 @@
1
+ require_relative '../model'
2
+
3
+ module Mycrm
4
+ module Models
5
+ class Office
6
+ include Model
7
+
8
+ endpoint 'corporate/AdviserOrganizationGet'
9
+
10
+ only :get
11
+
12
+ to :underscore
13
+
14
+ attribute :AdviserOrganizationId, Integer, as: :id
15
+
16
+ attribute :AdviserOrganizationName, String, as: :name
17
+ attribute :RegisteredBusinessName, String
18
+ attribute :TradingName, String
19
+ attribute :OfficeDisplayName, String, as: :display_name
20
+
21
+ attribute :Phone, String
22
+ attribute :Fax, String
23
+ attribute :CompanyEmail, String, as: :email
24
+ attribute :ABN, String
25
+ attribute :ACN, String
26
+ attribute :ASCId, String, as: :asic_id
27
+ attribute :Website, String
28
+
29
+ attribute :AccountOwner_FamilyId, Integer, as: :owner_id
30
+ attribute :AccountOwner_FullName, String, as: :owner_name
31
+
32
+ attribute :LeadAdviser_FamilyId, Integer, as: :lead_adviser_id
33
+ attribute :LeadAdviser_FullName, String, as: :lead_adviser_name
34
+
35
+ attribute :IsActive, Boolean
36
+
37
+ def self.find(id)
38
+ find_by_AdviserOrganizationId(id)
39
+ end
40
+
41
+ def self.parse(body)
42
+ parsed = JSON.parse(body)
43
+ raise Mycrm::ResponseError, 'No Office Found' if parsed.empty?
44
+ parsed.first
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,37 @@
1
+ require_relative '../model'
2
+
3
+ module Mycrm
4
+ module Models
5
+ class OfficeAddress
6
+ include Model
7
+
8
+ endpoint 'corporate/OrganizationAddressGet'
9
+
10
+ only :get
11
+
12
+ to :underscore
13
+
14
+ attribute :organizationId, Integer
15
+ attribute :Route, String, as: :street_name
16
+ attribute :Subpremise, String
17
+ attribute :Street_number, String
18
+ attribute :Postal_code, String
19
+ attribute :Locality, String, as: :suburb
20
+ attribute :Administrative_area_level_1, String, as: :state
21
+ attribute :Country, String
22
+ attribute :Formatted_address, String, as: :formatted
23
+ attribute :Latitude, Float
24
+ attribute :Longitude, Float
25
+ attribute :GeoCoded, Boolean
26
+ attribute :IsMailing, Boolean
27
+
28
+ def self.find(id)
29
+ find_by_organizationId(id)
30
+ end
31
+
32
+ def self.parse(body)
33
+ JSON.parse(body).find{ |address| !address['isMailing'] } || {}
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,22 @@
1
+ require_relative '../model'
2
+
3
+ module Mycrm
4
+ module Models
5
+ class Structure
6
+ include Model
7
+
8
+ endpoint 'lm-applications/%{application_id}/structures'
9
+
10
+ only :post
11
+
12
+ attribute :id, Integer
13
+ attribute :application_id, Integer
14
+ attribute :loan_term, Integer
15
+ attribute :loan_amount, Integer
16
+ attribute :product_id, Integer
17
+ attribute :lender_id, Integer
18
+ attribute :lender_reason, String
19
+ attribute :product_reason, String
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,73 @@
1
+ countries:
2
+ australia: 2
3
+ new_zealand: 1
4
+ indonesia: 3
5
+
6
+ adviser_types:
7
+ mortgage_broker: 7829
8
+ financial_planner: 7828
9
+ insurance_broker: 7830
10
+
11
+ sources:
12
+ broker_website: -20
13
+ lm_contact_us: -10
14
+ lm_online_member: -9
15
+ inbound_call: -8
16
+ product_review: -7
17
+ domain: -6
18
+ rate_city: -5
19
+ home_loan_report: -4
20
+ active_pipe: -3
21
+ ray_white_car_finance: -2
22
+ referral: -1
23
+ asset_finance: -21
24
+ ebook: -26
25
+ facebook: -27
26
+ broker___ebook: -40
27
+
28
+ adviser_sources:
29
+ agents_broker_connection_networking: 1
30
+ better_business_summit: 2
31
+ cold_calling: 3
32
+ existing_relationship: 4
33
+ expo_ryc: 5
34
+ external_referrals: 6
35
+ insight_function: 7
36
+ internal_referrals: 8
37
+ job_advert: 9
38
+ lenders_bdm: 10
39
+ referred_by_lm_broker: 11
40
+ rw_office_referral: 12
41
+ the_adviser_digital_bootcamp: 13
42
+ recruitment_company: 14
43
+ recruitment_newsletter: 15
44
+ loan_market_careers_website: 16
45
+
46
+ purposes:
47
+ first_home: 2796
48
+ next_home: 2797
49
+ investment: 2798
50
+ commercial: 2799
51
+ industrial: 2800
52
+ get_a_better_deal: 2801
53
+ renovate: 2802
54
+ consolidate_dept: 2803
55
+ borrow_extra_funds: 2804
56
+ reverse_mortgage: 2805
57
+
58
+ loan_features:
59
+ variable_interest_rate: 2813
60
+ fixed_interest_rate: 2814
61
+ introductory_rate: 2815
62
+ professional_pack: 2816
63
+ construction_facility: 2817
64
+ extra_repayments: 2818
65
+ no_ongoing_fees: 2819
66
+ redraw_facility: 2820
67
+ fortnightly_repayments: 2821
68
+ weekly_repayments: 2822
69
+ interest_only_facility: 2823
70
+ no_early_repay_penalty: 2824
71
+ offset_account: 2825
72
+ lineof_credit: 2826
73
+ other: 2827
@@ -0,0 +1,3 @@
1
+ module Mycrm
2
+ VERSION = '0.0.41'
3
+ end
metadata ADDED
@@ -0,0 +1,221 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: mycrm
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.41
5
+ platform: ruby
6
+ authors:
7
+ - Danilo Lo Santo
8
+ - Sam Bauers
9
+ - Luke Bacon
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2020-07-15 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: faraday
17
+ requirement: !ruby/object:Gem::Requirement
18
+ requirements:
19
+ - - ">="
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ version: '0'
29
+ - !ruby/object:Gem::Dependency
30
+ name: virtus
31
+ requirement: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - ">="
34
+ - !ruby/object:Gem::Version
35
+ version: '0'
36
+ type: :runtime
37
+ prerelease: false
38
+ version_requirements: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: '0'
43
+ - !ruby/object:Gem::Dependency
44
+ name: virtus_convert
45
+ requirement: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: '0'
50
+ type: :runtime
51
+ prerelease: false
52
+ version_requirements: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ version: '0'
57
+ - !ruby/object:Gem::Dependency
58
+ name: dotenv
59
+ requirement: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - ">="
62
+ - !ruby/object:Gem::Version
63
+ version: '0'
64
+ type: :development
65
+ prerelease: false
66
+ version_requirements: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - ">="
69
+ - !ruby/object:Gem::Version
70
+ version: '0'
71
+ - !ruby/object:Gem::Dependency
72
+ name: simplecov
73
+ requirement: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - ">="
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ type: :development
79
+ prerelease: false
80
+ version_requirements: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - ">="
83
+ - !ruby/object:Gem::Version
84
+ version: '0'
85
+ - !ruby/object:Gem::Dependency
86
+ name: rspec
87
+ requirement: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - ">="
90
+ - !ruby/object:Gem::Version
91
+ version: '0'
92
+ type: :development
93
+ prerelease: false
94
+ version_requirements: !ruby/object:Gem::Requirement
95
+ requirements:
96
+ - - ">="
97
+ - !ruby/object:Gem::Version
98
+ version: '0'
99
+ - !ruby/object:Gem::Dependency
100
+ name: rspec-deep-matchers
101
+ requirement: !ruby/object:Gem::Requirement
102
+ requirements:
103
+ - - ">="
104
+ - !ruby/object:Gem::Version
105
+ version: '0'
106
+ type: :development
107
+ prerelease: false
108
+ version_requirements: !ruby/object:Gem::Requirement
109
+ requirements:
110
+ - - ">="
111
+ - !ruby/object:Gem::Version
112
+ version: '0'
113
+ - !ruby/object:Gem::Dependency
114
+ name: vcr
115
+ requirement: !ruby/object:Gem::Requirement
116
+ requirements:
117
+ - - ">="
118
+ - !ruby/object:Gem::Version
119
+ version: '0'
120
+ type: :development
121
+ prerelease: false
122
+ version_requirements: !ruby/object:Gem::Requirement
123
+ requirements:
124
+ - - ">="
125
+ - !ruby/object:Gem::Version
126
+ version: '0'
127
+ - !ruby/object:Gem::Dependency
128
+ name: webmock
129
+ requirement: !ruby/object:Gem::Requirement
130
+ requirements:
131
+ - - ">="
132
+ - !ruby/object:Gem::Version
133
+ version: '0'
134
+ type: :development
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ requirements:
138
+ - - ">="
139
+ - !ruby/object:Gem::Version
140
+ version: '0'
141
+ - !ruby/object:Gem::Dependency
142
+ name: pry
143
+ requirement: !ruby/object:Gem::Requirement
144
+ requirements:
145
+ - - ">="
146
+ - !ruby/object:Gem::Version
147
+ version: '0'
148
+ type: :development
149
+ prerelease: false
150
+ version_requirements: !ruby/object:Gem::Requirement
151
+ requirements:
152
+ - - ">="
153
+ - !ruby/object:Gem::Version
154
+ version: '0'
155
+ description: Description of MyCRM Gem.
156
+ email:
157
+ - luke.bacon@loanmarket.com.au
158
+ executables: []
159
+ extensions: []
160
+ extra_rdoc_files: []
161
+ files:
162
+ - MIT-LICENSE
163
+ - README.md
164
+ - Rakefile
165
+ - lib/mycrm.rb
166
+ - lib/mycrm/attributes.rb
167
+ - lib/mycrm/attributes/address.rb
168
+ - lib/mycrm/attributes/date.rb
169
+ - lib/mycrm/attributes/deposit.rb
170
+ - lib/mycrm/attributes/name.rb
171
+ - lib/mycrm/attributes/organization.rb
172
+ - lib/mycrm/connectable.rb
173
+ - lib/mycrm/core_ext.rb
174
+ - lib/mycrm/core_ext/address.rb
175
+ - lib/mycrm/core_ext/hash.rb
176
+ - lib/mycrm/core_ext/string.rb
177
+ - lib/mycrm/domains.rb
178
+ - lib/mycrm/facade.rb
179
+ - lib/mycrm/facades.rb
180
+ - lib/mycrm/facades/lead.rb
181
+ - lib/mycrm/facades/lead_application.rb
182
+ - lib/mycrm/facades/organization.rb
183
+ - lib/mycrm/model.rb
184
+ - lib/mycrm/models.rb
185
+ - lib/mycrm/models/adviser.rb
186
+ - lib/mycrm/models/adviser_compliance_detail.rb
187
+ - lib/mycrm/models/adviser_note.rb
188
+ - lib/mycrm/models/application.rb
189
+ - lib/mycrm/models/client.rb
190
+ - lib/mycrm/models/lender.rb
191
+ - lib/mycrm/models/note.rb
192
+ - lib/mycrm/models/office.rb
193
+ - lib/mycrm/models/office_address.rb
194
+ - lib/mycrm/models/structure.rb
195
+ - lib/mycrm/resources/domains.yml
196
+ - lib/mycrm/version.rb
197
+ homepage: http://www.loanmarket.com.au
198
+ licenses:
199
+ - MIT
200
+ metadata: {}
201
+ post_install_message:
202
+ rdoc_options: []
203
+ require_paths:
204
+ - lib
205
+ required_ruby_version: !ruby/object:Gem::Requirement
206
+ requirements:
207
+ - - ">="
208
+ - !ruby/object:Gem::Version
209
+ version: '0'
210
+ required_rubygems_version: !ruby/object:Gem::Requirement
211
+ requirements:
212
+ - - ">="
213
+ - !ruby/object:Gem::Version
214
+ version: '0'
215
+ requirements: []
216
+ rubyforge_project:
217
+ rubygems_version: 2.5.2.2
218
+ signing_key:
219
+ specification_version: 4
220
+ summary: Summary of MyCRM Gem.
221
+ test_files: []