ish_models 3.0.0.1 → 3.1.0.1

Sign up to get free protection for your applications and to get access to all the features.
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