rus_bank_rails 0.5.2 → 0.6.0

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: 3f08e685564340087af7cef00b12e0d69b74429e
4
- data.tar.gz: 78093e5d0a25dad34182d6bbb045d96b4f1367f5
3
+ metadata.gz: e10b086891d2677a9f774153765e346ebe27e5a4
4
+ data.tar.gz: 7eb8b625990512223419b082cd8a19265e9b9c8e
5
5
  SHA512:
6
- metadata.gz: f58de26f50499bc26532304c775afca38eaf1798807aff32ca36842744e4cda4bbcfa554ee37e0b7b258fa80706baf1ea1f4b353ae9a1b9f33910efa1705f13c
7
- data.tar.gz: d71d001d172fae3b66a73117d8567469f9d6e4926d524152b2e11ab4c1f76964d29762d2fa8575686bdf0b535070270a826b015d3624e98c94b23d6559374a5e
6
+ metadata.gz: b1a01a165bbb74703bae4a993c74422071acd6f08e498091b9ea034407d461c7124923ff073ace7450166282d1fd2fdc0a0b049b48ec8ffd30d523ff718df5dd
7
+ data.tar.gz: 5a69498173c29ca765a23261e7dc6920834520023a0a3a8180afcac24213d77b272ddc8d9d5d0364715faf62a933a99e0bef07d7745e48517272ccc7d56e2f49
@@ -20,7 +20,7 @@ module RusBankRails
20
20
  # Метод возвращает внутренний номер банка по БИК
21
21
 
22
22
  def BicToIntCode(bic)
23
- resp = check_and_update(bic)
23
+ resp = check_and_update(bic: bic)
24
24
  resp ? resp.internal_code : nil
25
25
  end
26
26
 
@@ -28,7 +28,7 @@ module RusBankRails
28
28
  # Метод возвращает регистрационный номер банка по БИК
29
29
 
30
30
  def BicToRegNumber(bic)
31
- resp = check_and_update(bic)
31
+ resp = check_and_update(bic: bic)
32
32
  resp ? resp.reg_number : nil
33
33
  end
34
34
 
@@ -38,21 +38,16 @@ module RusBankRails
38
38
  def RegNumToIntCode(reg_number)
39
39
  bank = self.class.find_by_reg_number(reg_number.to_i)
40
40
  get_int_code_by_reg_number = lambda {
41
- #begin
42
41
  cbr = RusBank.new
43
42
  internal_code = cbr.RegNumToIntCode(reg_number)
44
43
  bic = cbr.CreditInfoByIntCode(internal_code)[:co][:bic]
45
- check_and_update(bic)
44
+ check_and_update(bic: bic)
46
45
  return internal_code.to_i
47
- #rescue SocketError, Savon::SOAPFault => e
48
- # handle_exception(e)
49
- # return nil
50
- #end
51
46
  }
52
47
  if bank.nil?
53
48
  get_int_code_by_reg_number.call
54
49
  else
55
- resp = check_and_update(bank.bic)
50
+ resp = check_and_update(bic: bank.bic)
56
51
  if resp.reg_number == reg_number.to_i # на случай если после обновления записи в базе reg_number
57
52
  resp.internal_code # поменялся и найденный банк из базы становится неактуальным
58
53
  else
@@ -67,23 +62,18 @@ module RusBankRails
67
62
  def IntCodeToRegNum(internal_code)
68
63
  bank = self.class.find_by_internal_code(internal_code.to_i)
69
64
  get_reg_number = lambda {
70
- #begin
71
65
  cbr = RusBank.new
72
66
  info = cbr.CreditInfoByIntCode(internal_code)
73
67
  if info.nil?
74
68
  return nil
75
69
  else
76
- return check_and_update(info[:co][:bic]).reg_number
70
+ return check_and_update(bic: info[:co][:bic]).reg_number
77
71
  end
78
- #rescue SocketError, Savon::SOAPFault => e
79
- # handle_exception(e)
80
- # return nil
81
- #end
82
72
  }
83
73
  if bank.nil?
84
74
  get_reg_number.call
85
75
  else
86
- resp = check_and_update(bank.bic)
76
+ resp = check_and_update(bic: bank.bic)
87
77
  if resp.internal_code == internal_code.to_i
88
78
  resp.reg_number
89
79
  else
@@ -93,11 +83,61 @@ module RusBankRails
93
83
  end
94
84
 
95
85
  ##
96
- # Поиск по названию банка. Прокси метод, при каждом вызове обращается к внешнему API.
86
+ # Поиск по названию банка. Прокси метод, при каждом вызове обращается к внешнему API. Возвращает массив записей из базы.
97
87
 
98
88
  def SearchByName(bank_name)
99
89
  cbr = RusBank.new
100
- cbr.SearchByName(bank_name)
90
+ result = cbr.SearchByName(bank_name)
91
+ if result
92
+ banks = []
93
+ result.each do |b|
94
+ bank = check_and_update(internal_code: b[:int_code])
95
+ banks << bank unless bank.nil?
96
+ end
97
+ banks
98
+ else
99
+ nil
100
+ end
101
+ end
102
+
103
+ ##
104
+ # Список банков по коду региона. Прокси метод, при каждом вызове обращается к внешнему API.
105
+
106
+ def SearchByRegionCode(region_code)
107
+ cbr = RusBank.new
108
+ cbr.SearchByRegionCode(region_code)
109
+ end
110
+
111
+ ##
112
+ # Возвращает список отделений по внутреннему номеру банка. Прокси метод, при каждом вызове обращается к внешнему API.
113
+
114
+ def GetOffices(int_code)
115
+ cbr = RusBank.new
116
+ cbr.GetOffices(int_code)
117
+ end
118
+
119
+ ##
120
+ # Список филиалов в указанном регионе. Прокси метод, при каждом вызове обращается к внешнему API.
121
+
122
+ def GetOfficesByRegion(region_code)
123
+ cbr = RusBank.new
124
+ cbr.GetOfficesByRegion(region_code)
125
+ end
126
+
127
+ ##
128
+ # Полный список банков. Прокси метод, при каждом вызове обращается к внешнему API.
129
+
130
+ def EnumBic
131
+ cbr = RusBank.new
132
+ cbr.EnumBic
133
+ end
134
+
135
+ ##
136
+ # Список регионов. Прокси метод, при каждом вызове обращается к внешнему API.
137
+
138
+ def RegionsEnum
139
+ cbr = RusBank.new
140
+ cbr.RegionsEnum
101
141
  end
102
142
 
103
143
  ##
@@ -124,7 +164,7 @@ module RusBankRails
124
164
  # Возвращает true, если банк действующий
125
165
 
126
166
  def is_active?
127
- (self.org_status != "лицензия отозвана") && !(self.get_licences_as_array_of_hashes.empty?)
167
+ (self.org_status != "лицензия отозвана") && (self.org_status != "ликвидирована") && !(self.get_licences_as_array_of_hashes.empty?)
128
168
  end
129
169
 
130
170
  private
@@ -132,10 +172,20 @@ module RusBankRails
132
172
  ##
133
173
  # Метод проверяет дату обновления записи в базе и пытается обновить в случае необходимости
134
174
 
135
- def check_and_update(bic)
136
- bank = self.class.find_by_bic(bic)
175
+ def check_and_update(params = {})
176
+ if(params[:bic])
177
+ bank = self.class.find_by_bic(params[:bic])
178
+ info = get_info_by_bic(params[:bic])
179
+ internal_code = info[:internal_code] if info
180
+ elsif(params[:internal_code])
181
+ bank = self.class.find_by_internal_code(params[:internal_code])
182
+ internal_code = params[:internal_code]
183
+ else
184
+ return nil
185
+ end
186
+
137
187
  if bank.nil?
138
- new_bank(bic)
188
+ internal_code ? new_bank(internal_code) : nil
139
189
  else
140
190
  if bank.expire?
141
191
  update_bank(bank)
@@ -148,8 +198,8 @@ module RusBankRails
148
198
  ##
149
199
  # Метод создает новый банк в базе
150
200
 
151
- def new_bank(bic)
152
- if info = get_info(bic)
201
+ def new_bank(internal_code)
202
+ if info = get_info_by_internal_code(internal_code)
153
203
  bank = self.class.new(info)
154
204
  bank.save
155
205
  bank
@@ -163,7 +213,7 @@ module RusBankRails
163
213
  # Обновляет переданный экземпляр банка в базе
164
214
 
165
215
  def update_bank(bank)
166
- info = get_info(bank.bic)
216
+ info = get_info_by_internal_code(bank.internal_code)
167
217
  if info.nil?
168
218
  bank.delete
169
219
  nil
@@ -174,20 +224,36 @@ module RusBankRails
174
224
  end
175
225
 
176
226
  ##
177
- # Метод возвращает актуальную информацию по банку с сайта ЦБР
227
+ # Метод возвращает актуальную информацию по банку с сайта ЦБР по БИК банка
178
228
 
179
- def get_info(bic)
180
- #begin
229
+ def get_info_by_bic(bic)
181
230
  cbr = RusBank.new
182
231
  internal_code = cbr.BicToIntCode(bic)
183
- reg_number = cbr.BicToRegNumber(bic)
184
- info = cbr.CreditInfoByIntCode(internal_code) if internal_code
232
+ get_info_by_internal_code(internal_code) if internal_code
233
+ end
234
+
235
+ ##
236
+ # Метод возвращает актуальную информацию по банку с сайта ЦБР по регистрационному номеру
237
+
238
+ def get_info_by_reg_number(reg_number)
239
+ cbr = RusBank.new
240
+ internal_code = cbr.RegNumToIntCode(reg_number)
241
+ get_info_by_internal_code(internal_code) if internal_code
242
+ end
243
+
244
+ ##
245
+ # Метод возвращает актуальную информацию по банку с сайта ЦБР по внутреннему коду
246
+
247
+ def get_info_by_internal_code(internal_code)
248
+ #begin
249
+ cbr = RusBank.new
250
+ info = cbr.CreditInfoByIntCode(internal_code)
185
251
  #rescue SocketError, Savon::SOAPFault => e
186
252
  # handle_exception(e)
187
253
  # return nil
188
254
  #end
189
255
 
190
- if internal_code && reg_number && info
256
+ if info
191
257
  if info[:lic].nil? # Лицензии нет
192
258
  lic = {}
193
259
  elsif info[:lic].instance_of?(Array) # API вернул более одной лицензии
@@ -195,17 +261,17 @@ module RusBankRails
195
261
  else # Одна лицензия, приводим ее к массиву из одного элемента
196
262
  lic = {:licences => [info[:lic]]}
197
263
  end
198
- info[:co].merge(lic).merge(internal_code: internal_code, reg_number: reg_number)
264
+ info[:co].merge(lic).merge(internal_code: internal_code)
199
265
  else
200
266
  nil
201
267
  end
202
268
  end
203
269
 
204
- def handle_exception(e)
205
- puts "========== ========== =========="
206
- puts e.inspect
207
- puts "========== ========== =========="
208
- end
270
+ #def handle_exception(e)
271
+ # puts "========== ========== =========="
272
+ # puts e.inspect
273
+ # puts "========== ========== =========="
274
+ #end
209
275
 
210
276
  end
211
277
 
@@ -1,3 +1,3 @@
1
1
  module RusBankRails
2
- VERSION = "0.5.2"
2
+ VERSION = "0.6.0"
3
3
  end
Binary file
Binary file