torg_api 0.0.13 → 0.1.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 +4 -4
- data/README.md +13 -12
- data/lib/torg_api/api/bidder.rb +77 -33
- data/lib/torg_api/api/contractor.rb +53 -14
- data/lib/torg_api/api/lot.rb +9 -1
- data/lib/torg_api/api/tender.rb +42 -3
- data/lib/torg_api/base.rb +0 -5
- data/lib/torg_api/settings.rb +6 -0
- data/lib/torg_api/version.rb +1 -1
- data/lib/torg_api.rb +1 -9
- data/torg_api.gemspec +2 -3
- metadata +5 -33
- data/lib/torg_api/api/tender_file.rb +0 -38
- data/lib/torg_api/models/bidder.rb +0 -16
- data/lib/torg_api/models/bidder_file.rb +0 -11
- data/lib/torg_api/models/contractor.rb +0 -27
- data/lib/torg_api/models/cover.rb +0 -6
- data/lib/torg_api/models/dictionary.rb +0 -6
- data/lib/torg_api/models/lot.rb +0 -13
- data/lib/torg_api/models/offer.rb +0 -12
- data/lib/torg_api/models/offer_specification.rb +0 -9
- data/lib/torg_api/models/specification.rb +0 -6
- data/lib/torg_api/models/tender.rb +0 -38
- data/lib/torg_api/models/tender_file.rb +0 -18
- data/lib/torg_api/models/tender_file_uploader.rb +0 -66
- data/lib/torg_api/models/user.rb +0 -6
- data/lib/torg_api/models.rb +0 -1
- data/lib/torg_api/torg_database.rb +0 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b925da3f0f40233b8c98961e83ad8dd8ae2b5536
|
4
|
+
data.tar.gz: 0eca135c5ae8534992563720f26b1c97ffda8607
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e3b92f977978cae095037a3882a6a0fe22920b7a7b590c4d6040ddcf0af3667b11b6b233b76c8b623de4fa6bd11fe469ac5397d4b91b219ae40c6799b72c6994
|
7
|
+
data.tar.gz: 9a1b04fd80d0971d03d844dfd9c1127169d3536f41213d0305ac082231a5724bdf87335a004ced4a0fc213336f00e2d960052d961b26cc120cf2aeed0a1b4317
|
data/README.md
CHANGED
@@ -23,19 +23,18 @@ require 'torg_api'
|
|
23
23
|
require 'awesome_print'
|
24
24
|
require 'logger'
|
25
25
|
|
26
|
-
#
|
27
|
-
|
28
|
-
|
29
|
-
database: 'ksazd_backup',
|
30
|
-
username: 'user',
|
31
|
-
password: 'pass'
|
32
|
-
)
|
26
|
+
# Пердварительная настройка
|
27
|
+
# Параметры подключения к системе Tender Organizer
|
28
|
+
TorgApi::Settings.torg_url_configure(host: 'http://login:password@host:port')
|
33
29
|
|
34
|
-
#
|
35
|
-
TorgApi.
|
30
|
+
# ИД пользователя в системе Tender Organizer, от имени которого будет работать библиотека
|
31
|
+
TorgApi::Settings.service_user_configure(id: user_id)
|
32
|
+
|
33
|
+
|
34
|
+
# Пример использования
|
36
35
|
|
37
36
|
# Пример поиска по ИНН контрагентов
|
38
|
-
ids = TorgApi::Api::Contractor.find_by_inn('
|
37
|
+
ids = TorgApi::Api::Contractor.find_by_inn('2721124655')
|
39
38
|
ap ids
|
40
39
|
|
41
40
|
# Пример создания контрагента
|
@@ -68,8 +67,10 @@ firm_info = {
|
|
68
67
|
is_smb: false
|
69
68
|
}
|
70
69
|
|
71
|
-
|
72
|
-
|
70
|
+
b2b_hash = {:firm_id=>"277550", :date_lastedit=>nil, :org_name=>"Общество с ограниченной ответственностью \"АГЕНТСТВО ИНТЕЛЛЕКТУАЛЬНОЙ СОБСТВЕННОСТИ \"ИНСО - ЭНЕРГО\"", :org_name_short=>"ООО \"АИС \"ИНСО - ЭНЕРГО\"", :code_okpo=>"51257002", :bank_name=>nil, :bank_inn=>"7728194072", :ogrn=>"1037739581197", :ogrn_given=>nil, :ogrn_date_given=>nil, :bank_kpp=>"772401001", :bank_bik=>nil, :bank_r_account=>nil, :bank_c_account=>nil, :bank_comments=>nil, :jury_address=>"115201, Россия, г. Москва, Каширское ш., д. 22, корп. 3", :post_address=>"115201, Россия, г. Москва, Каширское ш., д. 22, корп. 3", :fact_address=>"115201, Россия, г. Москва, Каширское ш., д. 22, корп. 3", :site_url=>nil, :certification=>nil, :org_details=>nil, :bank_details=>nil, :country=>643, :is_smb=>false}
|
71
|
+
|
72
|
+
# c = TorgApi::Api::Contractor.create_from_b2b(b2b_hash)
|
73
|
+
ap с
|
73
74
|
```
|
74
75
|
|
75
76
|
## Documentation
|
data/lib/torg_api/api/bidder.rb
CHANGED
@@ -15,33 +15,56 @@ module TorgApi
|
|
15
15
|
# @param tender_id [Integer] id закупки
|
16
16
|
# @param date_offer [Time] Дата и время регистрации конверта участника
|
17
17
|
# @return [Bidder]
|
18
|
-
def create(contractor_id, tender_id, date_offer = nil)
|
19
|
-
b = nil
|
20
|
-
TorgApi::Models::Bidder.transaction do
|
21
|
-
b = TorgApi::Models::Bidder.create!(
|
22
|
-
tender_id: tender_id,
|
23
|
-
contractor_id: contractor_id
|
24
|
-
)
|
25
18
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
19
|
+
def create(contractor_id, tender_id, date_offer = nil)
|
20
|
+
responce_b = JSON.parse(
|
21
|
+
RestClient.post(
|
22
|
+
[Settings.torg_url[:host], "tenders", tender_id, "bidders"].join('/'),
|
23
|
+
bidder: {
|
24
|
+
tender_id: tender_id,
|
25
|
+
contractor_id: contractor_id,
|
26
|
+
covers_attributes: {
|
27
|
+
'0' => {
|
28
|
+
_destroy: false,
|
29
|
+
compound_register_time_attributes: {
|
30
|
+
date: date_offer && date_offer.strftime('%d.%m.%Y'),
|
31
|
+
time: date_offer && date_offer.strftime('%H:%M')
|
32
|
+
},
|
33
|
+
type_id: CoverLabels::REQUEST,
|
34
|
+
delegate: 'B2B-Center',
|
35
|
+
provision: 'Электронный конверт'
|
36
|
+
}
|
37
|
+
}
|
38
|
+
},
|
39
|
+
accept: :json,
|
40
|
+
content_type: :json,
|
41
|
+
format: :json
|
42
|
+
),
|
43
|
+
symbolize_names: true
|
44
|
+
)
|
34
45
|
|
35
|
-
b
|
46
|
+
b = new
|
47
|
+
b.tender_id = responce_b[:tender_id]
|
48
|
+
b.contractor_id = responce_b[:contractor_id]
|
49
|
+
b.id = responce_b[:id]
|
50
|
+
b
|
36
51
|
end
|
37
52
|
end
|
38
|
-
|
39
53
|
# Проверяет, есть ли файл с таким именем у данного участника
|
40
54
|
# @param file_name [String] Имя файла во внешней системе
|
41
55
|
# return [Boolean]
|
42
56
|
def file_exists?(file_name)
|
43
|
-
|
44
|
-
|
57
|
+
responce = JSON.parse(
|
58
|
+
RestClient.get(
|
59
|
+
[Settings.torg_url[:host], "tenders", tender_id, "bidders", id, "file_exists"].join('/'),
|
60
|
+
params: { file_name: file_name },
|
61
|
+
accept: :json,
|
62
|
+
content_type: :json,
|
63
|
+
format: :json
|
64
|
+
),
|
65
|
+
symbolize_names: true
|
66
|
+
)
|
67
|
+
responce[:exists]
|
45
68
|
end
|
46
69
|
|
47
70
|
# Добавляет файл предложения участника к нему
|
@@ -50,20 +73,41 @@ module TorgApi
|
|
50
73
|
# @param note [String] Комментарии
|
51
74
|
# @return Nothing
|
52
75
|
def add_file(file, name = nil, note = nil)
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
)
|
66
|
-
|
76
|
+
responce_f = JSON.parse(
|
77
|
+
RestClient.post(
|
78
|
+
[Settings.torg_url[:host], "tender_files"].join('/'),
|
79
|
+
tender_file: {
|
80
|
+
area_id: TenderFileArea::BIDDER,
|
81
|
+
year: Date.current.year,
|
82
|
+
document: File.open(file),
|
83
|
+
external_filename: name
|
84
|
+
},
|
85
|
+
accept: :json,
|
86
|
+
content_type: :json,
|
87
|
+
format: :json
|
88
|
+
),
|
89
|
+
symbolize_names: true
|
90
|
+
)
|
91
|
+
|
92
|
+
responce_bf = JSON.parse(
|
93
|
+
RestClient.patch(
|
94
|
+
[Settings.torg_url[:host], "tenders", tender_id, "bidders", id].join('/'),
|
95
|
+
bidder: {
|
96
|
+
bidder_files_attributes: {
|
97
|
+
'0' => {
|
98
|
+
note: note,
|
99
|
+
tender_file_id: responce_f[:id],
|
100
|
+
bidder_id: id
|
101
|
+
}
|
102
|
+
}
|
103
|
+
},
|
104
|
+
accept: :json,
|
105
|
+
content_type: :json,
|
106
|
+
format: :json
|
107
|
+
),
|
108
|
+
symbolize_names: true
|
109
|
+
)
|
110
|
+
responce_bf
|
67
111
|
end
|
68
112
|
end
|
69
113
|
end
|
@@ -46,18 +46,47 @@ module TorgApi
|
|
46
46
|
attr_accessor :jsc_form_id
|
47
47
|
# @return [Integer] Малое или среднее предпринимательство
|
48
48
|
attr_accessor :sme_type_id
|
49
|
+
# @return [String] ОКТМО
|
50
|
+
attr_accessor :oktmo
|
51
|
+
# @return [String] Дата регистрации юр. лица
|
52
|
+
attr_accessor :reg_date
|
49
53
|
|
50
54
|
class << self
|
51
55
|
# Поиск id контрагентов по ИНН
|
52
56
|
# @param inn [String] ИНН
|
53
57
|
# @return [Integer[]] Массив id найденных контрагентов отсортированных по статусу и дате изменения
|
54
58
|
def find_by_inn(inn)
|
55
|
-
|
56
|
-
.
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
59
|
+
responce = JSON.parse(
|
60
|
+
RestClient.get(
|
61
|
+
[Settings.torg_url[:host], "contractors", "find_by_inn"].join('/'),
|
62
|
+
params: { inn: inn },
|
63
|
+
accept: :json,
|
64
|
+
content_type: :json,
|
65
|
+
format: :json
|
66
|
+
),
|
67
|
+
symbolize_names: true
|
68
|
+
)
|
69
|
+
|
70
|
+
c = new
|
71
|
+
c.name = responce[:name]
|
72
|
+
c.fullname = responce[:fullname]
|
73
|
+
c.ownership = responce[:ownership]
|
74
|
+
c.inn = responce[:inn]
|
75
|
+
c.kpp = responce[:kpp]
|
76
|
+
c.ogrn = responce[:ogrn]
|
77
|
+
c.okpo = responce[:okpo]
|
78
|
+
c.status = responce[:status]
|
79
|
+
c.form = responce[:form]
|
80
|
+
c.legal_addr = responce[:legal_addr]
|
81
|
+
c.user_id = responce[:user_id]
|
82
|
+
c.is_resident = responce[:is_resident]
|
83
|
+
c.is_dzo = responce[:is_dzo]
|
84
|
+
c.is_sme = responce[:is_sme]
|
85
|
+
c.jsc_form_id = responce[:jsc_form_id]
|
86
|
+
c.sme_type_id = responce[:sme_type_id]
|
87
|
+
c.oktmo = responce[:oktmo]
|
88
|
+
c.reg_date = responce[:reg_date]
|
89
|
+
c
|
61
90
|
end
|
62
91
|
|
63
92
|
# Создаёт контрагента
|
@@ -66,14 +95,14 @@ module TorgApi
|
|
66
95
|
# @return Contractor
|
67
96
|
def create_from_b2b(hash)
|
68
97
|
c = Contractor.new
|
69
|
-
c.name = hash[:org_name_short]
|
98
|
+
c.name = hash[:org_name_short].gsub('"','')
|
70
99
|
c.fullname = hash[:org_name]
|
71
|
-
c.ownership = extract_ownership(hash[:org_name_short])
|
72
100
|
c.inn = hash[:bank_inn]
|
73
101
|
c.kpp = hash[:bank_kpp]
|
74
102
|
c.ogrn = hash[:ogrn]
|
75
103
|
c.okpo = hash[:code_okpo]
|
76
|
-
c.
|
104
|
+
c.ownership = extract_ownership(hash[:org_name_short])
|
105
|
+
c.status = 0
|
77
106
|
c.form = extract_form(hash[:bank_inn])
|
78
107
|
c.legal_addr = hash[:jury_address]
|
79
108
|
c.user_id = Settings.service_user[:id]
|
@@ -82,8 +111,19 @@ module TorgApi
|
|
82
111
|
c.is_sme = hash[:is_smb]
|
83
112
|
c.jsc_form_id = nil
|
84
113
|
c.sme_type_id = nil
|
114
|
+
c.oktmo = 0
|
85
115
|
|
86
|
-
|
116
|
+
responce = JSON.parse(
|
117
|
+
RestClient.post(
|
118
|
+
[Settings.torg_url[:host], "contractors"].join('/'),
|
119
|
+
contractor: c.to_h,
|
120
|
+
accept: :json,
|
121
|
+
content_type: :json,
|
122
|
+
format: :json
|
123
|
+
),
|
124
|
+
symbolize_names: true
|
125
|
+
)
|
126
|
+
c.id = responce[:id]
|
87
127
|
c
|
88
128
|
end
|
89
129
|
|
@@ -92,11 +132,10 @@ module TorgApi
|
|
92
132
|
end
|
93
133
|
|
94
134
|
def extract_form(bank_inn)
|
95
|
-
# enum form: { businessman: 0, company: 1, foreign: 2, person: 3 }
|
96
135
|
case bank_inn.size
|
97
|
-
when 12 then
|
98
|
-
when 10 then
|
99
|
-
else
|
136
|
+
when 12 then "businessman"
|
137
|
+
when 10 then "company"
|
138
|
+
else "foreign"
|
100
139
|
end
|
101
140
|
end
|
102
141
|
|
data/lib/torg_api/api/lot.rb
CHANGED
@@ -12,7 +12,15 @@ module TorgApi
|
|
12
12
|
# @param id [Integer] id закупки
|
13
13
|
# @return [Tender] возвращает объект закупки
|
14
14
|
def find(tender_id, num)
|
15
|
-
|
15
|
+
responce = JSON.parse(
|
16
|
+
RestClient.get(
|
17
|
+
[Settings.torg_url[:host], "tenders", tender_id].join('/'),
|
18
|
+
accept: :json,
|
19
|
+
content_type: :json,
|
20
|
+
format: :json
|
21
|
+
)
|
22
|
+
)
|
23
|
+
responce['lots'].select { |value| value['num'] == num }.first
|
16
24
|
end
|
17
25
|
end
|
18
26
|
end
|
data/lib/torg_api/api/tender.rb
CHANGED
@@ -134,12 +134,20 @@ module TorgApi
|
|
134
134
|
attr_accessor :offer_reception_place
|
135
135
|
# @return [Integer] Часовой пояс проведения закупки
|
136
136
|
attr_accessor :local_time_zone_id
|
137
|
-
|
138
137
|
# Поиск участника по его идентификатору в справочнике
|
139
138
|
# @param contractor_id [Integer] Идентификатор котрагента в справочнике
|
140
139
|
# return [Bidder] возвращает объект участника
|
141
140
|
def find_bidder(contractor_id)
|
142
|
-
|
141
|
+
responce = JSON.parse(
|
142
|
+
RestClient.get(
|
143
|
+
[Settings.torg_url[:host], "tenders", id, "bidders"].join('/'),
|
144
|
+
accept: :json,
|
145
|
+
content_type: :json,
|
146
|
+
format: :json
|
147
|
+
)
|
148
|
+
)
|
149
|
+
bidder = responce.select { |value| value['contractor_id'] == contractor_id }
|
150
|
+
bidder[0]
|
143
151
|
end
|
144
152
|
|
145
153
|
def find_lot(num)
|
@@ -151,7 +159,38 @@ module TorgApi
|
|
151
159
|
# @param id [Integer] id закупки
|
152
160
|
# @return [Tender] возвращает объект закупки
|
153
161
|
def find(id)
|
154
|
-
|
162
|
+
responce = JSON.parse(
|
163
|
+
RestClient.get(
|
164
|
+
[Settings.torg_url[:host], "tenders", id].join('/'),
|
165
|
+
accept: :json,
|
166
|
+
content_type: :json,
|
167
|
+
format: :json
|
168
|
+
),
|
169
|
+
symbolize_names: true
|
170
|
+
)
|
171
|
+
|
172
|
+
t = Tender.new
|
173
|
+
t.id = responce[:id]
|
174
|
+
t.num = responce[:num]
|
175
|
+
t.name = responce[:name]
|
176
|
+
t.tender_type_id = responce[:tender_type_id]
|
177
|
+
t.tender_type_explanations = responce[:tender_type_explanations]
|
178
|
+
t.etp_address_id = responce[:etp_address_id]
|
179
|
+
t.commission_id = responce[:commission_id]
|
180
|
+
t.department_id = responce[:department_id]
|
181
|
+
t.announce_date = responce[:announce_date]
|
182
|
+
t.announce_place = responce[:announce_place]
|
183
|
+
t.bid_date = responce[:bid_date]
|
184
|
+
t.bid_place = responce[:bid_place]
|
185
|
+
t.user_id = responce[:user_id]
|
186
|
+
t.oos_num = responce[:oos_num]
|
187
|
+
t.oos_id = responce[:oos_id]
|
188
|
+
t.etp_num = responce[:etp_num]
|
189
|
+
t.order_num = responce[:order_num]
|
190
|
+
t.order_date = responce[:order_date]
|
191
|
+
t.contact_id = responce[:contact_id]
|
192
|
+
t.confirm_place = responce[:confirm_place]
|
193
|
+
t
|
155
194
|
end
|
156
195
|
end
|
157
196
|
end
|
data/lib/torg_api/base.rb
CHANGED
data/lib/torg_api/settings.rb
CHANGED
@@ -1,14 +1,20 @@
|
|
1
1
|
module TorgApi
|
2
2
|
class Settings
|
3
3
|
@service_user = {}
|
4
|
+
@torg_url = {}
|
4
5
|
|
5
6
|
# Configure through hash
|
6
7
|
def self.service_user_configure(opts = {})
|
7
8
|
opts.each { |k, v| @service_user[k.to_sym] = v }
|
8
9
|
end
|
9
10
|
|
11
|
+
def self.torg_url_configure(opts = {})
|
12
|
+
opts.each { |k,v| @torg_url[k.to_sym] = v }
|
13
|
+
end
|
14
|
+
|
10
15
|
class << self
|
11
16
|
attr_reader :service_user
|
17
|
+
attr_reader :torg_url
|
12
18
|
end
|
13
19
|
end
|
14
20
|
end
|
data/lib/torg_api/version.rb
CHANGED
data/lib/torg_api.rb
CHANGED
@@ -1,14 +1,6 @@
|
|
1
|
+
require 'rest-client'
|
1
2
|
require 'torg_api/settings'
|
2
|
-
require 'active_record'
|
3
3
|
require 'torg_api/version'
|
4
4
|
require 'torg_api/constants'
|
5
5
|
require 'torg_api/base'
|
6
6
|
require 'torg_api/api'
|
7
|
-
|
8
|
-
CarrierWave::SanitizedFile.sanitize_regexp = /[^[:word:]\.\-\+]/
|
9
|
-
|
10
|
-
module TorgApi
|
11
|
-
def self.logger=(logger)
|
12
|
-
ActiveRecord::Base.logger = logger
|
13
|
-
end
|
14
|
-
end
|
data/torg_api.gemspec
CHANGED
@@ -6,7 +6,7 @@ require 'torg_api/version'
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
7
|
spec.name = 'torg_api'
|
8
8
|
spec.version = TorgApi::VERSION
|
9
|
-
spec.authors = ['Archakov Aleksandr']
|
9
|
+
spec.authors = ['Archakov Aleksandr', 'Andrew Ageev', 'Dmitrii Bodakov']
|
10
10
|
spec.email = ['archakov@gmail.com']
|
11
11
|
spec.description = %q{API for Torg system}
|
12
12
|
spec.summary = %q{Torg API}
|
@@ -21,6 +21,5 @@ Gem::Specification.new do |spec|
|
|
21
21
|
spec.add_development_dependency 'bundler', '~> 1.3'
|
22
22
|
spec.add_development_dependency 'rake', '~> 10.4'
|
23
23
|
|
24
|
-
spec.add_dependency '
|
25
|
-
spec.add_dependency 'carrierwave'
|
24
|
+
spec.add_dependency 'rest-client'
|
26
25
|
end
|
metadata
CHANGED
@@ -1,14 +1,16 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: torg_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Archakov Aleksandr
|
8
|
+
- Andrew Ageev
|
9
|
+
- Dmitrii Bodakov
|
8
10
|
autorequire:
|
9
11
|
bindir: bin
|
10
12
|
cert_chain: []
|
11
|
-
date:
|
13
|
+
date: 2016-06-03 00:00:00.000000000 Z
|
12
14
|
dependencies:
|
13
15
|
- !ruby/object:Gem::Dependency
|
14
16
|
name: bundler
|
@@ -39,21 +41,7 @@ dependencies:
|
|
39
41
|
- !ruby/object:Gem::Version
|
40
42
|
version: '10.4'
|
41
43
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - "~>"
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '4.2'
|
48
|
-
type: :runtime
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - "~>"
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '4.2'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: carrierwave
|
44
|
+
name: rest-client
|
57
45
|
requirement: !ruby/object:Gem::Requirement
|
58
46
|
requirements:
|
59
47
|
- - ">="
|
@@ -86,25 +74,9 @@ files:
|
|
86
74
|
- lib/torg_api/api/lot.rb
|
87
75
|
- lib/torg_api/api/offer.rb
|
88
76
|
- lib/torg_api/api/tender.rb
|
89
|
-
- lib/torg_api/api/tender_file.rb
|
90
77
|
- lib/torg_api/base.rb
|
91
78
|
- lib/torg_api/constants.rb
|
92
|
-
- lib/torg_api/models.rb
|
93
|
-
- lib/torg_api/models/bidder.rb
|
94
|
-
- lib/torg_api/models/bidder_file.rb
|
95
|
-
- lib/torg_api/models/contractor.rb
|
96
|
-
- lib/torg_api/models/cover.rb
|
97
|
-
- lib/torg_api/models/dictionary.rb
|
98
|
-
- lib/torg_api/models/lot.rb
|
99
|
-
- lib/torg_api/models/offer.rb
|
100
|
-
- lib/torg_api/models/offer_specification.rb
|
101
|
-
- lib/torg_api/models/specification.rb
|
102
|
-
- lib/torg_api/models/tender.rb
|
103
|
-
- lib/torg_api/models/tender_file.rb
|
104
|
-
- lib/torg_api/models/tender_file_uploader.rb
|
105
|
-
- lib/torg_api/models/user.rb
|
106
79
|
- lib/torg_api/settings.rb
|
107
|
-
- lib/torg_api/torg_database.rb
|
108
80
|
- lib/torg_api/version.rb
|
109
81
|
- torg_api.gemspec
|
110
82
|
homepage: https://github.com/kodram/torg_api
|
@@ -1,38 +0,0 @@
|
|
1
|
-
module TorgApi
|
2
|
-
module Api
|
3
|
-
# Файл
|
4
|
-
class TenderFile < TorgApi::Base
|
5
|
-
# @return [Integer] id
|
6
|
-
attr_accessor :id
|
7
|
-
# @return [Integer] Область использования
|
8
|
-
attr_accessor :area_id
|
9
|
-
# @return [Integer] Год
|
10
|
-
attr_accessor :year
|
11
|
-
# @return [String] Имя файла документа
|
12
|
-
attr_accessor :document
|
13
|
-
# @return [Integer] Владелец
|
14
|
-
attr_accessor :user_id
|
15
|
-
# @return [String] Имя файла во внешних системах
|
16
|
-
attr_accessor :external_filename
|
17
|
-
# @return [String] Content Type
|
18
|
-
attr_accessor :content_type
|
19
|
-
# @return [Integer] FileSize
|
20
|
-
attr_accessor :file_size
|
21
|
-
class << self
|
22
|
-
def create_from_b2b(hash, area, file_size)
|
23
|
-
mime_types = MIME::Types.type_for(hash[:name])
|
24
|
-
file = TenderFile.new
|
25
|
-
file.area_id = area
|
26
|
-
file.year = Date.current.year
|
27
|
-
file.document = hash[:title]
|
28
|
-
file.user_id = Settings.service_user[:id]
|
29
|
-
file.external_filename = hash[:name]
|
30
|
-
file.content_type = mime_types.empty? ? 'text/plain' : mime_types.first.content_type
|
31
|
-
file.file_size = file_size
|
32
|
-
|
33
|
-
TorgApi::Models::TenderFile.create!(file.to_h).id
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
@@ -1,16 +0,0 @@
|
|
1
|
-
module TorgApi
|
2
|
-
module Models
|
3
|
-
class Bidder < TorgDatabase
|
4
|
-
has_many :bidder_files
|
5
|
-
|
6
|
-
def to_api
|
7
|
-
bidder = TorgApi::Api::Bidder.new
|
8
|
-
bidder.id = id
|
9
|
-
bidder.contractor_id = contractor_id
|
10
|
-
bidder.tender_id = tender_id
|
11
|
-
|
12
|
-
bidder
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
@@ -1,27 +0,0 @@
|
|
1
|
-
module TorgApi
|
2
|
-
module Models
|
3
|
-
class Contractor < TorgDatabase
|
4
|
-
def to_api
|
5
|
-
c = TorgApi::Api::Contractor.new
|
6
|
-
c.id = id
|
7
|
-
c.name = name
|
8
|
-
c.fullname = fullname
|
9
|
-
c.ownership = ownership
|
10
|
-
c.inn = inn
|
11
|
-
c.kpp = kpp
|
12
|
-
c.ogrn = ogrn
|
13
|
-
c.okpo = okpo
|
14
|
-
c.status = status
|
15
|
-
c.form = form
|
16
|
-
c.legal_addr = legal_addr
|
17
|
-
c.user_id = user_id
|
18
|
-
c.is_resident = is_resident
|
19
|
-
c.is_dzo = is_dzo
|
20
|
-
c.is_sme = is_sme
|
21
|
-
c.jsc_form_id = jsc_form_id
|
22
|
-
c.sme_type_id = sme_type_id
|
23
|
-
c
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
data/lib/torg_api/models/lot.rb
DELETED
@@ -1,12 +0,0 @@
|
|
1
|
-
module TorgApi
|
2
|
-
module Models
|
3
|
-
# TORG Offer model
|
4
|
-
class Offer < TorgDatabase
|
5
|
-
has_many :offer_specifications
|
6
|
-
|
7
|
-
def self.for_bid_lot_num(bidder_id, lot_id, num)
|
8
|
-
where(bidder_id: bidder_id).where(lot_id: lot_id).where(num: num).where(version: 0).take
|
9
|
-
end
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|
@@ -1,38 +0,0 @@
|
|
1
|
-
module TorgApi
|
2
|
-
module Models
|
3
|
-
class Tender < TorgDatabase
|
4
|
-
belongs_to :tender_type, class_name: 'Dictionary'
|
5
|
-
belongs_to :user
|
6
|
-
|
7
|
-
delegate :name, to: :tender_type, prefix: true
|
8
|
-
delegate :email, to: :user, prefix: true
|
9
|
-
|
10
|
-
def to_api
|
11
|
-
t = TorgApi::Api::Tender.new
|
12
|
-
t.id = id
|
13
|
-
t.num = num
|
14
|
-
t.name = name
|
15
|
-
t.tender_type_id = tender_type_id
|
16
|
-
t.tender_type_name = tender_type_name
|
17
|
-
t.tender_type_explanations = tender_type_explanations
|
18
|
-
t.etp_address_id = etp_address_id
|
19
|
-
t.commission_id = commission_id
|
20
|
-
t.department_id = department_id
|
21
|
-
t.announce_date = announce_date
|
22
|
-
t.announce_place = announce_place
|
23
|
-
t.bid_date = bid_date
|
24
|
-
t.bid_place = bid_place
|
25
|
-
t.user_id = user_id
|
26
|
-
t.user_email = user_email
|
27
|
-
t.oos_num = oos_num
|
28
|
-
t.oos_id = oos_id
|
29
|
-
t.etp_num = etp_num
|
30
|
-
t.order_num = order_num
|
31
|
-
t.order_date = order_date
|
32
|
-
t.contact_id = contact_id
|
33
|
-
t.confirm_place = confirm_place
|
34
|
-
t
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
@@ -1,18 +0,0 @@
|
|
1
|
-
require 'torg_api/models/tender_file_uploader'
|
2
|
-
module TorgApi
|
3
|
-
module Models
|
4
|
-
class TenderFile < TorgDatabase
|
5
|
-
mount_uploader :document, TenderFileUploader
|
6
|
-
|
7
|
-
before_save :update_file_attributes
|
8
|
-
|
9
|
-
private
|
10
|
-
|
11
|
-
def update_file_attributes
|
12
|
-
return unless document.present? || document_changed?
|
13
|
-
self.content_type = document.file.content_type
|
14
|
-
self.file_size = document.file.size
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
@@ -1,66 +0,0 @@
|
|
1
|
-
require 'carrierwave/processing/mime_types'
|
2
|
-
|
3
|
-
class TenderFileUploader < CarrierWave::Uploader::Base
|
4
|
-
include CarrierWave::MimeTypes
|
5
|
-
|
6
|
-
process :set_content_type
|
7
|
-
|
8
|
-
# Include RMagick or MiniMagick support:
|
9
|
-
# include CarrierWave::RMagick
|
10
|
-
# include CarrierWave::MiniMagick
|
11
|
-
|
12
|
-
# Include the Sprockets helpers for Rails 3.1+ asset pipeline compatibility:
|
13
|
-
# include Sprockets::Helpers::RailsHelper
|
14
|
-
# include Sprockets::Helpers::IsolatedHelper
|
15
|
-
|
16
|
-
# Choose what kind of storage to use for this uploader:
|
17
|
-
storage :file
|
18
|
-
# storage :fog
|
19
|
-
|
20
|
-
# Override the directory where uploaded files will be stored.
|
21
|
-
# This is a sensible default for uploaders that are meant to be mounted:
|
22
|
-
def store_dir
|
23
|
-
"uploads/#{model.year}/#{model.area_id}/#{model.id}"
|
24
|
-
end
|
25
|
-
|
26
|
-
def move_to_store
|
27
|
-
true
|
28
|
-
end
|
29
|
-
|
30
|
-
def move_to_cache
|
31
|
-
true
|
32
|
-
end
|
33
|
-
|
34
|
-
# Provide a default URL as a default if there hasn't been a file uploaded:
|
35
|
-
# def default_url
|
36
|
-
# # For Rails 3.1+ asset pipeline compatibility:
|
37
|
-
# # asset_path("fallback/" + [version_name, "default.png"].compact.join('_'))
|
38
|
-
#
|
39
|
-
# "/images/fallback/" + [version_name, "default.png"].compact.join('_')
|
40
|
-
# end
|
41
|
-
|
42
|
-
# Process files as they are uploaded:
|
43
|
-
# process :scale => [200, 300]
|
44
|
-
#
|
45
|
-
# def scale(width, height)
|
46
|
-
# # do something
|
47
|
-
# end
|
48
|
-
|
49
|
-
# Create different versions of your uploaded files:
|
50
|
-
# version :thumb do
|
51
|
-
# process :scale => [50, 50]
|
52
|
-
# end
|
53
|
-
|
54
|
-
# Add a white list of extensions which are allowed to be uploaded.
|
55
|
-
# For images you might use something like this:
|
56
|
-
# def extension_white_list
|
57
|
-
# %w(docx doc rtf xlsx xls pdf jpg jpeg tif tiff eml rar zip txt 7z)
|
58
|
-
# # if update this, then update app/assets/javascripts/tender_files.js.coffee
|
59
|
-
# end
|
60
|
-
|
61
|
-
# Override the filename of the uploaded files:
|
62
|
-
# Avoid using model.id or version_name here, see uploader/store.rb for details.
|
63
|
-
# def filename
|
64
|
-
# "something.jpg" if original_filename
|
65
|
-
# end
|
66
|
-
end
|
data/lib/torg_api/models/user.rb
DELETED
data/lib/torg_api/models.rb
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
Dir[File.dirname(__FILE__) + '/models/*.rb'].each { |file| require file }
|