b2b_center_api 0.0.4 → 0.0.5

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
  SHA1:
3
- metadata.gz: 11f2cf076796a5c6c44c9de35d6c0166d568591c
4
- data.tar.gz: b3ec78ed6e7e9557f9e882208315b0ef070c3e2b
3
+ metadata.gz: aa4e1d50072af46d48f5dc80d0a6cfc0f570df70
4
+ data.tar.gz: 3c5bf03d690060ae2ba911fd6886ab60625dce5a
5
5
  SHA512:
6
- metadata.gz: 1bd4a32f434df8cb120326d352a47a8761678f8229d53a12468e04fdfa8c5d461ebafa39b92830906798efaa19468150b69d2b402de0e5c5fb2f1e7764ff3f38
7
- data.tar.gz: 200e2a5e2e4a1c6a1ad800f4d26ff4af8172b0ab14e35af214e290c19ee1bb7041d90f9f75939d28808e162904a3eea9923e3acc1d9347f1876584a9a740aca0
6
+ metadata.gz: e0e8f60b2a2375de079ab747fb53cbff16b2f33572f049e9615b972cfb36dca9117cb2f06ee9d466fcc4f0445c535099417e2f1e03d0a7c160081f34afd5030b
7
+ data.tar.gz: fbecff3304cf23808bfe8686cd160c9ab157b2c3790432fb42bc491361e73d00d03de112025e7cca75ca3abf32c649d7c57007305be4d4ce562e0e607588f887
@@ -7,5 +7,23 @@ module B2bCenterApi
7
7
  @client = client
8
8
  @client_web = WebService::RemoteTender.new(client)
9
9
  end
10
+
11
+ # Получить список участников
12
+ # @param tender_id [Integer] Номер конкурса
13
+ # @return [WebService::Types::TenderParticipant[]]
14
+ def get_participants(tender_id)
15
+ response = @client_web.command :get_participants, tender_id: tender_id
16
+ WebService::Types::TenderParticipant.from_response(response, @client, tender_id)
17
+ end
18
+
19
+ # Получить конкурсную заявку участника
20
+ # @param tender_id [Integer] Номер конкурса
21
+ # @param firm_id [Integer] ID организации (участник торговой процедуры)
22
+ # @param offer_num [Integer] = 0 — основное предложение = целое_число — альтернативное предложение №
23
+ # @return [WebService::Types::TenderOffer]
24
+ def get_offer(tender_id, firm_id, offer_num)
25
+ response = @client_web.command :get_offer, tender_id: tender_id, firm_id: firm_id, offer_num: offer_num
26
+ WebService::Types::TenderOffer.from_response(response, @client, tender_id, firm_id, offer_num)
27
+ end
10
28
  end
11
29
  end
@@ -1,3 +1,3 @@
1
1
  module B2bCenterApi
2
- VERSION = '0.0.4'
2
+ VERSION = '0.0.5'
3
3
  end
@@ -0,0 +1,51 @@
1
+ require 'b2b_center_api/web_service/type_cast'
2
+ require 'b2b_center_api/remote_auction'
3
+ require 'b2b_center_api/remote_market'
4
+ require 'b2b_center_api/remote_tender'
5
+
6
+ module B2bCenterApi
7
+ module WebService
8
+ class BaseType
9
+ include B2bCenterApi::WebService::TypeCast
10
+
11
+ attr_writer :soap_client
12
+
13
+ NO_INSPECT_ATTRS = [:@soap_client]
14
+
15
+ def inspect
16
+ vars = instance_variables
17
+ NO_INSPECT_ATTRS.each { |a| vars.delete(a) }
18
+ vars = vars.map { |v| "#{v}=#{instance_variable_get(v).inspect}" }
19
+ vars = vars.join(', ')
20
+ "<#{self.class}: #{vars}>"
21
+ end
22
+
23
+ def to_h
24
+ hash = {}
25
+ vars = instance_variables
26
+ NO_INSPECT_ATTRS.each { |a| vars.delete(a) }
27
+
28
+ vars.each { |var| hash[var.to_s.delete('@').to_sym] = instance_variable_get(var) }
29
+ hash
30
+ end
31
+
32
+ private
33
+
34
+ def remote_auction
35
+ B2bCenterApi::RemoteAuction.new(@soap_client)
36
+ end
37
+
38
+ def remote_market
39
+ B2bCenterApi::RemoteMarket.new(@soap_client)
40
+ end
41
+
42
+ def remote_tender
43
+ B2bCenterApi::RemoteTender.new(@soap_client)
44
+ end
45
+
46
+ def self.to_array(obj)
47
+ obj.is_a?(Hash) ? [obj] : obj
48
+ end
49
+ end
50
+ end
51
+ end
@@ -6,8 +6,8 @@ module B2bCenterApi
6
6
  def initialize(response)
7
7
  @body = response.body
8
8
  @ret = @body.values[0][:return]
9
- @status = @ret[:status]
10
- @result = @ret.values[1]
9
+ @status = @ret.delete(:status)
10
+ @result = @ret
11
11
  end
12
12
  end
13
13
  end
@@ -1,13 +1,11 @@
1
- require 'b2b_center_api/web_service/types/base'
2
-
3
1
  module B2bCenterApi
4
2
  module WebService
5
3
  module Types
6
4
  # Массив ID или других строк
7
- class ArrayOfIds < Base
5
+ class ArrayOfIds < WebService::BaseType
8
6
  # @return [String[]]
9
7
  def self.from_part_response(response)
10
- return if response.nil?
8
+ return [] if response.nil?
11
9
  to_array(response).map { |n| convert(n[:string], :string) }
12
10
  end
13
11
  end
@@ -1,10 +1,8 @@
1
- require 'b2b_center_api/web_service/types/base'
2
-
3
1
  module B2bCenterApi
4
2
  module WebService
5
3
  module Types
6
4
  # Предложение
7
- class AuctionOffer < Base
5
+ class AuctionOffer < WebService::BaseType
8
6
  # @return [Integer] Номер аукциона/объявления
9
7
  attr_accessor :auction_id
10
8
  # @return [Integer] ID организации (участник торговой процедуры)
@@ -23,13 +21,13 @@ module B2bCenterApi
23
21
  attr_accessor :bets
24
22
  # Файлы предложения. Поле содержит список записей типа file, в случае если у текущего
25
23
  # пользователя нет доступа к файлу, то поле file.name — не заполняется.
26
- # @return [B2bCenterApi::WebService::Types::File[]]
24
+ # @return [B2bCenterApi::WebService::Types::B2bFile[]]
27
25
  attr_accessor :files
28
26
 
29
27
  # @return [AuctionOffer]
30
28
  def self.from_response(response, client, auction_id, firm_id, offer_num)
31
- return if response.result.nil?
32
- r = response.result
29
+ r = response.result[:auction_offer]
30
+ return if r.nil?
33
31
  t = AuctionOffer.new
34
32
  t.soap_client = client
35
33
  t.auction_id = auction_id
@@ -1,10 +1,8 @@
1
- require 'b2b_center_api/web_service/types/base'
2
-
3
1
  module B2bCenterApi
4
2
  module WebService
5
3
  module Types
6
4
  # Участник аукциона
7
- class AuctionParticipant < Base
5
+ class AuctionParticipant < WebService::BaseType
8
6
  # @return [Integer] Номер аукциона/объявления
9
7
  attr_accessor :auction_id
10
8
  # @return [String] ID организации участника, если имена участников доступны,
@@ -18,8 +16,8 @@ module B2bCenterApi
18
16
 
19
17
  # @return [Array] Массив {AuctionParticipant}
20
18
  def self.from_response(response, client, auction_id)
21
- return if response.result.nil?
22
- r = response.result
19
+ r = response.result[:participants]
20
+ return if r.nil?
23
21
  mas = to_array(r[:participant]).map do |p|
24
22
  ap = AuctionParticipant.new
25
23
  ap.soap_client = client
@@ -1,10 +1,8 @@
1
- require 'b2b_center_api/web_service/types/base'
2
-
3
1
  module B2bCenterApi
4
2
  module WebService
5
3
  module Types
6
4
  # Файл
7
- class B2bFile < Base
5
+ class B2bFile < WebService::BaseType
8
6
  # @return [String] Наименование файла. Формат значения VARCHAR(255)
9
7
  attr_accessor :title
10
8
  # @return [String] Описание файла
@@ -1,10 +1,8 @@
1
- require 'b2b_center_api/web_service/types/base'
2
-
3
1
  module B2bCenterApi
4
2
  module WebService
5
3
  module Types
6
4
  # Информация об организации
7
- class FirmInfo < Base
5
+ class FirmInfo < WebService::BaseType
8
6
  # @return [Integer] ID организации
9
7
  attr_accessor :firm_id
10
8
  # @return [Time] Дата последнего изменения
@@ -56,8 +54,8 @@ module B2bCenterApi
56
54
 
57
55
  # @return [FirmInfo]
58
56
  def self.from_response(response, client, firm_id)
59
- return if response.result.nil?
60
- r = response.result
57
+ r = response.result[:firm_info]
58
+ return if r.nil?
61
59
  fi = FirmInfo.new
62
60
  fi.soap_client = client
63
61
  fi.firm_id = firm_id
@@ -0,0 +1,31 @@
1
+ module B2bCenterApi
2
+ module WebService
3
+ module Types
4
+ # Предложение
5
+ class TenderOffer < WebService::BaseType
6
+ # @return [Integer] Номер аукциона/объявления
7
+ attr_accessor :tender_id
8
+ # @return [B2bCenterApi::WebService::Types::B2bFile[]] Список загруженных файлов
9
+ attr_accessor :files
10
+ # @return[Integer[]] Список лотов, для которых составлена конкурсная заявка
11
+ attr_accessor :lots
12
+ # @return[String] Файл, загруженный для переторжки
13
+ attr_accessor :haggling_file_name
14
+
15
+ # @return [TenderOffer]
16
+ def self.from_response(response, client, tender_id, firm_id, offer_num)
17
+ r = response.result
18
+ return if r.nil?
19
+
20
+ t = TenderOffer.new
21
+ t.soap_client = client
22
+ t.tender_id = tender_id
23
+ t.files = B2bFile.from_part_response(r[:offer])
24
+ t.lots = r[:lots].map(&:to_i) unless r[:lots].nil?
25
+ t.haggling_file_name = convert(r[:haggling_file_name], :string)
26
+ t
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,69 @@
1
+ module B2bCenterApi
2
+ module WebService
3
+ module Types
4
+ # Участник конкурса
5
+ class TenderParticipant < WebService::BaseType
6
+ # @return [Integer] Номер конкурса
7
+ attr_accessor :tender_id
8
+ # @return [String] ID организации участника, если имена участников доступны,
9
+ # либо строка вида "Participant N", где N — номер участника в списке участников, в противном случае.
10
+ attr_accessor :firm_id
11
+ # @return [Integer] Статус участника:
12
+ # = 0 — отказался от участия,
13
+ # = 1 — участвует в конкурсе
14
+ attr_accessor :status
15
+ # @return [Time] С этой даты организация участвует в конкурсе. Формат значения dd.mm.YYYY HH:ii:ss
16
+ attr_accessor :date_sent
17
+ # @return [Time] Дата отправки предквалификационной заявки. Формат значения dd.mm.YYYY HH:ii:ss
18
+ attr_accessor :date_qoffer
19
+ # @return [Time] Дата отправки конкурсной заявки. Формат значения dd.mm.YYYY HH:ii:ss
20
+ attr_accessor :date_offer
21
+ # @return [Integer] Прошла ли организация предквалификационный отбор:
22
+ # 0 — нет,
23
+ # 1 — да
24
+ attr_accessor :qualified
25
+ # @return [Time] Дата, когда организация прошла предквалификационный отбор. Формат значения dd.mm.YYYY HH:ii:ss
26
+ attr_accessor :date_qualified
27
+ # @return [Integer[]] Список отправленных заявок участником.
28
+ # Возможные значения:
29
+ # -1 — предквалификационная заявка
30
+ # 0 — конкурсная заявка
31
+ # целое_число — альтернативное предложение №
32
+ attr_accessor :offers_nums
33
+
34
+ # @return [Array] Массив {TenderParticipant}
35
+ def self.from_response(response, client, tender_id)
36
+ r = response.result[:value]
37
+ return if r.nil?
38
+ mas = to_array(r[:participant]).map do |p|
39
+ ap = TenderParticipant.new
40
+ ap.soap_client = client
41
+ ap.tender_id = tender_id
42
+ ap.firm_id = convert(p[:firm_id], :string)
43
+ ap.status = convert(p[:status], :integer)
44
+ ap.date_sent = convert(p[:date_sent], :time)
45
+ ap.date_qoffer = convert(p[:date_qoffer], :time)
46
+ ap.date_offer = convert(p[:date_offer], :time)
47
+ ap.qualified = convert(p[:qualified], :integer)
48
+ ap.date_qualified = convert(p[:date_qualified], :time)
49
+ ap.offers_nums = ArrayOfIds.from_part_response(p[:offers_nums]).map(&:to_i)
50
+ ap
51
+ end
52
+
53
+ mas
54
+ end
55
+
56
+ # @return [FirmInfo] Информация об организации
57
+ def firm
58
+ return firm_id if firm_id.include? 'Participant'
59
+ remote_market.get_firm_info(firm_id)
60
+ end
61
+
62
+ # @return [AuctionOffer[]] Массив предложений
63
+ def offers
64
+ offers_nums.map { |offer_num| remote_tender.get_offer(tender_id, firm_id, offer_num) }
65
+ end
66
+ end
67
+ end
68
+ end
69
+ end
@@ -1,5 +1,3 @@
1
- require 'b2b_center_api/web_service/types/auction_participant'
2
- require 'b2b_center_api/web_service/types/firm_info'
3
- require 'b2b_center_api/web_service/types/auction_offer'
4
- require 'b2b_center_api/web_service/types/b2b_file'
5
- require 'b2b_center_api/web_service/types/array_of_ids'
1
+ require 'b2b_center_api/web_service/base_type'
2
+
3
+ Dir[File.dirname(__FILE__) + '/types/*.rb'].each { |file| require file }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: b2b_center_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Archakov Aleksandr
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-04-09 00:00:00.000000000 Z
11
+ date: 2015-06-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -88,6 +88,7 @@ files:
88
88
  - lib/b2b_center_api/settings.rb
89
89
  - lib/b2b_center_api/version.rb
90
90
  - lib/b2b_center_api/web_service.rb
91
+ - lib/b2b_center_api/web_service/base_type.rb
91
92
  - lib/b2b_center_api/web_service/remote.rb
92
93
  - lib/b2b_center_api/web_service/remote_auction.rb
93
94
  - lib/b2b_center_api/web_service/remote_market.rb
@@ -99,8 +100,9 @@ files:
99
100
  - lib/b2b_center_api/web_service/types/auction_offer.rb
100
101
  - lib/b2b_center_api/web_service/types/auction_participant.rb
101
102
  - lib/b2b_center_api/web_service/types/b2b_file.rb
102
- - lib/b2b_center_api/web_service/types/base.rb
103
103
  - lib/b2b_center_api/web_service/types/firm_info.rb
104
+ - lib/b2b_center_api/web_service/types/tender_offer.rb
105
+ - lib/b2b_center_api/web_service/types/tender_participant.rb
104
106
  - spec/b2b_center_api_spec.rb
105
107
  - spec/spec_helper.rb
106
108
  - wsdl/demo.remote.xml
@@ -131,3 +133,4 @@ summary: B2B Center API
131
133
  test_files:
132
134
  - spec/b2b_center_api_spec.rb
133
135
  - spec/spec_helper.rb
136
+ has_rdoc:
@@ -1,53 +0,0 @@
1
- require 'b2b_center_api/web_service/type_cast'
2
- require 'b2b_center_api/remote_auction'
3
- require 'b2b_center_api/remote_market'
4
- require 'b2b_center_api/remote_tender'
5
-
6
- module B2bCenterApi
7
- module WebService
8
- module Types
9
- class Base
10
- include B2bCenterApi::WebService::TypeCast
11
-
12
- attr_writer :soap_client
13
-
14
- NO_INSPECT_ATTRS = [:@soap_client]
15
-
16
- def inspect
17
- vars = instance_variables
18
- NO_INSPECT_ATTRS.each { |a| vars.delete(a) }
19
- vars = vars.map { |v| "#{v}=#{instance_variable_get(v).inspect}" }
20
- vars = vars.join(', ')
21
- "<#{self.class}: #{vars}>"
22
- end
23
-
24
- def to_h
25
- hash = {}
26
- vars = instance_variables
27
- NO_INSPECT_ATTRS.each { |a| vars.delete(a) }
28
-
29
- vars.each { |var| hash[var.to_s.delete('@').to_sym] = instance_variable_get(var) }
30
- hash
31
- end
32
-
33
- private
34
-
35
- def remote_auction
36
- B2bCenterApi::RemoteAuction.new(@soap_client)
37
- end
38
-
39
- def remote_market
40
- B2bCenterApi::RemoteMarket.new(@soap_client)
41
- end
42
-
43
- def remote_tender
44
- B2bCenterApi::RemoteTender.new(@soap_client)
45
- end
46
-
47
- def self.to_array(obj)
48
- obj.is_a?(Hash) ? [obj] : obj
49
- end
50
- end
51
- end
52
- end
53
- end