forcast 0.0.110

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.
Files changed (149) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +1 -0
  3. data/COPYRIGHTS +11 -0
  4. data/Gemfile +22 -0
  5. data/Gemfile.lock +166 -0
  6. data/PENDIENTES +39 -0
  7. data/README.md +35 -0
  8. data/Rakefile +7 -0
  9. data/VERSION +1 -0
  10. data/bin/console +14 -0
  11. data/bin/rake +28 -0
  12. data/bin/setup +8 -0
  13. data/forcast.gemspec +73 -0
  14. data/lib/forcast.rb +5 -0
  15. data/lib/forcast/controllers/all.rb +2 -0
  16. data/lib/forcast/controllers/application/all.rb +12 -0
  17. data/lib/forcast/controllers/application/crud.rb +91 -0
  18. data/lib/forcast/controllers/application/database.rb +34 -0
  19. data/lib/forcast/controllers/application/error.rb +18 -0
  20. data/lib/forcast/controllers/application/exception_handler.rb +25 -0
  21. data/lib/forcast/controllers/application/json.rb +83 -0
  22. data/lib/forcast/controllers/application/locale.rb +30 -0
  23. data/lib/forcast/controllers/application/log.rb +22 -0
  24. data/lib/forcast/controllers/application/login.rb +41 -0
  25. data/lib/forcast/controllers/application/meta.rb +61 -0
  26. data/lib/forcast/controllers/application/model.rb +17 -0
  27. data/lib/forcast/controllers/application/permitirtodo.rb +27 -0
  28. data/lib/forcast/controllers/application/utils.rb +28 -0
  29. data/lib/forcast/controllers/controller/all.rb +8 -0
  30. data/lib/forcast/controllers/controller/asociar.rb +121 -0
  31. data/lib/forcast/controllers/controller/busqueda.rb +151 -0
  32. data/lib/forcast/controllers/controller/definitor/definitor.rb +322 -0
  33. data/lib/forcast/controllers/controller/definitor/definitor_page.rb +40 -0
  34. data/lib/forcast/controllers/controller/definitor_all.rb +2 -0
  35. data/lib/forcast/controllers/controller/filtro.rb +48 -0
  36. data/lib/forcast/controllers/controller/login/controllers/base_controller.rb +135 -0
  37. data/lib/forcast/controllers/controller/login/controllers/login_controller.rb +38 -0
  38. data/lib/forcast/controllers/controller/login/login.rb +71 -0
  39. data/lib/forcast/controllers/controller/login_all.rb +1 -0
  40. data/lib/forcast/controllers/controller/paper_trail/paper_trail.rb +21 -0
  41. data/lib/forcast/controllers/controller/paper_trail_all.rb +1 -0
  42. data/lib/forcast/controllers/controller/relacion.rb +157 -0
  43. data/lib/forcast/controllers/controller/rule_engine/action_engine.rb +92 -0
  44. data/lib/forcast/controllers/controller/rule_engine/controllers/action_logs_controller.rb +12 -0
  45. data/lib/forcast/controllers/controller/rule_engine/controllers/actions_controller.rb +10 -0
  46. data/lib/forcast/controllers/controller/rule_engine/controllers/pollings_controller.rb +13 -0
  47. data/lib/forcast/controllers/controller/rule_engine/controllers/rule_logs_controller.rb +12 -0
  48. data/lib/forcast/controllers/controller/rule_engine/controllers/rules_controller.rb +19 -0
  49. data/lib/forcast/controllers/controller/rule_engine/controllers/webhooks_controller.rb +27 -0
  50. data/lib/forcast/controllers/controller/rule_engine/polling_engine.rb +76 -0
  51. data/lib/forcast/controllers/controller/rule_engine/rule_controller.rb +27 -0
  52. data/lib/forcast/controllers/controller/rule_engine/rule_engine.rb +88 -0
  53. data/lib/forcast/controllers/controller/rule_engine/webhook_engine.rb +38 -0
  54. data/lib/forcast/controllers/controller/rule_engine_all.rb +5 -0
  55. data/lib/forcast/jobs/all.rb +2 -0
  56. data/lib/forcast/jobs/jobs_assets.rb +25 -0
  57. data/lib/forcast/jobs/jobs_wrapper.rb +25 -0
  58. data/lib/forcast/jobs/rule_engine/jobs_actions.rb +73 -0
  59. data/lib/forcast/jobs/rule_engine/jobs_pollings.rb +77 -0
  60. data/lib/forcast/jobs/rule_engine/jobs_webhooks.rb +54 -0
  61. data/lib/forcast/migrations/0_migracion_general.rb +44 -0
  62. data/lib/forcast/migrations/paper_trail/versions.rb +61 -0
  63. data/lib/forcast/migrations/rule_engine/action_logs.rb +15 -0
  64. data/lib/forcast/migrations/rule_engine/actions.rb +15 -0
  65. data/lib/forcast/migrations/rule_engine/pollings.rb +26 -0
  66. data/lib/forcast/migrations/rule_engine/rule_logs.rb +22 -0
  67. data/lib/forcast/migrations/rule_engine/rules.rb +27 -0
  68. data/lib/forcast/migrations/rule_engine/webhooks.rb +25 -0
  69. data/lib/forcast/models/all.rb +8 -0
  70. data/lib/forcast/models/asociar.rb +74 -0
  71. data/lib/forcast/models/busqueda.rb +17 -0
  72. data/lib/forcast/models/login/authorization.rb +37 -0
  73. data/lib/forcast/models/login/json_web_token.rb +15 -0
  74. data/lib/forcast/models/login/login.rb +26 -0
  75. data/lib/forcast/models/login_all.rb +2 -0
  76. data/lib/forcast/models/meta.rb +19 -0
  77. data/lib/forcast/models/modelo.rb +125 -0
  78. data/lib/forcast/models/models/meta.rb +6 -0
  79. data/lib/forcast/models/paper_trail/paper_trail.rb +13 -0
  80. data/lib/forcast/models/paper_trail_all.rb +1 -0
  81. data/lib/forcast/models/permitirtodo.rb +57 -0
  82. data/lib/forcast/models/rule_engine/action_engine.rb +19 -0
  83. data/lib/forcast/models/rule_engine/models/action.rb +41 -0
  84. data/lib/forcast/models/rule_engine/models/action_log.rb +40 -0
  85. data/lib/forcast/models/rule_engine/models/polling.rb +43 -0
  86. data/lib/forcast/models/rule_engine/models/rule.rb +44 -0
  87. data/lib/forcast/models/rule_engine/models/rule_log.rb +39 -0
  88. data/lib/forcast/models/rule_engine/models/webhook.rb +43 -0
  89. data/lib/forcast/models/rule_engine/polling_engine.rb +113 -0
  90. data/lib/forcast/models/rule_engine/rule.rb +62 -0
  91. data/lib/forcast/models/rule_engine/rule_engine.rb +137 -0
  92. data/lib/forcast/models/rule_engine/rule_scope.rb +35 -0
  93. data/lib/forcast/models/rule_engine/webhook_engine.rb +55 -0
  94. data/lib/forcast/models/rule_engine_all.rb +6 -0
  95. data/lib/forcast/routes/concerns/asociar.rb +15 -0
  96. data/lib/forcast/routes/concerns/buscar.rb +6 -0
  97. data/lib/forcast/routes/concerns/definitor.rb +3 -0
  98. data/lib/forcast/routes/concerns/modelo.rb +6 -0
  99. data/lib/forcast/routes/database.rb +4 -0
  100. data/lib/forcast/routes/login.rb +4 -0
  101. data/lib/forcast/routes/paper_trail/paper_trail.rb +3 -0
  102. data/lib/forcast/routes/rule_engine/rule.rb +5 -0
  103. data/lib/forcast/tasks/.giosaveZr0hbs +21 -0
  104. data/lib/forcast/tasks/.keep +0 -0
  105. data/lib/forcast/tasks/all.rb +16 -0
  106. data/lib/forcast/tasks/diagramas.rake +32 -0
  107. data/lib/forcast/tasks/documentation/documentation.rb +100 -0
  108. data/lib/forcast/tasks/env.rake +10 -0
  109. data/lib/forcast/tasks/git.rake +22 -0
  110. data/lib/forcast/tasks/indy/indy.rb +28 -0
  111. data/lib/forcast/tasks/logs.rake +13 -0
  112. data/lib/forcast/tasks/process.rake +18 -0
  113. data/lib/forcast/tasks/schema.rake +17 -0
  114. data/lib/forcast/tasks/schema/recips/action.rb +18 -0
  115. data/lib/forcast/tasks/schema/recips/controller.rb +29 -0
  116. data/lib/forcast/tasks/schema/recips/definitor.rb +38 -0
  117. data/lib/forcast/tasks/schema/recips/model.rb +43 -0
  118. data/lib/forcast/tasks/schema/recips/project.rb +19 -0
  119. data/lib/forcast/tasks/schema/recips/route.rb +9 -0
  120. data/lib/forcast/tasks/schema/recips/tmp/controller.rb +0 -0
  121. data/lib/forcast/tasks/schema/recips/tmp/model.rb +0 -0
  122. data/lib/forcast/tasks/schema/recips/tmp/model/.keep +0 -0
  123. data/lib/forcast/tasks/schema/rule_engine/rule_engine.rb +98 -0
  124. data/lib/forcast/tasks/schema/schema.rb +346 -0
  125. data/lib/forcast/tasks/test.rake +129 -0
  126. data/lib/forcast/tasks/utils.rake +68 -0
  127. data/lib/forcast/tasks/yard.rake +18 -0
  128. data/lib/forcast/utils/all.rb +4 -0
  129. data/lib/forcast/utils/email.rb +49 -0
  130. data/lib/forcast/utils/email/forcast/utils/email/layout/default.html.erb +3 -0
  131. data/lib/forcast/utils/email/forcast/utils/email/layout/default.text.erb +5 -0
  132. data/lib/forcast/utils/firebase.rb +60 -0
  133. data/lib/forcast/utils/firebase_database.rb +117 -0
  134. data/lib/forcast/utils/measure.rb +44 -0
  135. data/lib/forcast/utils/qvo.rb +141 -0
  136. data/lib/forcast/utils/server.rb +296 -0
  137. data/lib/forcast/utils/telegram.rb +82 -0
  138. data/lib/forcast/utils/thing.rb +180 -0
  139. data/lib/forcast/version.rb +15 -0
  140. data/lib/lib/backup.rb +42 -0
  141. data/lib/lib/deploy.sh +40 -0
  142. data/lib/lib/forcast_servidor_rails.sh +11 -0
  143. data/lib/lib/pg_generator.sh +10 -0
  144. data/lib/lib/production.rb +66 -0
  145. data/lib/lib/production/production.rb +30 -0
  146. data/lib/lib/systemctl_maker.rb +88 -0
  147. data/lib/lib/update.rb +100 -0
  148. data/production.rb +31 -0
  149. metadata +301 -0
@@ -0,0 +1,25 @@
1
+ require_relative 'base'
2
+
3
+ class Tables::Webhooks < Tables::Base
4
+
5
+ def self.table(migration)
6
+ create_table migration do |t|
7
+ t.string :webhook_model
8
+ t.integer :webhook_model_id
9
+ t.integer :send_time
10
+ t.integer :duration_time
11
+ t.boolean :active?
12
+ t.boolean :forever_true?
13
+ t.datetime :last_execution
14
+ t.datetime :last_review_send
15
+ t.datetime :last_send
16
+ t.boolean :execute?
17
+ t.boolean :send?
18
+ t.boolean :class_webhook?
19
+ t.bigint :rule_id
20
+ t.index :rule_id, name: 'index_rule_webhook_id'
21
+ t.timestamps
22
+ end
23
+ end
24
+ end
25
+
@@ -0,0 +1,8 @@
1
+ require "forcast/models/meta"
2
+ require "forcast/models/asociar"
3
+ require "forcast/models/busqueda"
4
+ require "forcast/models/modelo"
5
+ require "forcast/models/permitirtodo"
6
+ require "forcast/models/rule_engine_all"
7
+ require "forcast/models/paper_trail_all"
8
+ require "forcast/models/login_all"
@@ -0,0 +1,74 @@
1
+ require 'active_support'
2
+ module Forcast
3
+ module Model
4
+ module Asociar
5
+
6
+ extend ActiveSupport::Concern
7
+
8
+
9
+
10
+ included do
11
+
12
+ def self.no_asociados_a(modelo)
13
+
14
+ self.where(modelo => [1,nil])
15
+ end
16
+
17
+ end
18
+
19
+ def ver_asociado(modelo)
20
+
21
+ return c_to_m(modelo).where(:id => self.id)
22
+
23
+ end
24
+
25
+ def asociar_a(modelo, id)
26
+
27
+ self.update(modelo => id)
28
+
29
+ end
30
+
31
+ def agregar_asociado(modelo,id)
32
+ nombre = (self.class.name + '_id').downcase
33
+ c_to_m(modelo).find(id).update( nombre => self.id)
34
+ end
35
+
36
+ def desasociar_de(modelo)
37
+
38
+ self.update(modelo => 1)
39
+
40
+ end
41
+
42
+ def quitar_asociado(modelo,id)
43
+ nombre = (self.class.name + '_id').downcase
44
+ c_to_m(modelo).find(id).update( nombre => 1)
45
+ end
46
+
47
+
48
+ def asociado_a?(modelo, id)
49
+
50
+ self.read_attribute(modelo) === id.to_i ? false : true
51
+
52
+ end
53
+
54
+ def agregar_asociado_a?(modelo, id)
55
+
56
+ nombre = (self.class.name + '_id').downcase
57
+ c_to_m(modelo).find(id).read_attribute(nombre) === self.id.to_i ? false : true
58
+
59
+ end
60
+
61
+ def asociado_existe?(modelo, id)
62
+
63
+ c_to_m(modelo).exists?(id) ? true : false
64
+
65
+ end
66
+
67
+ def c_to_m(str)
68
+ return str.classify.constantize
69
+ end
70
+
71
+
72
+ end
73
+ end
74
+ end
@@ -0,0 +1,17 @@
1
+ require 'active_support'
2
+ module Forcast
3
+ module Model
4
+ module Busqueda
5
+ extend ActiveSupport::Concern
6
+
7
+ included do
8
+ scope :buscar_nombre_scope, -> (nombre) { where nombre: nombre }
9
+ scope :buscar_parametro_exacto_scope, -> (parametro,dato) { where parametro => dato }
10
+ scope :buscar_parametro_contiene_scope, -> (parametro,contiene) { where "#{parametro} like ?", "%#{contiene}%"}
11
+ end
12
+
13
+
14
+ end
15
+ end
16
+ end
17
+
@@ -0,0 +1,37 @@
1
+ class Authorization < ApplicationRecord
2
+ belongs_to :user, optional: true
3
+
4
+ def get_token
5
+ jwt_token = if user.present?
6
+ JsonWebToken.encode({user_id:self.user.id, birthday_date:self.created_at})
7
+ elsif admin_user.present?
8
+ JsonWebToken.encode({admin_user_id:self.admin_user.id, birthday_date:self.created_at})
9
+ end
10
+
11
+ jwt_token
12
+ end
13
+
14
+ def self.invalidate_token(given_token)
15
+ temporal_auth = Authorization.new()
16
+
17
+ decoded_token = JsonWebToken.decode(given_token)
18
+
19
+ if decoded_token.blank?
20
+ temporal_auth.errors.add(:base, I18n.t("activerecord.errors.token.not_exits"))
21
+ else
22
+ user_id = decoded_token[:user_id]
23
+ created_at_format = decoded_token[:birthday_date]
24
+ created_at = Time.parse(created_at_format)
25
+
26
+ auth = Authorization.find_by(user_id:user_id,active_time_stamp:created_at.to_i)
27
+ if auth.present? && auth.operative
28
+ auth.operative = false
29
+ auth.save
30
+ else
31
+ temporal_auth.errors.add(:base, I18n.t("activerecord.errors.token.already_invalid"))
32
+ end
33
+ end
34
+
35
+ temporal_auth
36
+ end
37
+ end
@@ -0,0 +1,15 @@
1
+ class JsonWebToken
2
+ class << self
3
+ def encode(payload,exp = 15.year.from_now)
4
+ payload[:exp] = exp.to_i
5
+ JWT.encode(payload, Rails.application.secrets.secret_key_base)
6
+ end
7
+
8
+ def decode(token)
9
+ return HashWithIndifferentAccess.new(JWT.decode(token, Rails.application.secrets.secret_key_base)[0])
10
+ rescue
11
+ nil
12
+ end
13
+
14
+ end
15
+ end
@@ -0,0 +1,26 @@
1
+ require 'bcrypt'
2
+ module Forcast
3
+ module Model
4
+ module Login
5
+ include BCrypt
6
+
7
+ def generate_auth_token
8
+ token = SecureRandom.hex
9
+ self.update_columns(auth_token: token, token_created_at: Time.zone.now)
10
+ return token
11
+ end
12
+
13
+ def invalidate_auth_token
14
+ self.update_columns(auth_token: nil, token_created_at: nil)
15
+ end
16
+
17
+ def password=(password)
18
+ self.password_hash = BCrypt::Password.create(password)
19
+ end
20
+
21
+ def is_password?(password)
22
+ BCrypt::Password.new(self.password_hash) == password
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,2 @@
1
+ require "forcast/models/login/login"
2
+
@@ -0,0 +1,19 @@
1
+ require 'active_support'
2
+ module Forcast
3
+ module Model
4
+ module Meta
5
+ extend ActiveSupport::Concern
6
+
7
+ included do
8
+
9
+ end
10
+
11
+ def initialize()
12
+ @name = attributes[:name]
13
+ @email = attributes[:email]
14
+ end
15
+
16
+ end
17
+ end
18
+ end
19
+
@@ -0,0 +1,125 @@
1
+ require 'active_support'
2
+ module Forcast
3
+ module Model
4
+ module Modelo
5
+
6
+ extend ActiveSupport::Concern
7
+
8
+ def create(params)
9
+ self.attributes.each do |att|
10
+ next if att[0] == 'id'
11
+ self.write_attribute(att[0], params[att[0]])
12
+ end
13
+ begin
14
+ init(params)
15
+ rescue
16
+
17
+ ensure
18
+ return true if self.save
19
+ end
20
+
21
+ end
22
+
23
+ def errores
24
+ self.errors.full_messages
25
+ end
26
+
27
+ included do
28
+
29
+ def self.model
30
+ return model_name.name.classify.constantize
31
+ end
32
+
33
+ def self.nombre_existe?(nombre)
34
+ model.exists?(nombre: nombre)
35
+ end
36
+
37
+ def self.parametro_existe?(param,dato)
38
+ return model.exists?(param => dato)
39
+ end
40
+
41
+ def self.duplate_object?(comp)
42
+ object_unique = model.exists?(comp)
43
+ return object_unique
44
+ end
45
+
46
+ def self.parametros_existen_create?(param)
47
+ a,b = false
48
+ parametros_a_comprobar_si_existen_create.each do |comprobar|
49
+ next unless model.exists?(comprobar => param[comprobar])
50
+ a = true
51
+ b = comprobar
52
+ break
53
+ end
54
+ return [a,b]
55
+ end
56
+
57
+ def self.parametros_a_validar_create (datos)
58
+ a,b = false
59
+ c = []
60
+ datos.each do |data|
61
+ c = model.validaciones_create(data[0],data[1])
62
+ next unless c[1]
63
+ a = true
64
+ b = c[0]
65
+ break
66
+ end
67
+ return [a,b]
68
+ end
69
+
70
+ def self.parametros_estan_create?(params)
71
+ if (parametros_necesario_create - params).empty?
72
+ return false
73
+ else
74
+ return true
75
+ end
76
+ end
77
+
78
+ def self.validaciones_create(param, dato)
79
+ vald = parametros_a_validar_modelo_create.select{ |item| item[:param] == param }
80
+ return ['',false] if vald.empty?
81
+ abstract_validation do
82
+ conf = Hash.new
83
+ conf[:param_param] = param
84
+ conf[:param] = vald[0][:param]
85
+ conf[:valor] = vald[0][:valor]
86
+ conf[:validacion] = vald[0][:validacion]
87
+ conf[:error] = vald[0][:error]
88
+ conf[:comp] = dato
89
+ conf
90
+ end
91
+ end
92
+
93
+ def self.validaciones_update(param, dato)
94
+ vald = parametros_a_validar_modelo_update.select{ |item| item[:param] == param }
95
+ return ['',false] if vald.empty?
96
+ abstract_validation do
97
+ conf = Hash.new
98
+ conf[:param_param] = param
99
+ conf[:param] = vald[0][:param]
100
+ conf[:valor] = vald[0][:valor]
101
+ conf[:validacion] = vald[0][:validacion]
102
+ conf[:error] = vald[0][:error]
103
+ conf[:comp] = dato
104
+ conf
105
+ end
106
+ end
107
+
108
+ def self.abstract_validation
109
+ conf = yield
110
+ if conf[:param_param] == conf[:param]
111
+ if self.send(conf[:validacion],conf[:comp])
112
+ return [conf[:error],true]
113
+ else
114
+ return ['',false]
115
+ end
116
+ else
117
+ return ['',false]
118
+ end
119
+ end
120
+
121
+ end
122
+
123
+ end
124
+ end
125
+ end
@@ -0,0 +1,6 @@
1
+ class Meta < ApplicationRecord
2
+ include Forcast::Model::Meta
3
+
4
+
5
+
6
+ end
@@ -0,0 +1,13 @@
1
+ require 'active_support'
2
+ module Forcast
3
+ module Model
4
+ module PaperTrail
5
+ extend ActiveSupport::Concern
6
+
7
+ included do
8
+ has_paper_trail ignore: []
9
+ #before_action :set_paper_trail_whodunnit
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1 @@
1
+ require "forcast/models/paper_trail/paper_trail"
@@ -0,0 +1,57 @@
1
+ require 'active_support'
2
+ module Forcast
3
+ module Model
4
+ module Permitirtodo
5
+
6
+ extend ActiveSupport::Concern
7
+
8
+ def init
9
+
10
+
11
+ end
12
+
13
+ included do
14
+
15
+ def self.parametros_necesario_create
16
+ array = []
17
+ return array
18
+ end
19
+
20
+
21
+ def self.params_permitidos_asociar
22
+ n = []
23
+ self.reflect_on_all_associations(:belongs_to).each do |x|
24
+ n = n.push(x.name.to_s+'_id')
25
+ end
26
+ return params_permitidos_asociar = n
27
+ end
28
+
29
+ def self.params_permitidos_agregar
30
+ n = []
31
+ self.reflect_on_all_associations(:has_many).each do |x|
32
+ n = n.push(x.name.to_s+'_id')
33
+ end
34
+ return params_permitidos_agregar = n
35
+ end
36
+
37
+
38
+ def self.parametros_a_comprobar_si_existen_create
39
+ return parametros_a_comprobar_si_existen_create = []
40
+ end
41
+
42
+ def self.parametros_a_comprobar_si_existen_update
43
+ return parametros_a_comprobar_si_existen_update = []
44
+ end
45
+
46
+ def self.validaciones_create(param, dato)
47
+ return ['',false]
48
+ end
49
+
50
+ def self.validaciones_update (param,dato)
51
+ return ['',false]
52
+ end
53
+ end
54
+ end
55
+ end
56
+ end
57
+
@@ -0,0 +1,19 @@
1
+ require 'active_support'
2
+ module Forcast
3
+ module Model
4
+ module RuleEngine
5
+ module ActionEngine
6
+ extend ActiveSupport::Concern
7
+
8
+ included do
9
+
10
+ def self.action_type_allowed
11
+ return action_type_allowed = ["callback", "telegram","email"]
12
+ end
13
+
14
+ end
15
+
16
+ end
17
+ end
18
+ end
19
+ end