Module: Maestrano::Connector::Rails::Concerns::Organization
- Extended by:
- ActiveSupport::Concern
- Included in:
- Organization
- Defined in:
- app/models/maestrano/connector/rails/concerns/organization.rb
Defined Under Namespace
Modules: ClassMethods
Instance Method Summary collapse
- #add_member(user) ⇒ Object
- #clear_omniauth ⇒ Object
- #displayable_synchronized_entities ⇒ Object
-
#enable_historical_data(enabled) ⇒ Object
Enable historical data sharing (prior to account linking).
- #from_omniauth(auth) ⇒ Object
- #historical_not_enabled_and_not_first_sync ⇒ Object
- #initialize(attributes = nil, options = {}) ⇒ Object
- #last_successful_synchronization ⇒ Object
- #last_synchronization_date ⇒ Object
- #last_three_synchronizations_failed? ⇒ Boolean
- #member?(user) ⇒ Boolean
- #push_to_connec_enabled?(entity) ⇒ Boolean
- #push_to_external_enabled?(entity) ⇒ Boolean
- #remove_member(user) ⇒ Object
- #reset_synchronized_entities(default = false) ⇒ Object
Instance Method Details
#add_member(user) ⇒ Object
84 85 86 |
# File 'app/models/maestrano/connector/rails/concerns/organization.rb', line 84 def add_member(user) user_organization_rels.create(user: user) if tenant == user.tenant && !member?(user) end |
#clear_omniauth ⇒ Object
105 106 107 108 109 110 111 |
# File 'app/models/maestrano/connector/rails/concerns/organization.rb', line 105 def clear_omniauth self.oauth_uid = nil self.oauth_token = nil self.refresh_token = nil self.sync_enabled = false save end |
#displayable_synchronized_entities ⇒ Object
69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
# File 'app/models/maestrano/connector/rails/concerns/organization.rb', line 69 def displayable_synchronized_entities result = {} synchronized_entities.each do |entity, hash| begin # Transform entity name from entities_list to class name # ex. :item => Entities::Item clazz = "Entities::#{entity.to_s.titleize.tr(' ', '')}".constantize rescue next end result[entity] = {connec_name: clazz.public_connec_entity_name, external_name: clazz.public_external_entity_name}.merge(hash) end result end |
#enable_historical_data(enabled) ⇒ Object
Enable historical data sharing (prior to account linking)
114 115 116 117 118 119 120 121 122 123 124 |
# File 'app/models/maestrano/connector/rails/concerns/organization.rb', line 114 def enable_historical_data(enabled) # Historical data sharing cannot be unset return if historical_data if enabled self.date_filtering_limit = nil self.historical_data = true else self.date_filtering_limit ||= Time.now.getlocal end end |
#from_omniauth(auth) ⇒ Object
96 97 98 99 100 101 102 103 |
# File 'app/models/maestrano/connector/rails/concerns/organization.rb', line 96 def from_omniauth(auth) self.oauth_provider = auth.provider self.oauth_uid = auth.uid self.oauth_token = auth.credentials.token self.refresh_token = auth.credentials.refresh_token self.instance_url = auth.credentials.instance_url save end |
#historical_not_enabled_and_not_first_sync ⇒ Object
139 140 141 |
# File 'app/models/maestrano/connector/rails/concerns/organization.rb', line 139 def historical_not_enabled_and_not_first_sync !historical_data && synchronizations&.first&.created_at end |
#initialize(attributes = nil, options = {}) ⇒ Object
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'app/models/maestrano/connector/rails/concerns/organization.rb', line 48 def initialize(attributes = nil, = {}) super(attributes, ) self.synchronized_entities = {} Maestrano::Connector::Rails::External.entities_list.each do |entity| begin # Transform entity name from entities_list to class name # ex. :item => Entities::Item clazz = "Entities::#{entity.to_s.titleize.tr(' ', '')}".constantize rescue clazz = nil end # Check if Entity or ComplexEntity and set entity_push_to_connec and entity_push_to_external entity_push_to_connec = clazz && clazz < Maestrano::Connector::Rails::Entity ? clazz.can_write_connec? : true entity_push_to_external = clazz && clazz < Maestrano::Connector::Rails::Entity ? clazz.can_write_external? : true synchronized_entities[entity.to_sym] = {can_push_to_connec: entity_push_to_connec, can_push_to_external: entity_push_to_external} end end |
#last_successful_synchronization ⇒ Object
131 132 133 |
# File 'app/models/maestrano/connector/rails/concerns/organization.rb', line 131 def last_successful_synchronization synchronizations.where(status: 'SUCCESS', partial: false).order(updated_at: :desc).first end |
#last_synchronization_date ⇒ Object
135 136 137 |
# File 'app/models/maestrano/connector/rails/concerns/organization.rb', line 135 def last_synchronization_date last_successful_synchronization&.updated_at || historical_not_enabled_and_not_first_sync || date_filtering_limit end |
#last_three_synchronizations_failed? ⇒ Boolean
126 127 128 129 |
# File 'app/models/maestrano/connector/rails/concerns/organization.rb', line 126 def last_three_synchronizations_failed? arr = synchronizations.last(3).map(&:error?) arr.count == 3 && arr.uniq == [true] end |
#member?(user) ⇒ Boolean
88 89 90 |
# File 'app/models/maestrano/connector/rails/concerns/organization.rb', line 88 def member?(user) user_organization_rels.where(user_id: user.id).count.positive? end |
#push_to_connec_enabled?(entity) ⇒ Boolean
158 159 160 |
# File 'app/models/maestrano/connector/rails/concerns/organization.rb', line 158 def push_to_connec_enabled?(entity) synchronized_entities.dig(Maestrano::Connector::Rails::EntityHelper.snake_name(entity), :can_push_to_connec) && entity&.class&.can_write_connec? end |
#push_to_external_enabled?(entity) ⇒ Boolean
162 163 164 |
# File 'app/models/maestrano/connector/rails/concerns/organization.rb', line 162 def push_to_external_enabled?(entity) synchronized_entities.dig(Maestrano::Connector::Rails::EntityHelper.snake_name(entity), :can_push_to_external) && entity&.class&.can_write_external? end |
#remove_member(user) ⇒ Object
92 93 94 |
# File 'app/models/maestrano/connector/rails/concerns/organization.rb', line 92 def remove_member(user) user_organization_rels.where(user_id: user.id).delete_all end |
#reset_synchronized_entities(default = false) ⇒ Object
143 144 145 146 147 148 149 150 151 152 153 154 155 156 |
# File 'app/models/maestrano/connector/rails/concerns/organization.rb', line 143 def reset_synchronized_entities(default = false) synchronized_entities.slice!(*Maestrano::Connector::Rails::External.entities_list.map(&:to_sym)) Maestrano::Connector::Rails::External.entities_list.each do |entity| if synchronized_entities[entity.to_sym].is_a?(Hash) can_push_to_external = synchronized_entities[entity.to_sym][:can_push_to_external] can_push_to_connec = synchronized_entities[entity.to_sym][:can_push_to_connec] else can_push_to_external = synchronized_entities[entity.to_sym] can_push_to_connec = synchronized_entities[entity.to_sym] end synchronized_entities[entity.to_sym] = {can_push_to_connec: (can_push_to_connec || default), can_push_to_external: (can_push_to_external || default)} end save end |