adf_builder 0.0.7 → 0.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7b6904f4a4346718e3a08189a1da210b0c6a8305679d49f00d552854abb36db2
4
- data.tar.gz: becdc5415db73468da3508f93f9d8d6a7a094a80e19f2b5bcf872e248d3520df
3
+ metadata.gz: 8a2725ac72b47a548355664e21014fd434ead3aa0829f0dfd3d8c506dd12c1db
4
+ data.tar.gz: 584cabe276de7ef15cecc2e50911005e6a7100468582934f3efa97107d5d576b
5
5
  SHA512:
6
- metadata.gz: '0798101309032835894eb10965dfbcbcc97b7481f1e1aefda8f617b4a1219c469eb505df14c7344c2be80c0ce39d2bf347aa33f63106d893fcd1010d52775d0f'
7
- data.tar.gz: 15d466aa189bf14ba7a7b79fa807a596f9d6d789ab06c68e40692d4b9e81336195b9581c1243fea22f12fa87b5059d7d453282de1c2455d89811d6f48f11bbae
6
+ metadata.gz: 5a4e274b4ea6af2af31d0cec8c6c452ff8da5db67b8f4c3b9442a0d44449dbf912e6b6ad1146649f12b7b8a20017716598e56b01e19f5ebb17020aa94ee57faf
7
+ data.tar.gz: b7c13eab73118e95fe03af6c1428c01f18a69c895ef2d48d4eda9731289353857d210328f08150818d27141e332bace07ff6c991c482d6063526939beca3e492
data/CHANGELOG.md CHANGED
@@ -1,21 +1,17 @@
1
1
  ## [Unreleased]
2
- - Vehicle Structure
3
- - Remaining Optional Tags that are not free text
4
- - odometer
5
- - condition
6
- - colorcombination
7
- - imagetag
2
+ - Vehicle Structure - Remaining Optional Tags that are not free text
8
3
  - price
9
4
  - option
10
5
  - finance
11
6
  - Expand Structures for all parameters
12
7
  - Customer
13
- - Vehicle
14
8
  - Contact
9
+ - Vehicle
10
+ - Price
11
+
15
12
 
16
- ### In many moons
17
- - Add Provider structure
18
- - Add Price structure
13
+ ## [0.0.8] - 2021-08-12
14
+ - Added all of Provider structure
19
15
 
20
16
  ## [0.0.7] - 2021-08-08
21
17
  - Much refactoring so that we can reuse functions
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- adf_builder (0.0.7)
4
+ adf_builder (0.0.8)
5
5
  ox (~> 2.14)
6
6
 
7
7
  GEM
data/README.md CHANGED
@@ -251,8 +251,48 @@ Outputs
251
251
  </prospect>
252
252
  </adf>
253
253
  ```
254
+ A complex Provider
254
255
 
255
- Different Vehicle operations
256
+ ```ruby
257
+ builder = AdfBuilder::Builder.new
258
+ provider = builder.prospect.provider
259
+ provider.add('Testing', {part: 'full', type: 'business'})
260
+ provider.update_tags_with_free_text({
261
+ url: 'howdy',
262
+ service: "Nice"
263
+ })
264
+ provider.add_email("test@test.com", {preferredcontact: 0})
265
+ provider.add_phone("+14445556666", {
266
+ type: 'fax',
267
+ time: 'day'
268
+ })
269
+ provider.add_contact("Mr Sir")
270
+ provider.contact.add_phone("+132435523424")
271
+ ```
272
+
273
+ ```xml
274
+ <?ADF version="1.0"?>
275
+
276
+ <?xml version="1.0"?>
277
+ <adf>
278
+ <prospect status="new">
279
+ <requestdate>2021-08-12T18:56:41+04:00</requestdate>
280
+ <customer/>
281
+ <vendor/>
282
+ <provider>
283
+ <name part="full" type="business">Testing</name>
284
+ <url>howdy</url>
285
+ <service>Nice</service>
286
+ <email preferredcontact="0">test@test.com</email>
287
+ <phone type="fax" time="day">+14445556666</phone>
288
+ <contact>
289
+ <name>Mr Sir</name>
290
+ <phone>+132435523424</phone>
291
+ </contact>
292
+ </provider>
293
+ </prospect>
294
+ </adf>
295
+ ```
256
296
 
257
297
  ## Development
258
298
 
data/lib/adf_builder.rb CHANGED
@@ -11,6 +11,9 @@ require_relative 'adf_builder/base/base'
11
11
  require_relative 'adf_builder/base/prospect'
12
12
  require_relative 'adf_builder/base/request_date'
13
13
 
14
+ # PROVIDER
15
+ require_relative 'adf_builder/provider/provider'
16
+
14
17
  # SHARED
15
18
  require_relative 'adf_builder/shared/id'
16
19
  require_relative 'adf_builder/shared/contact'
@@ -16,6 +16,7 @@ module AdfBuilder
16
16
  @vehicles = Vehicles.new(@prospect)
17
17
  @customer = Customer.new(@prospect)
18
18
  @vendor = Vendor.new(@prospect)
19
+ @provider = Provider.new(@prospect)
19
20
  end
20
21
 
21
22
  def request_date
@@ -34,6 +35,10 @@ module AdfBuilder
34
35
  @vendor
35
36
  end
36
37
 
38
+ def provider
39
+ @provider
40
+ end
41
+
37
42
  # set status to renew
38
43
  def set_renew
39
44
  @prospect[:status] = STATUSES[:resend]
@@ -0,0 +1,55 @@
1
+ module AdfBuilder
2
+ class Provider
3
+
4
+
5
+ FREE_TEXT_OPTIONAL_TAGS = [:service, :url]
6
+
7
+ def initialize(prospect)
8
+ @prospect = prospect
9
+ @provider = nil
10
+ @contact = nil
11
+ end
12
+
13
+ def contact
14
+ @contact
15
+ end
16
+
17
+
18
+ def add(name, params={})
19
+ @provider = Ox::Element.new('provider')
20
+ params.merge!({valid_values: AdfBuilder::Contact::VALID_VALUES, valid_parameters: AdfBuilder::Contact::VALID_PARAMETERS})
21
+ AdfBuilder::Builder.update_node(@provider, :name, name, params)
22
+ @prospect << @provider
23
+ end
24
+
25
+ def add_contact(name, opts={})
26
+ @contact = Contact.new(@provider, name, opts)
27
+ end
28
+
29
+ def add_phone(phone, params={})
30
+ params.merge!({valid_values: AdfBuilder::Contact::VALID_VALUES, valid_parameters: AdfBuilder::Contact::VALID_PARAMETERS})
31
+ AdfBuilder::Builder.update_node(@provider, :phone, phone, params)
32
+ end
33
+
34
+ def add_email(email, params={})
35
+ params.merge!({valid_values: AdfBuilder::Contact::VALID_VALUES, valid_parameters: AdfBuilder::Contact::VALID_PARAMETERS})
36
+ AdfBuilder::Builder.update_node(@provider, :email, email, params)
37
+ end
38
+
39
+ def update_tags_with_free_text(tags)
40
+ tags.each do |key, value|
41
+ if FREE_TEXT_OPTIONAL_TAGS.include? key.to_sym
42
+ AdfBuilder::Builder.update_node(@provider, key, value)
43
+ end
44
+ end
45
+ end
46
+
47
+ def add_id(index, value, source=nil, sequence=1)
48
+ if @prospect.locate("provider").empty?
49
+ false
50
+ else
51
+ Id.new.add(@prospect.provider(index), value, source, sequence)
52
+ end
53
+ end
54
+ end
55
+ end
@@ -6,45 +6,37 @@ module AdfBuilder
6
6
  phone: [:type, :time, :preferredcontact]
7
7
  }
8
8
 
9
- PHONE_TYPES = [:phone, :fax, :cellphone, :pager]
9
+ VALID_VALUES = {
10
+ name: {
11
+ part: %w[first middle suffix last full],
12
+ type: %w[individual business],
13
+ primarycontact: %w[0 1]
14
+ },
15
+ email: {
16
+ preferredcontact: %w[0 1],
17
+ },
18
+ phone: {
19
+ preferredcontact: %w[0 1],
20
+ type: %w[phone fax cellphone pager],
21
+ time: %w[morning afternoon evening nopreference day]
22
+ }
23
+ }
10
24
 
11
- def initialize(parent_node, name, opts={})
12
- @contact = Ox::Element.new('contact') << (Ox::Element.new('name') << name)
25
+ def initialize(parent_node, name, params={})
26
+ @contact = Ox::Element.new('contact')
27
+ params.merge!({valid_values: VALID_VALUES, valid_parameters: VALID_PARAMETERS})
28
+ AdfBuilder::Builder.update_node(@contact, :name, name, params)
13
29
  parent_node << @contact
14
-
15
- opts = whitelabel_opts(opts, :name)
16
-
17
- if opts[:primary_contact]
18
- @contact[:primarycontact] = opts[:primary_contact].to_s
19
- end
20
-
21
- opts.each do |k,v|
22
- @contact.locate("name")[0][k] = v.to_s
23
- end
24
-
25
30
  end
26
31
 
27
- def add_email(email, opts={})
28
- @contact << (Ox::Element.new('email') << email)
29
- opts = whitelabel_opts(opts, :phone)
30
-
31
- opts.each do |k,v|
32
- @contact.email[k] = v.to_s
33
- end
34
- end
35
-
36
- def add_phone(phone, opts={})
37
- @contact << (Ox::Element.new('phone') << phone)
38
- opts = whitelabel_opts(opts, :phone)
39
-
40
- opts.each do |k,v|
41
- @contact.phone[k] = v.to_s
42
- end
32
+ def add_phone(phone, params={})
33
+ params.merge!({valid_values: VALID_VALUES, valid_parameters: VALID_PARAMETERS})
34
+ AdfBuilder::Builder.update_node(@contact, :phone, phone, params)
43
35
  end
44
36
 
45
- # clear out the opts that don't match valid keys
46
- def whitelabel_opts(opts, key)
47
- opts.slice(*VALID_PARAMETERS[key])
37
+ def add_email(email, params={})
38
+ params.merge!({valid_values: VALID_VALUES, valid_parameters: VALID_PARAMETERS})
39
+ AdfBuilder::Builder.update_node(@contact, :email, email, params)
48
40
  end
49
41
  end
50
42
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module AdfBuilder
4
- VERSION = "0.0.7"
4
+ VERSION = "0.0.8"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: adf_builder
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - marcus.salinas
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-08-08 00:00:00.000000000 Z
11
+ date: 2021-08-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ox
@@ -49,6 +49,7 @@ files:
49
49
  - lib/adf_builder/base/prospect.rb
50
50
  - lib/adf_builder/base/request_date.rb
51
51
  - lib/adf_builder/customer/customer.rb
52
+ - lib/adf_builder/provider/provider.rb
52
53
  - lib/adf_builder/shared/contact.rb
53
54
  - lib/adf_builder/shared/id.rb
54
55
  - lib/adf_builder/vehicles/colorcombinations.rb