torg_api 0.0.5 → 0.0.6
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/.rubocop.yml +11 -2
- data/lib/torg_api/api/bidder.rb +27 -0
- data/lib/torg_api/api/offer.rb +24 -0
- data/lib/torg_api/api/tender_file.rb +38 -0
- data/lib/torg_api/base.rb +2 -0
- data/lib/torg_api/constants.rb +9 -0
- data/lib/torg_api/models/bidder.rb +8 -0
- data/lib/torg_api/models/bidder_file.rb +6 -0
- data/lib/torg_api/models/offer.rb +6 -0
- data/lib/torg_api/models/offer_specification.rb +3 -0
- data/lib/torg_api/models/tender_file.rb +17 -0
- data/lib/torg_api/models/tender_file_uploader.rb +58 -0
- data/lib/torg_api/version.rb +1 -1
- data/lib/torg_api.rb +2 -0
- data/torg_api.gemspec +1 -0
- metadata +20 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: efd006e0cb72f83fb2a1ccf7df3ab6bc00a78e8d
|
4
|
+
data.tar.gz: 92a1bc93d2874484f3c02c1893f79cdf42475ea9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8dc6704a2be054bdba3ec4b530b849589b095912e6fa5f653248a4f008362ca7c559fe9a704e311a15cba0b050f9af652a9a4216c7a1b2a88f2ee2b33ef4117d
|
7
|
+
data.tar.gz: d8348e65eee37b357dadf8cdcbeaa24b8110a5b9df2237bf35fdd548cf2d4083e35500c6e9ce4e0aa3ef80ee5601c69cf6cdb8784ef09a6674a5685a20890809
|
data/.rubocop.yml
CHANGED
@@ -1,10 +1,19 @@
|
|
1
|
+
AllCops:
|
2
|
+
RunRailsCops: false
|
3
|
+
|
1
4
|
AsciiComments:
|
2
5
|
Enabled: false
|
3
6
|
|
4
|
-
|
7
|
+
StringLiterals:
|
8
|
+
Enabled: false
|
9
|
+
|
10
|
+
ClassLength:
|
11
|
+
Enabled: false
|
12
|
+
|
13
|
+
MethodLength:
|
5
14
|
Enabled: false
|
6
15
|
|
7
|
-
|
16
|
+
Documentation:
|
8
17
|
Enabled: false
|
9
18
|
|
10
19
|
LineLength:
|
data/lib/torg_api/api/bidder.rb
CHANGED
@@ -2,6 +2,13 @@ module TorgApi
|
|
2
2
|
module Api
|
3
3
|
# Участник закупки
|
4
4
|
class Bidder < TorgApi::Base
|
5
|
+
# @return [Integer] id
|
6
|
+
attr_accessor :id
|
7
|
+
# @return [Integer] ID участника
|
8
|
+
attr_accessor :contractor_id
|
9
|
+
# @return [Integer] ID закупки
|
10
|
+
attr_accessor :tender_id
|
11
|
+
|
5
12
|
class << self
|
6
13
|
# Создаёт участника в системе и возвращает его id
|
7
14
|
# @param contractor_id [Integer] id контрагента
|
@@ -28,6 +35,26 @@ module TorgApi
|
|
28
35
|
b.id
|
29
36
|
end
|
30
37
|
end
|
38
|
+
|
39
|
+
# Добавляет файл предложения участника к нему
|
40
|
+
# @param file [String] имя файла и путь к нему
|
41
|
+
# @param note [String] Комментарии
|
42
|
+
# @return Nothing
|
43
|
+
def add_file(file, note)
|
44
|
+
TorgApi::Models::BidderFile.transaction do
|
45
|
+
tender_file = TorgApi::Models::TenderFile.create(
|
46
|
+
area_id: TenderFileArea::BIDDER,
|
47
|
+
year: Date.current.year,
|
48
|
+
document: File.open(file),
|
49
|
+
user_id: EtpUsers::B2B_CENTER
|
50
|
+
)
|
51
|
+
TorgApi::Models::BidderFile.create!(
|
52
|
+
bidder_id: id,
|
53
|
+
tender_file_id: tender_file.id,
|
54
|
+
note: note
|
55
|
+
)
|
56
|
+
end
|
57
|
+
end
|
31
58
|
end
|
32
59
|
end
|
33
60
|
end
|
data/lib/torg_api/api/offer.rb
CHANGED
@@ -35,6 +35,30 @@ module TorgApi
|
|
35
35
|
o.id
|
36
36
|
end
|
37
37
|
|
38
|
+
def save(bidder_id, lot_id, hash)
|
39
|
+
offer = TorgApi::Models::Offer.for_bid_lot_num(bidder_id, lot_id, hash[:alternate_num]) ||
|
40
|
+
TorgApi::Models::Offer.new(bidder_id: bidder_id, lot_id: lot_id, num: hash[:alternate_num], version: 0)
|
41
|
+
TorgApi::Models::Offer.transaction do
|
42
|
+
offer.type_id = CoverLabels::REQUEST
|
43
|
+
offer.status_id = hash[:result] == 'reject' ? OfferStatuses::REJECT : OfferStatuses::NEW
|
44
|
+
offer.rank = hash[:rank]
|
45
|
+
offer.conditions = hash[:essential]
|
46
|
+
|
47
|
+
TorgApi::Models::Specification.where(lot_id: lot_id).each_with_index do |spec, index|
|
48
|
+
offer_spec = offer.offer_specifications.for_offer_spec(offer.id, spec.id) ||
|
49
|
+
offer.offer_specifications.build(specification_id: spec.id)
|
50
|
+
offer_spec.cost = index == 0 ? hash[:price_notax] : 0
|
51
|
+
offer_spec.cost_nds = index == 0 ? hash[:price] : 0
|
52
|
+
offer_spec.final_cost = index == 0 ? hash[:final_price_notax] : 0
|
53
|
+
offer_spec.final_cost_nds = index == 0 ? hash[:final_price] : 0
|
54
|
+
end
|
55
|
+
|
56
|
+
offer.save
|
57
|
+
end
|
58
|
+
|
59
|
+
offer.id
|
60
|
+
end
|
61
|
+
|
38
62
|
def extract_status(winner)
|
39
63
|
winner ? OfferStatuses::WIN : OfferStatuses::NEW
|
40
64
|
end
|
@@ -0,0 +1,38 @@
|
|
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, user_id)
|
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 = 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
|
data/lib/torg_api/base.rb
CHANGED
data/lib/torg_api/constants.rb
CHANGED
@@ -1,6 +1,12 @@
|
|
1
1
|
module TorgApi
|
2
2
|
module Models
|
3
|
+
# TORG Offer model
|
3
4
|
class Offer < ActiveRecord::Base
|
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
|
4
10
|
end
|
5
11
|
end
|
6
12
|
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module TorgApi
|
2
|
+
module Models
|
3
|
+
class TenderFile < ActiveRecord::Base
|
4
|
+
mount_uploader :document, TenderFileUploader
|
5
|
+
|
6
|
+
before_save :update_file_attributes
|
7
|
+
|
8
|
+
private
|
9
|
+
|
10
|
+
def update_file_attributes
|
11
|
+
return unless document.present? || document_changed?
|
12
|
+
self.content_type = document.file.content_type
|
13
|
+
self.file_size = document.file.size
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,58 @@
|
|
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
|
+
# Provide a default URL as a default if there hasn't been a file uploaded:
|
27
|
+
# def default_url
|
28
|
+
# # For Rails 3.1+ asset pipeline compatibility:
|
29
|
+
# # asset_path("fallback/" + [version_name, "default.png"].compact.join('_'))
|
30
|
+
#
|
31
|
+
# "/images/fallback/" + [version_name, "default.png"].compact.join('_')
|
32
|
+
# end
|
33
|
+
|
34
|
+
# Process files as they are uploaded:
|
35
|
+
# process :scale => [200, 300]
|
36
|
+
#
|
37
|
+
# def scale(width, height)
|
38
|
+
# # do something
|
39
|
+
# end
|
40
|
+
|
41
|
+
# Create different versions of your uploaded files:
|
42
|
+
# version :thumb do
|
43
|
+
# process :scale => [50, 50]
|
44
|
+
# end
|
45
|
+
|
46
|
+
# Add a white list of extensions which are allowed to be uploaded.
|
47
|
+
# For images you might use something like this:
|
48
|
+
# def extension_white_list
|
49
|
+
# %w(docx doc rtf xlsx xls pdf jpg jpeg tif tiff eml rar zip txt 7z)
|
50
|
+
# # if update this, then update app/assets/javascripts/tender_files.js.coffee
|
51
|
+
# end
|
52
|
+
|
53
|
+
# Override the filename of the uploaded files:
|
54
|
+
# Avoid using model.id or version_name here, see uploader/store.rb for details.
|
55
|
+
# def filename
|
56
|
+
# "something.jpg" if original_filename
|
57
|
+
# end
|
58
|
+
end
|
data/lib/torg_api/version.rb
CHANGED
data/lib/torg_api.rb
CHANGED
data/torg_api.gemspec
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
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.0.6
|
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-
|
11
|
+
date: 2015-09-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -52,6 +52,20 @@ dependencies:
|
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '4.2'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: carrierwave
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
55
69
|
description: API for Torg system
|
56
70
|
email:
|
57
71
|
- archakov@gmail.com
|
@@ -72,10 +86,12 @@ files:
|
|
72
86
|
- lib/torg_api/api/lot.rb
|
73
87
|
- lib/torg_api/api/offer.rb
|
74
88
|
- lib/torg_api/api/tender.rb
|
89
|
+
- lib/torg_api/api/tender_file.rb
|
75
90
|
- lib/torg_api/base.rb
|
76
91
|
- lib/torg_api/constants.rb
|
77
92
|
- lib/torg_api/models.rb
|
78
93
|
- lib/torg_api/models/bidder.rb
|
94
|
+
- lib/torg_api/models/bidder_file.rb
|
79
95
|
- lib/torg_api/models/contractor.rb
|
80
96
|
- lib/torg_api/models/cover.rb
|
81
97
|
- lib/torg_api/models/lot.rb
|
@@ -83,6 +99,8 @@ files:
|
|
83
99
|
- lib/torg_api/models/offer_specification.rb
|
84
100
|
- lib/torg_api/models/specification.rb
|
85
101
|
- lib/torg_api/models/tender.rb
|
102
|
+
- lib/torg_api/models/tender_file.rb
|
103
|
+
- lib/torg_api/models/tender_file_uploader.rb
|
86
104
|
- lib/torg_api/version.rb
|
87
105
|
- torg_api.gemspec
|
88
106
|
homepage: https://github.com/kodram/torg_api
|