vng 1.5.0 → 1.6.0

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: 129c6515837c1b7fa5f154615d612ca3cedd6bd320bb263a7fb735077f8b5d47
4
- data.tar.gz: 18bb0decf0fe5898806be8d2c14a72922d81d088b911a635066f9c96412667b4
3
+ metadata.gz: dc73ebb5c56c095dd0605b32f41dcb6b75560f84a7b2b8ffcdfed0bc574a54ff
4
+ data.tar.gz: e64616624354c33d07c9bfe8ffb6c4494008d5dfbd3ce10c8f994015cf483fad
5
5
  SHA512:
6
- metadata.gz: 552bd6911e893085333993d7b55abacc195ca9e279e2c081b357184a654ec8b748aac7186b4222aeca6363f315b7d43cfb7060c3b6e44b08590f2680211730a7
7
- data.tar.gz: 43afeefdfce3d6a3603160cf6b3cfd8544c8fe3afd7f649f3a57d09a3aef904d848b04166858b5f7ffe03cfcf14da4cbac78bc51045060093f884981efc19654
6
+ metadata.gz: 7d5df6061ebbe9f818cac377456caf130bedb8c9864d3e984c8d32c1339aef9267006d545fc276e624559f489fb36be2c69118d4730a3c384ec9babe915d33b1
7
+ data.tar.gz: 2df311c7ae9c712e71f4c8f950ef3bc085888d9ea74d71b2acc989e324f9c6a467e506c267ff78383f8885d97ec01773e78b7722870062ef8ed33c253c1953d0
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ ## [1.6.0] - 2024-12-24
2
+
3
+ - Adds Zip.find_by(zip:)
4
+
1
5
  ## [1.5.0] - 2024-12-20
2
6
 
3
7
  - Allow Case to be created without client_id
@@ -48,7 +48,14 @@ module Vng
48
48
  {}
49
49
  end
50
50
  when '/api/v1/resources/zips/'
51
- { "Zips"=>[{ "zip"=>"21765", "zoneName"=>"Brentwood", "state"=>"MD" }] }
51
+ if @body[:method] == '1'
52
+ # TODO: The response already includes the ServiceTypes so there
53
+ # is no need to ask for those in a separate API request:
54
+ { "Zip"=>{"zipCodeID"=>"1", "zipCode"=>"21765", "zoneName"=>"Brentwood", "defaultCity"=>"Los Angeles", "provinceAbbr"=>"CA", "franchiseID"=>"105"},
55
+ "ServiceTypes"=>[{"serviceTypeID"=>14, "serviceType"=>"Pet Grooming", "duration" => 45}]}
56
+ else
57
+ { "Zips"=>[{ "zip"=>"21765", "zoneName"=>"Brentwood", "state"=>"MD" }] }
58
+ end
52
59
  when '/api/v1/resources/franchises/'
53
60
  if @body.key?(:objectID)
54
61
  { "Franchise"=>{ "objectID"=>"2201007" }, "Fields"=>[
@@ -127,7 +134,7 @@ module Vng
127
134
  {}
128
135
  end
129
136
  when '/api/v1/data/priceLists/'
130
- if @body[:assetID].eql? 2201008
137
+ if @body[:assetID].eql? "2201008"
131
138
  { "PriceItems"=>[
132
139
  { "priceItemID"=>275111, "priceItem"=>"Bulldog American - 15 Step SPA Grooming Service", "value"=>85.0, "taxID"=>256, "durationPerUnit"=>45.0, "serviceBadge"=>"Required", "serviceCategory"=>"15 Step Spa", "isOnline"=>true, "isActive"=>true },
133
140
  { "priceItemID"=>275112, "priceItem"=>"Bulldog American - 15 Step SPA Super Grooming Service", "value"=>105.0, "taxID"=>256, "durationPerUnit"=>75.0, "serviceBadge"=>nil, "serviceCategory"=>"15 Step Spa", "isOnline"=>true, "isActive"=>true },
@@ -144,7 +151,7 @@ module Vng
144
151
  { "priceItemID"=>275307, "priceItem"=>"Aches & Pains Package", "value"=>0.0, "taxID"=>256, "durationPerUnit"=>60.0, "serviceBadge"=>"Offered", "serviceCategory"=>"Add Ons", "isOnline"=>true, "isActive"=>true },
145
152
  { "priceItemID"=>275308, "priceItem"=>"Old Add On", "value"=>0.0, "taxID"=>256, "durationPerUnit"=>60.0, "serviceBadge"=>"Not Offered", "serviceCategory"=>"Add Ons", "isOnline"=>true, "isActive"=>true },
146
153
  ] }
147
- elsif @body[:assetID].eql? 2201009
154
+ elsif @body[:assetID].eql? "2201009"
148
155
  { "PriceItems"=>[
149
156
  { "priceItemID"=>276111, "priceItem"=>"Cat Short Hair - 15 Step SPA Grooming Service", "value"=>65.0, "taxID"=>256, "durationPerUnit"=>60.0, "serviceBadge"=>"Recommended", "serviceCategory"=>"15 Step Spa", "isOnline"=>true, "isActive"=>true },
150
157
 
data/lib/vng/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Vng
2
- VERSION = '1.5.0'
2
+ VERSION = '1.6.0'
3
3
  end
data/lib/vng/zip.rb CHANGED
@@ -1,16 +1,19 @@
1
1
  require 'vng/resource'
2
+ require 'vng/service_type'
2
3
 
3
4
  module Vng
4
5
  # Provides methods to interact with Vonigo ZIP codes.
5
6
  class Zip < Resource
6
7
  PATH = '/api/v1/resources/zips/'
7
8
 
8
- attr_reader :zip, :state, :zone_name
9
+ attr_reader :zip, :state, :zone_name, :city, :service_types
9
10
 
10
- def initialize(zip:, state:, zone_name:)
11
+ def initialize(zip:, state:, zone_name:, city: nil, service_types: [])
11
12
  @zip = zip
12
13
  @state = state
13
14
  @zone_name = zone_name
15
+ @city = city
16
+ @service_types = service_types
14
17
  end
15
18
 
16
19
  def self.all
@@ -26,5 +29,26 @@ module Vng
26
29
  new zip: zip, state: state, zone_name: zone_name
27
30
  end
28
31
  end
32
+
33
+ def self.find_by(zip:)
34
+ body = {
35
+ method: '1',
36
+ zip: zip,
37
+ }
38
+
39
+ data = request path: PATH, body: body
40
+ zip_data = data['Zip']
41
+
42
+ unless zip_data['zipCodeID'] == '0'
43
+ service_types = data['ServiceTypes'].map do |body|
44
+ id = body['serviceTypeID']
45
+ type = body['serviceType']
46
+ duration = body['duration']
47
+ ServiceType.new id: id, type: type, duration: duration
48
+ end
49
+
50
+ new zip: zip_data['zipCode'], state: zip_data['provinceAbbr'], zone_name: zip_data['zoneName'], city: zip_data['defaultCity'], service_types: service_types
51
+ end
52
+ end
29
53
  end
30
54
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vng
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.0
4
+ version: 1.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - claudiob
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-12-20 00:00:00.000000000 Z
11
+ date: 2024-12-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: simplecov