ish_models 3.0.0.1 → 3.1.0.1

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 (77) hide show
  1. checksums.yaml +4 -4
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +28 -0
  4. data/Rakefile +15 -0
  5. data/app/assets/config/ish_models_manifest.js +1 -0
  6. data/app/assets/stylesheets/ish_models/application.css +15 -0
  7. data/app/controllers/ish_models/application_controller.rb +4 -0
  8. data/app/helpers/ish_models/application_helper.rb +4 -0
  9. data/app/jobs/ish_models/application_job.rb +4 -0
  10. data/app/mailers/ish_models/application_mailer.rb +6 -0
  11. data/app/models/ish_models/application_record.rb +5 -0
  12. data/app/views/layouts/ish_models/application.html.erb +15 -0
  13. data/config/routes.rb +2 -0
  14. data/lib/ish_models/engine.rb +5 -0
  15. data/lib/ish_models/version.rb +3 -0
  16. data/lib/ish_models.rb +5 -93
  17. data/lib/tasks/ish_models_tasks.rake +4 -0
  18. data/lib/{office/admin_message.rb → wco/profile.rb} +2 -5
  19. metadata +42 -165
  20. data/lib/address.rb +0 -20
  21. data/lib/feature.rb +0 -32
  22. data/lib/gallery.rb +0 -66
  23. data/lib/gameui/asset3d.rb +0 -33
  24. data/lib/gameui/map.rb +0 -260
  25. data/lib/gameui/map_bookmark.rb +0 -9
  26. data/lib/gameui/marker.rb +0 -128
  27. data/lib/iro/option_watch.rb +0 -72
  28. data/lib/ish/cache_key.rb +0 -14
  29. data/lib/ish/configuration.rb +0 -11
  30. data/lib/ish/crawler.rb +0 -26
  31. data/lib/ish/email_campaign.rb +0 -55
  32. data/lib/ish/email_context.rb +0 -113
  33. data/lib/ish/email_template.rb +0 -115
  34. data/lib/ish/email_unsubscribe.rb +0 -19
  35. data/lib/ish/event.rb +0 -20
  36. data/lib/ish/image_asset.rb +0 -38
  37. data/lib/ish/invoice.rb +0 -130
  38. data/lib/ish/lorem_ipsum.rb +0 -30
  39. data/lib/ish/meeting.rb +0 -31
  40. data/lib/ish/payment.rb +0 -29
  41. data/lib/ish/premium_item.rb +0 -13
  42. data/lib/ish/railtie.rb +0 -8
  43. data/lib/ish/user_profile.rb +0 -149
  44. data/lib/ish/utils.rb +0 -45
  45. data/lib/mongoid/votable.rb +0 -247
  46. data/lib/mongoid/voter.rb +0 -96
  47. data/lib/newsitem.rb +0 -94
  48. data/lib/office/action.rb +0 -32
  49. data/lib/office/action_tie.rb +0 -16
  50. data/lib/office/directmail_envelope.rb +0 -51
  51. data/lib/office/email_action.rb +0 -34
  52. data/lib/office/email_action_tie.rb +0 -18
  53. data/lib/office/email_attachment.rb +0 -12
  54. data/lib/office/email_conversation.rb +0 -102
  55. data/lib/office/email_conversation_lead.rb +0 -11
  56. data/lib/office/email_conversation_tag.rb +0 -14
  57. data/lib/office/email_filter.rb +0 -45
  58. data/lib/office/email_message.rb +0 -192
  59. data/lib/office/email_message_stub.rb +0 -22
  60. data/lib/office/emailtag.rb +0 -27
  61. data/lib/office/emailtag_email_conversation.rb +0 -10
  62. data/lib/office/lead_action.rb +0 -24
  63. data/lib/office/lead_action_template.rb +0 -47
  64. data/lib/office/obfuscated_redirect.rb +0 -12
  65. data/lib/office/scheduled_email_action.rb +0 -62
  66. data/lib/photo.rb +0 -87
  67. data/lib/report.rb +0 -65
  68. data/lib/video.rb +0 -91
  69. data/lib/wco/appliance.rb +0 -52
  70. data/lib/wco/appliance_tmpl.rb +0 -56
  71. data/lib/wco/dns_domain.rb +0 -23
  72. data/lib/wco/email_conversation_lead.rb +0 -10
  73. data/lib/wco/leadset.rb +0 -26
  74. data/lib/wco/price.rb +0 -30
  75. data/lib/wco/product.rb +0 -35
  76. data/lib/wco/serverhost.rb +0 -140
  77. data/lib/wco/subscription.rb +0 -25
@@ -1,149 +0,0 @@
1
-
2
- require 'ish/utils'
3
- require 'mongoid/votable'
4
-
5
- ##
6
- ## It explicitly doesn't have a relation to user! Use email as key.
7
- ##
8
- class Ish::UserProfile
9
- include Mongoid::Document
10
- include Mongoid::Timestamps
11
- include Mongoid::Voter
12
- include Ish::Utils
13
-
14
- store_in collection: 'ish_user_profiles'
15
-
16
- field :email
17
- validates_format_of :email,:with => /\A[^@\s]+@([^@\s]+\.)+[^@\s]+\z/
18
- validates_uniqueness_of :email
19
-
20
- field :name
21
-
22
- def export_fields
23
- %w|
24
- email
25
- role_name
26
- |
27
- end
28
-
29
- field :scratchpad, default: ''
30
-
31
- field :lang, default: 'en'
32
-
33
- field :leadset_id, type: Integer ## old sql
34
- belongs_to :leadset, class_name: '::Wco::Leadset'
35
-
36
- ##
37
- ## PiousboxCRM, Email:
38
- ##
39
- # has_many :lead_ties, class_name: '::Wco::EmailConversationLead' ## need to name it better.
40
-
41
- ##
42
- ## wco hosting:
43
- ##
44
-
45
- ## 2023-08-21 _vp_ @TODO: change:
46
- # def next_serverhost
47
- # ::Wco::Serverhost.where({ leadset_id: leadset_id }).first
48
- # end
49
-
50
- ROLE_GUY = :guy
51
- ROLE_MANAGER = :manager
52
- ROLE_ADMIN = :admin
53
- ROLES = [ :guy, :manager, :admin ]
54
- field :role_name, :type => Symbol, default: :guy
55
-
56
- has_one :profile_photo, inverse_of: :profile_city, class_name: 'Photo'
57
- has_many :galleries, inverse_of: :user_profile
58
- has_and_belongs_to_many :shared_galleries, inverse_of: :shared_profiles, class_name: 'Gallery'
59
- has_and_belongs_to_many :shared_markers, inverse_of: :shared_profiles, class_name: 'Gameui::Marker'
60
- has_and_belongs_to_many :shared_locations, inverse_of: :shared_profiles, class_name: 'Gameui::Map'
61
- has_and_belongs_to_many :shared_reports, inverse_of: :shared_profiles, class_name: '::Report'
62
- has_and_belongs_to_many :shared_videos, inverse_of: :shared_profiles, class_name: '::Video'
63
- has_many :my_markers, inverse_of: :creator_profile, class_name: 'Gameui::Marker'
64
- has_many :my_locations, inverse_of: :creator_profile, class_name: 'Gameui::Map'
65
- has_many :invoices, class_name: '::Ish::Invoice'
66
- has_many :photos
67
- has_many :reports, inverse_of: :user_profile
68
- has_many :videos, inverse_of: :user_profile
69
- has_many :newsitems, inverse_of: :profile
70
- has_and_belongs_to_many :friends, :class_name => '::Ish::UserProfile', inverse_of: :friendeds
71
- has_and_belongs_to_many :friendeds, :class_name => '::Ish::UserProfile', inverse_of: :friends
72
-
73
-
74
- def sudoer?
75
- %w( piousbox@gmail.com victor@wasya.co ).include?( self.email )
76
- end
77
-
78
- def self.list
79
- out = self.all
80
- [['', nil]] + out.map { |item| [ item.email, item.id ] }
81
- end
82
- # def self.list_lg
83
- # out = self.all
84
- # [['', nil]] + out.map { |item| [ "#{item.email} :: #{item.name}", item.id ] }
85
- # end
86
-
87
- field :n_unlocks, type: Integer, default: 0
88
-
89
- has_many :payments, :class_name => '::Ish::Payment'
90
- has_many :subscriptions, class_name: '::Wco::Subscription', inverse_of: :profile
91
-
92
- def has_premium_purchase item
93
- payments.confirmed.where( item: item ).exists?
94
- end
95
-
96
- field :is_purchasing, type: Boolean, default: false
97
-
98
- field :customer_id # stripe
99
-
100
- def customer_id
101
- if !self[:customer_id]
102
- # return nil if !email
103
- existing = Stripe::Customer.search({ query: "email: '#{email}'" })
104
- # puts! existing, 'existing'
105
- if existing.data.present?
106
- update_attributes( customer_id: existing.data[0][:id] )
107
- else
108
- customer = Stripe::Customer.create({ email: email })
109
- # puts! customer, 'customer'
110
- update_attributes( customer_id: customer[:id] )
111
- end
112
- end
113
- self[:customer_id]
114
- end
115
-
116
- # used in rake tasks
117
- def self.generate delta
118
- email = delta[:email]
119
- password = delta[:password]
120
- role_name = delta[:role_name]
121
-
122
- profile = Ish::UserProfile.where( email: email ).first
123
- if profile
124
- return
125
- end
126
-
127
- user = User.where( email: email ).first
128
- if !user
129
- user = User.new({ email: email, password: password })
130
- end
131
- profile = Ish::UserProfile.new({
132
- email: email,
133
- role_name: role_name,
134
- })
135
- profile.save
136
-
137
- if profile.persisted?
138
- ;
139
- else
140
- puts! profile.errors.full_messages, "Cannot save profile"
141
- end
142
- end
143
-
144
- field :per_page, type: Integer, default: 100
145
-
146
- end
147
-
148
- Profile = Ish::UserProfile
149
- Wco::Lead = Ish::UserProfile
data/lib/ish/utils.rb DELETED
@@ -1,45 +0,0 @@
1
-
2
- module Ish::Utils
3
-
4
- def export
5
- out = {}
6
- %w| created_at updated_at |.map do |f|
7
- out[f] = send(f)
8
- end
9
- export_fields.map do |field|
10
- if field[-3..-1] == '_id'
11
- out[field] = send(field).to_s
12
- else
13
- out[field] = send(field)
14
- end
15
- end
16
- out[:_id] = id.to_s
17
- out.with_indifferent_access
18
- end
19
-
20
- private
21
-
22
- def set_slug
23
- return if slug
24
- if name
25
- new_slug = name.downcase.gsub(/[^a-z0-9\s]/i, '').gsub(' ', '-')
26
- else
27
- new_slug = '1'
28
- end
29
- if self.class.where( slug: new_slug ).first
30
- loop do
31
- if new_slug[new_slug.length-1].to_i != 0
32
- # inrement last digit
33
- last_digit = new_slug[new_slug.length-1].to_i
34
- new_slug = "#{new_slug[0...new_slug.length-1]}#{last_digit+1}"
35
- else
36
- # add '-1' to the end
37
- new_slug = "#{new_slug}-1"
38
- end
39
- break if !self.class.where( slug: new_slug ).first
40
- end
41
- end
42
- self.slug = new_slug
43
- end
44
-
45
- end
@@ -1,247 +0,0 @@
1
- module Mongoid
2
- module Votable
3
- extend ActiveSupport::Concern
4
-
5
- # How many points should be assigned for each up or down vote.
6
- # This array should be manipulated using Votable.vote_point method
7
- VOTE_POINT = {}
8
-
9
- included do
10
- field :votable, type: Hash
11
-
12
- index({ "votable.votes_count" => 1 })
13
- index({ "votable.votes_point" => 1 })
14
-
15
- scope :most_voted, -> { order_by(["votable.votes_count", :desc]) }
16
- scope :best_voted, -> { order_by(["votable.votes_point", :desc]) }
17
-
18
- # Set vote point for each up (down) vote on an object of this class
19
- def self.vote_point(klass = self, options = nil)
20
- VOTE_POINT[self.name] ||= {}
21
- VOTE_POINT[self.name][klass.name] ||= options
22
- end
23
-
24
- #
25
- # We usually need to show current_user his voting value on votable object
26
- # voting value can be nil (not voted yet), :up or :down
27
- # from voting value, we can decide it should be new vote or revote with :up or :down
28
- # In this case, validation can be skip to maximize performance
29
- #
30
- # Make a vote on an object of this class
31
- #
32
- # @param [Hash] options a hash containings:
33
- # - :votee_id: the votee document id
34
- # - :voter_id: the voter document id
35
- # - :value: :up or :down
36
- # - :revote: change from vote up to vote down
37
- # - :unvote: unvote the vote value (:up or :down)
38
- #
39
- def self.vote(options)
40
- options.symbolize_keys!
41
- value = options[:value]
42
- votee_id = options[:votee_id]
43
- voter_id = options[:voter_id]
44
-
45
- klass = options[:class]
46
- klass ||= VOTE_POINT.keys.include?(name) ? name : collection.name.classify
47
- value_point = VOTE_POINT[klass][klass]
48
-
49
- if options[:revote]
50
- if value == :up
51
- positive_field = :up_voter_ids
52
- negative_field = :down_voter_ids
53
- point_delta = value_point[:up] - value_point[:down]
54
- else
55
- positive_field = :down_voter_ids
56
- negative_field = :up_voter_ids
57
- point_delta = -value_point[:up] + value_point[:down]
58
- end
59
-
60
- update_result = collection.update_one({
61
- # Validate voter_id did a vote with value for votee_id
62
- :_id => votee_id,
63
- "votable.#{positive_field.to_s}" => { '$ne' => voter_id },
64
- "votable.#{negative_field.to_s}" => voter_id
65
- }, {
66
- # then update
67
- '$pull' => { "votable.#{negative_field.to_s}" => voter_id },
68
- '$push' => { "votable.#{positive_field.to_s}" => voter_id },
69
- '$inc' => {
70
- "votable.votes_point" => point_delta
71
- }
72
- }, {
73
- :safe => true
74
- })
75
-
76
- elsif options[:unvote]
77
- if value == :down
78
- positive_field = :down_voter_ids
79
- negative_field = :up_voter_ids
80
- else
81
- positive_field = :up_voter_ids
82
- negative_field = :down_voter_ids
83
- end
84
-
85
- # Check if voter_id did a vote with value for votee_id
86
- update_result = collection.update_one({
87
- # Validate voter_id did a vote with value for votee_id
88
- :_id => votee_id,
89
- "votable.#{negative_field.to_s}" => { '$ne' => voter_id },
90
- "votable.#{positive_field.to_s}" => voter_id
91
- }, {
92
- # then update
93
- '$pull' => { "votable.#{positive_field.to_s}" => voter_id },
94
- '$inc' => {
95
- "votable.votes_count" => -1,
96
- "votable.votes_point" => -value_point[value]
97
- }
98
- }, {
99
- :safe => true
100
- })
101
-
102
- else # new vote
103
- if value == :up
104
- positive_field = :up_voter_ids
105
- else
106
- positive_field = :down_voter_ids
107
- end
108
-
109
- update_result = collection.update_one({
110
- # Validate voter_id did not vote for votee_id yet
111
- :_id => votee_id,
112
- "votable.up_voter_ids" => { '$ne' => voter_id },
113
- "votable.down_voter_ids" => { '$ne' => voter_id }
114
- }, {
115
- # then update
116
- '$push' => { "votable.#{positive_field.to_s}" => voter_id },
117
- '$inc' => {
118
- "votable.votes_count" => +1,
119
- "votable.votes_point" => value_point[value] }
120
- }, {
121
- :safe => true
122
- })
123
- end
124
-
125
- # Only update parent class if votee is updated successfully
126
- success = ( update_result.documents[0]['err'] == nil and
127
- update_result.documents[0]['nModified'] == 1 and
128
- update_result.documents[0]['n'] == 1 )
129
-
130
- if success
131
- VOTE_POINT[klass].each do |class_name, value_point|
132
- # For other class in VOTE_POINT options, if is parent of current class
133
- next unless relation_metadata = relations[class_name.underscore]
134
- votee ||= options[:votee] || find(options[:votee_id])
135
- # If can find current votee foreign_key value for that class
136
- next unless foreign_key_value = votee.read_attribute(relation_metadata.foreign_key.to_sym)
137
-
138
- # Update that class / collection
139
- inc_options = if options[:revote]
140
- {
141
- "votable.votes_point" => ( value == :up ?
142
- value_point[:up] - value_point[:down] :
143
- -value_point[:up] + value_point[:down] )
144
- }
145
- elsif options[:unvote]
146
- {
147
- "votable.votes_count" => value_point[:not_increase_votes_count] ? 0 : -1,
148
- "votable.votes_point" => -value_point[value]
149
- }
150
- else
151
- {
152
- "votable.votes_count" => value_point[:not_increase_votes_count] ? 0 : 1,
153
- "votable.votes_point" => value_point[value]
154
- }
155
- end
156
-
157
- class_name.constantize.collection.update_one(
158
- { :_id => foreign_key_value },
159
- { '$inc' => inc_options }
160
- )
161
- end
162
- end
163
-
164
- success
165
- end
166
-
167
- end
168
-
169
- # Make a vote on this votee
170
- #
171
- # @param [Hash] options a hash containings:
172
- # - :voter_id: the voter document id
173
- # - :value: vote :up or vote :down
174
- def vote(options)
175
- options[:votee_id] ||= _id
176
- options[:votee] ||= self
177
-
178
- if options[:unvote]
179
- options[:value] ||= vote_value(options[:voter_id])
180
- else
181
- options[:revote] ||= !vote_value(options[:voter_id]).nil?
182
- end
183
-
184
- self.class.vote(options)
185
- end
186
-
187
- # Get a voted value on this votee
188
- #
189
- # Let's NOT CONVERT bson::objectid's to strings. _vp_ 2022-08-31
190
- #
191
- # @param [Mongoid Object, BSON::ObjectId] voter is Mongoid object the id of the voter who made the vote
192
- def vote_value(voter)
193
- ## The last last one, voter.id not voter.id.to_s _vp_ 2022-09-19
194
- voter_id = voter.is_a?(BSON::ObjectId) ? voter : voter.is_a?(String) ? voter : voter.id
195
-
196
- return :up if up_voter_ids.try(:include?, voter_id)
197
- return :down if down_voter_ids.try(:include?, voter_id)
198
- end
199
-
200
- # Get the number of up votes
201
- def up_votes_count
202
- up_voter_ids.length
203
- end
204
-
205
- # Get the number of down votes
206
- def down_votes_count
207
- down_voter_ids.length
208
- end
209
-
210
- # Get the number of votes count
211
- def votes_count
212
- if self.has_attribute?(:votable)
213
- self["votable"]["votes_count"]
214
- else
215
- 0
216
- end
217
- end
218
-
219
- # Get the votes point
220
- def votes_point
221
- if self.has_attribute?(:votable)
222
- self["votable"]["votes_point"]
223
- else
224
- 0
225
- end
226
- end
227
- alias :votes_score :votes_point
228
-
229
- # Array of up voter ids
230
- def up_voter_ids
231
- if self.has_attribute?(:votable)
232
- self['votable']["up_voter_ids"]
233
- else
234
- []
235
- end
236
- end
237
-
238
- # Array of down voter ids
239
- def down_voter_ids
240
- if self.has_attribute?(:votable)
241
- self["votable"]["down_voter_ids"]
242
- else
243
- []
244
- end
245
- end
246
- end
247
- end
data/lib/mongoid/voter.rb DELETED
@@ -1,96 +0,0 @@
1
- module Mongoid
2
- module Voter
3
- extend ActiveSupport::Concern
4
-
5
- # Get list of voted votees
6
- #
7
- # @param [Class] klass the votee class, e.g. `Post` or `Comment`
8
- # @return [Array, nil] an array of votable objects voted by this voter
9
- def votees(klass)
10
- # Is this id, or id.to_s ?
11
- # let's not convert to string, lets use bson::objectid.
12
- # _vp_ 2022-08-31
13
- klass.any_of({ "votable.up_voter_ids" => _id }, { "votable.down_voter_ids" => _id })
14
- end
15
-
16
- # Check to see if this voter voted on the votee or not
17
- #
18
- # @param [Hash, Object] options the hash containing the votee, or the votee itself
19
- # @return [true, false] true if voted, false otherwise
20
- def voted?(options)
21
- unless options.is_a?(Hash)
22
- votee_class = options.class
23
- votee_id = options._id
24
- else
25
- votee = options[:votee]
26
- if votee
27
- votee_class = votee.class
28
- votee_id = votee._id
29
- else
30
- votee_class = options[:votee_type].classify.constantize
31
- votee_id = options[:votee_id]
32
- end
33
- end
34
-
35
- votees(votee_class).where(:_id => votee_id).count == 1
36
- end
37
-
38
- # Get the voted value on a votee
39
- #
40
- # @param (see #voted?)
41
- # @return [Symbol, nil] :up or :down or nil if not voted
42
- def vote_value(options)
43
- votee = unless options.is_a?(Hash)
44
- options
45
- else
46
- options[:votee] || options[:votee_type].classify.constantize.only(:up_vote_ids, :down_vote_ids).where(
47
- :_id => options[:votee_id]
48
- ).first
49
- end
50
- votee.vote_value(_id)
51
- end
52
-
53
- # Cancel the vote on a votee
54
- #
55
- # @param [Object] votee the votee to be unvoted
56
- def unvote(options)
57
- unless options.is_a?(Hash)
58
- options = { :votee => options }
59
- end
60
- options[:unvote] = true
61
- options[:revote] = false
62
- vote(options)
63
- end
64
-
65
- # Vote on a votee
66
- #
67
- # @param (see #voted?)
68
- # @param [:up, :down] vote_value vote up or vote down, nil to unvote
69
- def vote(options, value = nil)
70
- if options.is_a?(Hash)
71
- votee = options[:votee]
72
- else
73
- votee = options
74
- options = { :votee => votee, :value => value }
75
- end
76
-
77
- if votee
78
- options[:votee_id] = votee._id
79
- votee_class = votee.class
80
- else
81
- votee_class = options[:votee_type].classify.constantize
82
- end
83
-
84
- if options[:value].nil?
85
- options[:unvote] = true
86
- options[:value] = vote_value(options)
87
- else
88
- options[:revote] = options.has_key?(:revote) ? !options[:revote].blank? : voted?(options)
89
- end
90
-
91
- options[:voter_id] = _id
92
-
93
- ( votee || votee_class ).vote(options)
94
- end
95
- end
96
- end
data/lib/newsitem.rb DELETED
@@ -1,94 +0,0 @@
1
-
2
- require 'ish/utils'
3
-
4
- # require_relative './mongoid/votable.rb'
5
-
6
- class Newsitem
7
- include Mongoid::Document
8
- include Mongoid::Timestamps
9
- include Ish::Utils
10
-
11
- include Mongoid::Votable
12
- vote_point self, :up => +1, :down => -1
13
-
14
- belongs_to :gallery, optional: true # seems correct. _vp_ 2022-03-21
15
- def gallery
16
- self.gallery_id ? Gallery.unscoped.find( self.gallery_id ) : nil
17
- end
18
- belongs_to :map, optional: true, class_name: '::Gameui::Map'
19
- belongs_to :profile, optional: true, class_name: '::Ish::UserProfile'
20
- belongs_to :photo, optional: true
21
- belongs_to :report, optional: true
22
- belongs_to :video, optional: true
23
-
24
- field :name
25
- field :descr
26
- def description; descr; end
27
- field :subhead
28
-
29
- field :weight, :type => Integer, :default => 10
30
- field :n_upvotes, :type => Integer, :default => 0
31
- field :n_downvotes, :type => Integer, :default => 0
32
- field :upvoting_users, :type => Array, :default => []
33
- field :downvoting_users, :type => Array, :default => []
34
-
35
- field :image_path # @deprecated ?
36
- field :link_path # @deprecated ?
37
- field :iframe_src
38
-
39
- ## This is used.
40
- TYPE_GALLERY = :type_gallery
41
- TYPE_PHOTO = :type_photo
42
- TYPE_REPORT = :type_report
43
- TYPE_VIDEO = :type_video
44
- def item_type
45
- return TYPE_GALLERY if gallery_id
46
- return TYPE_PHOTO if photo_id
47
- return TYPE_REPORT if report_id
48
- return TYPE_VIDEO if video_id
49
- end
50
-
51
- default_scope ->{ order_by({ :created_at => :desc }) }
52
-
53
- def self.from_params item
54
- n = Newsitem.new
55
- n.descr = item[:descr]
56
- n.username = item[:username]
57
-
58
- unless item[:report_id].blank?
59
- n.report = Report.find item[:report_id]
60
- end
61
-
62
- unless item[:gallery_id].blank?
63
- n.gallery = Gallery.find item[:gallery_id]
64
- end
65
-
66
- n.partial_name = item.partial_name unless item.partial_name.blank?
67
-
68
- return n
69
- end
70
-
71
- def export_fields
72
- %w|
73
- descr
74
- name
75
-
76
- image_path
77
- link_path
78
-
79
- map_id
80
- gallery_id
81
- photo_id
82
- report_id
83
- video_id
84
- |
85
- end
86
-
87
- def collect export_object
88
- export_object[:galleries][gallery.id.to_s] = gallery.id.to_s if gallery
89
- export_object[:photos][photo.id.to_s] = photo.id.to_s if photo
90
- export_object[:reports][report.id.to_s] = report.id.to_s if report
91
- export_object[:videos][video.id.to_s] = video.id.to_s if video
92
- end
93
-
94
- end
data/lib/office/action.rb DELETED
@@ -1,32 +0,0 @@
1
-
2
- ##
3
- ## 2023-09-13 _vp_ I don't know if it's even used.
4
- ##
5
- class Office::Action
6
- include Mongoid::Document
7
- include Mongoid::Timestamps
8
- store_in collection: 'office_actions'
9
-
10
- field :slug, type: :string
11
- validates :slug, uniqueness: true, allow_nil: true
12
-
13
- field :descr, type: :string ## optional
14
-
15
-
16
- STATE_ACTIVE = 'active'
17
- STATE_INACTIVE = 'inactive'
18
- STATES = [ STATE_ACTIVE, STATE_INACTIVE ]
19
- field :state, type: :string
20
- scope :active, ->{ where( state: STATE_ACTIVE ) }
21
-
22
-
23
- has_many :ties, class_name: '::Office::ActionTie', inverse_of: :office_action
24
- has_many :prev_ties, class_name: '::Office::ActionTie', inverse_of: :next_office_action
25
- accepts_nested_attributes_for :ties
26
-
27
- field :action_exe, type: :string
28
-
29
- field :perform_at, type: :time
30
-
31
- end
32
- OAct = Office::Action
@@ -1,16 +0,0 @@
1
-
2
- class Office::ActionTie
3
- include Mongoid::Document
4
- include Mongoid::Timestamps
5
- store_in collection: 'office_action_ties'
6
-
7
- attr_accessor :to_delete
8
-
9
- belongs_to :office_action, class_name: '::Office::Action', inverse_of: :ties
10
- belongs_to :next_office_action, class_name: '::Office::Action', inverse_of: :prev_ties
11
-
12
- field :next_at_exe, type: :string
13
- validates :next_at_exe, presence: true
14
-
15
- end
16
- OActie = Office::ActionTie