b2b_center_api 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
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