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.
- checksums.yaml +7 -0
- data/.gitignore +1 -0
- data/COPYRIGHTS +11 -0
- data/Gemfile +22 -0
- data/Gemfile.lock +166 -0
- data/PENDIENTES +39 -0
- data/README.md +35 -0
- data/Rakefile +7 -0
- data/VERSION +1 -0
- data/bin/console +14 -0
- data/bin/rake +28 -0
- data/bin/setup +8 -0
- data/forcast.gemspec +73 -0
- data/lib/forcast.rb +5 -0
- data/lib/forcast/controllers/all.rb +2 -0
- data/lib/forcast/controllers/application/all.rb +12 -0
- data/lib/forcast/controllers/application/crud.rb +91 -0
- data/lib/forcast/controllers/application/database.rb +34 -0
- data/lib/forcast/controllers/application/error.rb +18 -0
- data/lib/forcast/controllers/application/exception_handler.rb +25 -0
- data/lib/forcast/controllers/application/json.rb +83 -0
- data/lib/forcast/controllers/application/locale.rb +30 -0
- data/lib/forcast/controllers/application/log.rb +22 -0
- data/lib/forcast/controllers/application/login.rb +41 -0
- data/lib/forcast/controllers/application/meta.rb +61 -0
- data/lib/forcast/controllers/application/model.rb +17 -0
- data/lib/forcast/controllers/application/permitirtodo.rb +27 -0
- data/lib/forcast/controllers/application/utils.rb +28 -0
- data/lib/forcast/controllers/controller/all.rb +8 -0
- data/lib/forcast/controllers/controller/asociar.rb +121 -0
- data/lib/forcast/controllers/controller/busqueda.rb +151 -0
- data/lib/forcast/controllers/controller/definitor/definitor.rb +322 -0
- data/lib/forcast/controllers/controller/definitor/definitor_page.rb +40 -0
- data/lib/forcast/controllers/controller/definitor_all.rb +2 -0
- data/lib/forcast/controllers/controller/filtro.rb +48 -0
- data/lib/forcast/controllers/controller/login/controllers/base_controller.rb +135 -0
- data/lib/forcast/controllers/controller/login/controllers/login_controller.rb +38 -0
- data/lib/forcast/controllers/controller/login/login.rb +71 -0
- data/lib/forcast/controllers/controller/login_all.rb +1 -0
- data/lib/forcast/controllers/controller/paper_trail/paper_trail.rb +21 -0
- data/lib/forcast/controllers/controller/paper_trail_all.rb +1 -0
- data/lib/forcast/controllers/controller/relacion.rb +157 -0
- data/lib/forcast/controllers/controller/rule_engine/action_engine.rb +92 -0
- data/lib/forcast/controllers/controller/rule_engine/controllers/action_logs_controller.rb +12 -0
- data/lib/forcast/controllers/controller/rule_engine/controllers/actions_controller.rb +10 -0
- data/lib/forcast/controllers/controller/rule_engine/controllers/pollings_controller.rb +13 -0
- data/lib/forcast/controllers/controller/rule_engine/controllers/rule_logs_controller.rb +12 -0
- data/lib/forcast/controllers/controller/rule_engine/controllers/rules_controller.rb +19 -0
- data/lib/forcast/controllers/controller/rule_engine/controllers/webhooks_controller.rb +27 -0
- data/lib/forcast/controllers/controller/rule_engine/polling_engine.rb +76 -0
- data/lib/forcast/controllers/controller/rule_engine/rule_controller.rb +27 -0
- data/lib/forcast/controllers/controller/rule_engine/rule_engine.rb +88 -0
- data/lib/forcast/controllers/controller/rule_engine/webhook_engine.rb +38 -0
- data/lib/forcast/controllers/controller/rule_engine_all.rb +5 -0
- data/lib/forcast/jobs/all.rb +2 -0
- data/lib/forcast/jobs/jobs_assets.rb +25 -0
- data/lib/forcast/jobs/jobs_wrapper.rb +25 -0
- data/lib/forcast/jobs/rule_engine/jobs_actions.rb +73 -0
- data/lib/forcast/jobs/rule_engine/jobs_pollings.rb +77 -0
- data/lib/forcast/jobs/rule_engine/jobs_webhooks.rb +54 -0
- data/lib/forcast/migrations/0_migracion_general.rb +44 -0
- data/lib/forcast/migrations/paper_trail/versions.rb +61 -0
- data/lib/forcast/migrations/rule_engine/action_logs.rb +15 -0
- data/lib/forcast/migrations/rule_engine/actions.rb +15 -0
- data/lib/forcast/migrations/rule_engine/pollings.rb +26 -0
- data/lib/forcast/migrations/rule_engine/rule_logs.rb +22 -0
- data/lib/forcast/migrations/rule_engine/rules.rb +27 -0
- data/lib/forcast/migrations/rule_engine/webhooks.rb +25 -0
- data/lib/forcast/models/all.rb +8 -0
- data/lib/forcast/models/asociar.rb +74 -0
- data/lib/forcast/models/busqueda.rb +17 -0
- data/lib/forcast/models/login/authorization.rb +37 -0
- data/lib/forcast/models/login/json_web_token.rb +15 -0
- data/lib/forcast/models/login/login.rb +26 -0
- data/lib/forcast/models/login_all.rb +2 -0
- data/lib/forcast/models/meta.rb +19 -0
- data/lib/forcast/models/modelo.rb +125 -0
- data/lib/forcast/models/models/meta.rb +6 -0
- data/lib/forcast/models/paper_trail/paper_trail.rb +13 -0
- data/lib/forcast/models/paper_trail_all.rb +1 -0
- data/lib/forcast/models/permitirtodo.rb +57 -0
- data/lib/forcast/models/rule_engine/action_engine.rb +19 -0
- data/lib/forcast/models/rule_engine/models/action.rb +41 -0
- data/lib/forcast/models/rule_engine/models/action_log.rb +40 -0
- data/lib/forcast/models/rule_engine/models/polling.rb +43 -0
- data/lib/forcast/models/rule_engine/models/rule.rb +44 -0
- data/lib/forcast/models/rule_engine/models/rule_log.rb +39 -0
- data/lib/forcast/models/rule_engine/models/webhook.rb +43 -0
- data/lib/forcast/models/rule_engine/polling_engine.rb +113 -0
- data/lib/forcast/models/rule_engine/rule.rb +62 -0
- data/lib/forcast/models/rule_engine/rule_engine.rb +137 -0
- data/lib/forcast/models/rule_engine/rule_scope.rb +35 -0
- data/lib/forcast/models/rule_engine/webhook_engine.rb +55 -0
- data/lib/forcast/models/rule_engine_all.rb +6 -0
- data/lib/forcast/routes/concerns/asociar.rb +15 -0
- data/lib/forcast/routes/concerns/buscar.rb +6 -0
- data/lib/forcast/routes/concerns/definitor.rb +3 -0
- data/lib/forcast/routes/concerns/modelo.rb +6 -0
- data/lib/forcast/routes/database.rb +4 -0
- data/lib/forcast/routes/login.rb +4 -0
- data/lib/forcast/routes/paper_trail/paper_trail.rb +3 -0
- data/lib/forcast/routes/rule_engine/rule.rb +5 -0
- data/lib/forcast/tasks/.giosaveZr0hbs +21 -0
- data/lib/forcast/tasks/.keep +0 -0
- data/lib/forcast/tasks/all.rb +16 -0
- data/lib/forcast/tasks/diagramas.rake +32 -0
- data/lib/forcast/tasks/documentation/documentation.rb +100 -0
- data/lib/forcast/tasks/env.rake +10 -0
- data/lib/forcast/tasks/git.rake +22 -0
- data/lib/forcast/tasks/indy/indy.rb +28 -0
- data/lib/forcast/tasks/logs.rake +13 -0
- data/lib/forcast/tasks/process.rake +18 -0
- data/lib/forcast/tasks/schema.rake +17 -0
- data/lib/forcast/tasks/schema/recips/action.rb +18 -0
- data/lib/forcast/tasks/schema/recips/controller.rb +29 -0
- data/lib/forcast/tasks/schema/recips/definitor.rb +38 -0
- data/lib/forcast/tasks/schema/recips/model.rb +43 -0
- data/lib/forcast/tasks/schema/recips/project.rb +19 -0
- data/lib/forcast/tasks/schema/recips/route.rb +9 -0
- data/lib/forcast/tasks/schema/recips/tmp/controller.rb +0 -0
- data/lib/forcast/tasks/schema/recips/tmp/model.rb +0 -0
- data/lib/forcast/tasks/schema/recips/tmp/model/.keep +0 -0
- data/lib/forcast/tasks/schema/rule_engine/rule_engine.rb +98 -0
- data/lib/forcast/tasks/schema/schema.rb +346 -0
- data/lib/forcast/tasks/test.rake +129 -0
- data/lib/forcast/tasks/utils.rake +68 -0
- data/lib/forcast/tasks/yard.rake +18 -0
- data/lib/forcast/utils/all.rb +4 -0
- data/lib/forcast/utils/email.rb +49 -0
- data/lib/forcast/utils/email/forcast/utils/email/layout/default.html.erb +3 -0
- data/lib/forcast/utils/email/forcast/utils/email/layout/default.text.erb +5 -0
- data/lib/forcast/utils/firebase.rb +60 -0
- data/lib/forcast/utils/firebase_database.rb +117 -0
- data/lib/forcast/utils/measure.rb +44 -0
- data/lib/forcast/utils/qvo.rb +141 -0
- data/lib/forcast/utils/server.rb +296 -0
- data/lib/forcast/utils/telegram.rb +82 -0
- data/lib/forcast/utils/thing.rb +180 -0
- data/lib/forcast/version.rb +15 -0
- data/lib/lib/backup.rb +42 -0
- data/lib/lib/deploy.sh +40 -0
- data/lib/lib/forcast_servidor_rails.sh +11 -0
- data/lib/lib/pg_generator.sh +10 -0
- data/lib/lib/production.rb +66 -0
- data/lib/lib/production/production.rb +30 -0
- data/lib/lib/systemctl_maker.rb +88 -0
- data/lib/lib/update.rb +100 -0
- data/production.rb +31 -0
- metadata +301 -0
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
require 'active_support'
|
|
2
|
+
require 'json'
|
|
3
|
+
module Forcast
|
|
4
|
+
module Controller
|
|
5
|
+
module RuleEngine
|
|
6
|
+
module ActionEngine
|
|
7
|
+
extend ActiveSupport::Concern
|
|
8
|
+
|
|
9
|
+
included do
|
|
10
|
+
|
|
11
|
+
end
|
|
12
|
+
def create
|
|
13
|
+
raise Forcast::Application::Error::General.new(t("error_action_type_dont_permit")) unless Action.action_type_allowed.include?(@action_type)
|
|
14
|
+
raise Forcast::Application::Error::General.new(t("error_action_params_dont_permit")) unless validation_for(@action_type)
|
|
15
|
+
params[:active?] = true
|
|
16
|
+
super
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def update
|
|
20
|
+
super
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def validation_for(action_type)
|
|
24
|
+
case action_type
|
|
25
|
+
when "callback"
|
|
26
|
+
return validation_for_callback
|
|
27
|
+
when "email"
|
|
28
|
+
required_email_params = ['owner_email','target_email','attributes']
|
|
29
|
+
validation_for_email(required_email_params)
|
|
30
|
+
convert_params_to_hash(required_email_params)
|
|
31
|
+
when "telegram"
|
|
32
|
+
return true
|
|
33
|
+
else
|
|
34
|
+
return false
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def validation_for_callback
|
|
39
|
+
begin
|
|
40
|
+
action_params = JSON.parse(@action_params)
|
|
41
|
+
rescue
|
|
42
|
+
puts "Error Parser JSON"
|
|
43
|
+
return false
|
|
44
|
+
end
|
|
45
|
+
puts action_params
|
|
46
|
+
unless action_params && action_params["url"] && action_params["attr"]
|
|
47
|
+
return false
|
|
48
|
+
else
|
|
49
|
+
return false unless action_params["attr"].is_a?(Array)
|
|
50
|
+
model = Rule.find(@rule_id).rule_model
|
|
51
|
+
validate_attr_model(model,action_params["attr"])
|
|
52
|
+
return true
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def validation_for_email(required_email_params)
|
|
57
|
+
raise Forcast::Application::Error::General.new(t("error_params_email_are_missing")) if params_for_are_missing(required_email_params)
|
|
58
|
+
model = Rule.find(@rule_id).rule_model
|
|
59
|
+
validate_attr_model(model,@attributes)
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def params_for_are_missing(required_params)
|
|
63
|
+
validation = false
|
|
64
|
+
required_params.each do |key|
|
|
65
|
+
next if params.include?(key)
|
|
66
|
+
validation = true
|
|
67
|
+
end
|
|
68
|
+
validation
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def convert_params_to_hash(parameters)
|
|
72
|
+
new_params = params.permit(parameters)
|
|
73
|
+
new_params[:attributes] = params[:attributes]
|
|
74
|
+
params[:action_params] = new_params
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def validate_attr_model(model,attributes)
|
|
78
|
+
model = model.classify.constantize
|
|
79
|
+
attributes.each do |attribute|
|
|
80
|
+
next if attribute == "all"
|
|
81
|
+
if model.column_names.include?(attribute)
|
|
82
|
+
return true
|
|
83
|
+
else
|
|
84
|
+
raise Forcast::Application::Error::General.new(t("error_modelo_attr_doesn't_exist"))
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
end
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
class Api::ActionsController < ApplicationController
|
|
2
|
+
|
|
3
|
+
include Forcast::Application::Permitirtodo
|
|
4
|
+
include Forcast::Controller::Relacion
|
|
5
|
+
include Forcast::Controller::Filtro
|
|
6
|
+
include Forcast::Controller::Busqueda
|
|
7
|
+
include Forcast::Controller::RuleEngine::ActionEngine
|
|
8
|
+
private
|
|
9
|
+
|
|
10
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
class Api::PollingsController < ApplicationController
|
|
2
|
+
|
|
3
|
+
include Forcast::Application::Permitirtodo
|
|
4
|
+
include Forcast::Controller::Relacion
|
|
5
|
+
include Forcast::Controller::Filtro
|
|
6
|
+
include Forcast::Controller::Busqueda
|
|
7
|
+
include Forcast::Controller::RuleEngine::PollingEngine
|
|
8
|
+
|
|
9
|
+
private
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
class Api::RulesController < ApplicationController
|
|
2
|
+
|
|
3
|
+
include Forcast::Application::Permitirtodo
|
|
4
|
+
include Forcast::Controller::Relacion
|
|
5
|
+
include Forcast::Controller::Filtro
|
|
6
|
+
include Forcast::Controller::Busqueda
|
|
7
|
+
include Forcast::Controller::RuleEngine::RuleEngine
|
|
8
|
+
|
|
9
|
+
private
|
|
10
|
+
|
|
11
|
+
def validate_model
|
|
12
|
+
|
|
13
|
+
return rule_models = ["Usuario",
|
|
14
|
+
"Administrador"]
|
|
15
|
+
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
class Api::WebhooksController < ApplicationController
|
|
2
|
+
|
|
3
|
+
include Forcast::Application::Permitirtodo
|
|
4
|
+
include Forcast::Controller::Relacion
|
|
5
|
+
include Forcast::Controller::Asociar
|
|
6
|
+
include Forcast::Controller::Filtro
|
|
7
|
+
include Forcast::Controller::Busqueda
|
|
8
|
+
include Forcast::Controller::RuleEngine::WebhookEngine
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
private
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
# def params_permitidos_enviar
|
|
15
|
+
# return params_permitidos_enviar = []
|
|
16
|
+
# end
|
|
17
|
+
|
|
18
|
+
# def params_permitidos_update
|
|
19
|
+
# return params_permitidos_update = []
|
|
20
|
+
# end
|
|
21
|
+
|
|
22
|
+
# def params_permitidos_buscar
|
|
23
|
+
# return params_permitidos_buscar = []
|
|
24
|
+
# end
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
end
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
require 'active_support'
|
|
2
|
+
module Forcast
|
|
3
|
+
module Controller
|
|
4
|
+
module RuleEngine
|
|
5
|
+
module PollingEngine
|
|
6
|
+
extend ActiveSupport::Concern
|
|
7
|
+
|
|
8
|
+
included do
|
|
9
|
+
before_action :set_model_rule_and_model_id_rule, only: [:create]
|
|
10
|
+
end
|
|
11
|
+
def create
|
|
12
|
+
params[:polling_model] = @polling_model
|
|
13
|
+
params[:polling_model_id] = @polling_model_id
|
|
14
|
+
params[:active?] = false
|
|
15
|
+
params[:execute?] = true
|
|
16
|
+
params[:send?] = true
|
|
17
|
+
params[:last_execution] = Time.now
|
|
18
|
+
params[:duration_time] ||= 10
|
|
19
|
+
params[:review_time] ||= 30
|
|
20
|
+
params[:send_time] ||= 10
|
|
21
|
+
model_id = super
|
|
22
|
+
if @auto_active
|
|
23
|
+
model_id.update_columns(:active? => true)
|
|
24
|
+
activate_polling
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def update
|
|
29
|
+
if @variable == 'active?' && @dato == 'true'
|
|
30
|
+
response_to_active
|
|
31
|
+
elsif params[:active?]
|
|
32
|
+
response_to_active
|
|
33
|
+
@datos = @datos.without("active?")
|
|
34
|
+
end
|
|
35
|
+
super
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def response_to_active
|
|
39
|
+
rule = @model_id.rule
|
|
40
|
+
@polling_model = rule.rule_model
|
|
41
|
+
@polling_model_id = rule.rule_model_id
|
|
42
|
+
@model_id.update_columns(:active? => true,
|
|
43
|
+
:execute? => true,
|
|
44
|
+
:send? => true)
|
|
45
|
+
activate_polling
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def set_model_rule_and_model_id_rule
|
|
49
|
+
puts "set_modelo_and_modelo_id"
|
|
50
|
+
rule = Rule.find(@rule_id)
|
|
51
|
+
@polling_model = rule.rule_model
|
|
52
|
+
@polling_model_id = rule.rule_model_id
|
|
53
|
+
#pollings = rule.polling.where(:activo? => true)
|
|
54
|
+
#raise Forcast::Application::Error::General.new(t("polling_exist_and_active")) if pollings.first
|
|
55
|
+
raise Forcast::Application::Error::General.new(t("polling_exist")) if Polling.duplicate_object?(object_duplicate_params)
|
|
56
|
+
rule.update_columns(:last_value_attr_comparable => nil)
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def activate_polling
|
|
60
|
+
Polling.validate_if_work_exists_to_polling(:polling_model => @polling_model,
|
|
61
|
+
:polling_model_id => @polling_model_id,
|
|
62
|
+
:created_at => Time.now.strftime("%m/%d/%Y %H:%M"))
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def object_duplicate_params
|
|
66
|
+
comp = Hash.new
|
|
67
|
+
comp["polling_model"] = @polling_model
|
|
68
|
+
comp["polling_model_id"] = @polling_model_id
|
|
69
|
+
comp["rule_id"] = @rule_id
|
|
70
|
+
return comp
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
require 'active_support'
|
|
2
|
+
module Forcast
|
|
3
|
+
module Controller
|
|
4
|
+
module RuleController
|
|
5
|
+
extend ActiveSupport::Concern
|
|
6
|
+
included do
|
|
7
|
+
before_action :set_model_id_rule, only: [:webhooks, :pollings, :rules]
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def webhooks
|
|
11
|
+
json_response(@model_id.webhook,'ok')
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def pollings
|
|
15
|
+
json_response(@model_id.polling,'ok')
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def rules
|
|
19
|
+
json_response(@model_id.rule,'ok')
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def set_model_id_rule
|
|
23
|
+
set_model_id
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
require 'active_support'
|
|
2
|
+
module Forcast
|
|
3
|
+
module Controller
|
|
4
|
+
module RuleEngine
|
|
5
|
+
module RuleEngine
|
|
6
|
+
extend ActiveSupport::Concern
|
|
7
|
+
included do
|
|
8
|
+
|
|
9
|
+
end
|
|
10
|
+
def create
|
|
11
|
+
unless @rules
|
|
12
|
+
raise Forcast::Application::Error::General.new(t("error_rule_model")) unless validate_model.include?(@rule_model)
|
|
13
|
+
unless params[:class_rule?]
|
|
14
|
+
raise Forcast::Application::Error::General.new(t("error_rule_model_id_doesn't_exist")) unless Rule.validate_model_id(@rule_model,@rule_model_id)
|
|
15
|
+
end
|
|
16
|
+
raise Forcast::Application::Error::General.new(t("error_rule_model_attr_doesn't_exist")) unless @rule_class = Rule.validate_attr_model(@rule_model,@attr_comparable)
|
|
17
|
+
raise Forcast::Application::Error::General.new(t("error_unique_rule")) unless Rule.validate_rule_duplicate(nil)
|
|
18
|
+
raise Forcast::Application::Error::General.new(t("error_rule_model_rule_type_dont_permit")) unless Rule.rules_type_allowed.include?(@rule_type)
|
|
19
|
+
if @rule_type == 'logic'
|
|
20
|
+
raise Forcast::Application::Error::General.new(t("error_rule_model_rule_dont_permit")) unless Rule.rules_allowed.include?(@rule)
|
|
21
|
+
raise Forcast::Application::Error::General.new(t("error_rule_model_rule_class_dont_permit")) unless Rule.rules_class_allowed.include?(@rule_class)
|
|
22
|
+
raise Forcast::Application::Error::General.new(t("error_rule_model_rule_and_class_dont_permit")) unless Rule.validate_rule_and_class(@rule,@rule_class,params)
|
|
23
|
+
params[:rule_class] = @rule_class
|
|
24
|
+
end
|
|
25
|
+
params[:active?] = true
|
|
26
|
+
super
|
|
27
|
+
else
|
|
28
|
+
json_response(compatibles_rules,"ok")
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def update
|
|
33
|
+
case @variable
|
|
34
|
+
when "value"
|
|
35
|
+
attr_comparable = @model_id.attr_comparable
|
|
36
|
+
rule_model = @model_id.rule_model
|
|
37
|
+
model = rule_model.classify.constantize
|
|
38
|
+
rule_class = model.columns_hash["#{attr_comparable}"].type.to_s
|
|
39
|
+
@variable = Rule.validate_class_update(rule_class)
|
|
40
|
+
params[:variable] = @variable
|
|
41
|
+
when "attr_comparable"
|
|
42
|
+
@attr_comparable = @model_id.attr_comparable
|
|
43
|
+
rule_model = @model_id.rule_model
|
|
44
|
+
raise Forcast::Application::Error::General.new(t("error_rule_model_attr_doesn't_exist")) unless Rule.validate_attr_model(rule_model,@dato)
|
|
45
|
+
@model_id.update_columns(:rule_class => @rule_class)
|
|
46
|
+
else
|
|
47
|
+
end
|
|
48
|
+
super
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def compatibles_rules
|
|
52
|
+
rules = Rule.where(:id => @rules)
|
|
53
|
+
raise Forcast::Application::Error::General.new(t("some_rule_is_missing")) unless @rules.size == rules.size
|
|
54
|
+
raise Forcast::Application::Error::General.new(t("rules_are_not_compatibles")) if rules.pluck(:rule_model,:rule_model_id).uniq.size > 1
|
|
55
|
+
raise Forcast::Application::Error::General.new(t("rule_can_not_be_comparable")) if rules.pluck(:rule_type).include?("logic_comparable")
|
|
56
|
+
rule_type = "logic_comparable"
|
|
57
|
+
return combine_rules(rules, rule_type)
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def combine_rules(rules,rule_type)
|
|
61
|
+
puts "combine_rules"
|
|
62
|
+
raise Forcast::Application::Error::General.new(t("invalid_combine_type_rule")) unless Rule.valid_combine_type.include?(@combine_type)
|
|
63
|
+
first_rule = rules.first
|
|
64
|
+
@attr_comparable = "rules"
|
|
65
|
+
@rule_model = first_rule.rule_model
|
|
66
|
+
@rule_model_id = first_rule.rule_model_id
|
|
67
|
+
@rule = rules.pluck(:id)
|
|
68
|
+
@rule_class = "array"
|
|
69
|
+
@rule_type = rule_type
|
|
70
|
+
hash_new = Hash.new
|
|
71
|
+
hash_new["active?"] = false
|
|
72
|
+
hash_new["rule_model"] = @rule_model
|
|
73
|
+
hash_new["rule_model_id"] = @rule_model_id
|
|
74
|
+
hash_new["rule_type"] = @rule_type
|
|
75
|
+
hash_new["rule_class"] = @rule_class
|
|
76
|
+
hash_new["attr_comparable"] = @attr_comparable
|
|
77
|
+
hash_new["combine_type"] = @combine_type
|
|
78
|
+
hash_new["rule"] = @rule.join(',')
|
|
79
|
+
raise Forcast::Application::Error::General.new(t("error_unique_rule")) unless Rule.validate_rule_duplicate(hash_new)
|
|
80
|
+
@rule = Rule.create(hash_new)
|
|
81
|
+
return @rule
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
end
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
require 'active_support'
|
|
2
|
+
module Forcast
|
|
3
|
+
module Controller
|
|
4
|
+
module RuleEngine
|
|
5
|
+
module WebhookEngine
|
|
6
|
+
extend ActiveSupport::Concern
|
|
7
|
+
|
|
8
|
+
included do
|
|
9
|
+
before_action :set_model_rule_and_model_id_rule, only: [:create]
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def create
|
|
13
|
+
params[:webhook_model] = @webhook_model
|
|
14
|
+
params[:execute?] = true
|
|
15
|
+
params[:send?] = true
|
|
16
|
+
params[:duration_time] ||= 10
|
|
17
|
+
params[:send_time] ||= 10
|
|
18
|
+
model_id = super
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def set_model_rule_and_model_id_rule
|
|
22
|
+
puts "set_modelo_and_modelo_id"
|
|
23
|
+
rule = Rule.find(@rule_id)
|
|
24
|
+
raise Forcast::Application::Error::General.new(t("webhook_exist")) if Webhook.duplicate_object?(object_duplicate_params)
|
|
25
|
+
rule.update_columns(:last_value_attr_comparable => nil)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def object_duplicate_params
|
|
29
|
+
comp = Hash.new
|
|
30
|
+
comp["rule_id"] = @rule_id
|
|
31
|
+
return comp
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
require "forcast/controllers/controller/rule_engine/action_engine"
|
|
2
|
+
require "forcast/controllers/controller/rule_engine/rule_engine"
|
|
3
|
+
require "forcast/controllers/controller/rule_engine/polling_engine"
|
|
4
|
+
require "forcast/controllers/controller/rule_engine/webhook_engine"
|
|
5
|
+
require "forcast/controllers/controller/rule_engine/rule_controller"
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
require 'sidekiq'
|
|
2
|
+
require 'active_job'
|
|
3
|
+
include Sidekiq::Worker
|
|
4
|
+
|
|
5
|
+
module Forcast
|
|
6
|
+
module Jobs
|
|
7
|
+
module JobsAssets
|
|
8
|
+
class ClearAssests < ActiveJob::Base
|
|
9
|
+
sidekiq_options queue: 'manage_assets'
|
|
10
|
+
def perform (folder)
|
|
11
|
+
system("cd #{folder}")
|
|
12
|
+
#Borro ultimo archivo
|
|
13
|
+
system("ls -t -r | head -1 | xargs rm")
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
class SyncAssests < ActiveJob::Base
|
|
18
|
+
sidekiq_options queue: 'manage_assets'
|
|
19
|
+
def perform (array)
|
|
20
|
+
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|