ish_models 0.0.33.191 → 0.0.33.193

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0d6a32875f72d683db8e0ceb5fe80d8e4ec97763069cd9b440d6dbf596186dfb
4
- data.tar.gz: c12b5d7614616ee9138a6349e330d76dd8856129c13836deca7cb40a06594ace
3
+ metadata.gz: 3fc895b3cb92cc734e59ab08fba5811a59ca160946065f741548a9d6cad80be6
4
+ data.tar.gz: 10d141e79f4b95490f217751152f117801b5ffb3543457f890ba89d3fe29b059
5
5
  SHA512:
6
- metadata.gz: 217723c9b7e8e728eec1faa918d79bca3134ccf3cd4a9115f0182f32dabcd5474c5ded002605999e99b8c5692452b911af6ad581dad8ddbc14a441bbc0521dda
7
- data.tar.gz: 5b79b4986bb4e3ab4be66350a6d3cf511fd395c5ea06d8266b3ced8114e42181856eb8a2452b646aa673cc2ceb187bdc81f5144d94d6d9b25fb77508e648c395
6
+ metadata.gz: 3e867c1540b0759257d40f318f0636dff5f537b1a4c3d727c83b0d8f905c12966c485885c60e48b23ebce496309a9c500b05800eb322712d10a59095fe09a168
7
+ data.tar.gz: cdca53cb93a7925c869a690347313040023ca6c0b840d934f8a3e6f40d344f2f15cd7df3477844b3751d3e062d87366e8fd712156f0f1b7889be1977a0a80e54
@@ -0,0 +1,6 @@
1
+
2
+ class ::Iro::OptionPriceItem < ActiveRecord::Base
3
+
4
+ self.table_name = 'iro_option_price_items'
5
+
6
+ end
@@ -0,0 +1,68 @@
1
+
2
+ #
3
+ # Sends a campaign.
4
+ # _vp_ 2023-02-02
5
+ #
6
+
7
+ class Ish::EmailCampaign
8
+ include Mongoid::Document
9
+ include Mongoid::Timestamps
10
+
11
+ field :title
12
+ def slug
13
+ title
14
+ end
15
+
16
+ PAGE_PARAM_NAME = 'email_contexts_page'
17
+
18
+ FROM_EMAILS = %w| hello@infiniteshelter.com no-reply@infiniteshelter.com
19
+ piousbox@gmail.com victor@piousbox.com no-reply@piousbox.com
20
+ admin@wasya.co hello@wasya.co no-reply@wasya.co victor@wasya.co |
21
+ field :from_email
22
+ validates_presence_of :from_email
23
+ def self.from_email_list
24
+ [ [nil, nil] ] + FROM_EMAILS.map { |i| [i, i] }
25
+ end
26
+
27
+ field :subject
28
+ validates_presence_of :subject
29
+
30
+ field :body
31
+ # validates_presence_of :body
32
+
33
+ belongs_to :email_template
34
+
35
+ field :sent_at, type: DateTime
36
+ field :send_at, type: DateTime
37
+
38
+ # def campaign_leads
39
+ # return ::EmailCampaignLead.where( email_campaign_id: self.id.to_s ).includes( :lead )
40
+ # end
41
+
42
+ # def leads
43
+ # campaign_leads&.map { |p| p.lead }
44
+ # end
45
+
46
+
47
+ ##
48
+ ## For templating:
49
+ ##
50
+ ## commonly: name, companyName
51
+ field :tmpl, type: Hash, default: {}
52
+ def body_templated
53
+ out = email_template.body
54
+ tmpl.each do |k, v|
55
+ out.gsub!("{#{k}}", v)
56
+ end
57
+ out
58
+ end
59
+
60
+ field :to_email
61
+ validates_presence_of :to_email, if: -> { type == TYPE_SINGLE }
62
+
63
+ #
64
+ # For tracking
65
+ #
66
+ attr_reader :tid
67
+
68
+ end
@@ -1,20 +1,23 @@
1
1
 
2
2
  #
3
- # Sends a single email, or a campaign.
3
+ # Sends a single email
4
4
  #
5
5
 
6
6
  class Ish::EmailContext
7
7
  include Mongoid::Document
8
8
  include Mongoid::Timestamps
9
9
 
10
- field :title
11
- def slug
12
- title
10
+ ## @TODO: probably rename it to slug
11
+ field :slug
12
+ validates_uniqueness_of :slug, allow_nil: true
13
+ def title
14
+ slug
13
15
  end
14
16
 
15
17
  PAGE_PARAM_NAME = 'email_contexts_page'
16
18
 
17
- FROM_EMAILS = %w| piousbox@gmail.com victor@piousbox.com no-reply@piousbox.com
19
+ FROM_EMAILS = %w| hello@infiniteshelter.com no-reply@infiniteshelter.com
20
+ piousbox@gmail.com victor@piousbox.com no-reply@piousbox.com
18
21
  admin@wasya.co hello@wasya.co no-reply@wasya.co victor@wasya.co |
19
22
  field :from_email
20
23
  validates_presence_of :from_email
@@ -22,6 +25,7 @@ class Ish::EmailContext
22
25
  [ [nil, nil] ] + FROM_EMAILS.map { |i| [i, i] }
23
26
  end
24
27
 
28
+ ## @deprecated, campaigns are now separate.
25
29
  TYPE_SINGLE = 'TYPE_SINGLE'
26
30
  TYPE_CAMPAIGN = 'TYPE_CAMPAIGN'
27
31
  field :type, default: TYPE_SINGLE
data/lib/ish_models.rb CHANGED
@@ -8,12 +8,14 @@ require 'kaminari/mongoid'
8
8
 
9
9
  class Gameui; end
10
10
 
11
+ module Iro; end
12
+ class Ish::InputError < RuntimeError; end
11
13
  module Ish; end
12
14
 
13
15
  # I need this thing for permissions???
14
16
  class Manager; end
15
17
 
16
- module Warbler; end
18
+ module Office; end
17
19
 
18
20
  module IshModels
19
21
 
@@ -44,12 +46,12 @@ require 'gameui/premium_purchase'
44
46
 
45
47
  require 'ish/cache_key'
46
48
  require 'ish/crawler'
49
+ require 'ish/email_campaign'
47
50
  require 'ish/email_context'
48
51
  require 'ish/email_template'
49
52
  require 'ish/email_unsubscribe'
50
53
  require 'ish/gallery_name'
51
54
  require 'ish/image_asset'
52
- require 'ish/input_error'
53
55
  require 'ish/invoice'
54
56
  require 'ish/lorem_ipsum'
55
57
  require 'ish/meeting'
@@ -63,6 +65,10 @@ require 'photo'
63
65
  require 'report'
64
66
  require 'video'
65
67
 
68
+ require 'office/action'
69
+ require 'office/email_message'
70
+
71
+
66
72
 
67
73
 
68
74
 
@@ -0,0 +1,44 @@
1
+
2
+ ##
3
+ ## Such actions as auto-responder.
4
+ ##
5
+ class Office::Action
6
+ include Mongoid::Document
7
+ include Mongoid::Timestamps
8
+
9
+ field :status, type: String, default: 'active'
10
+ field :channel, type: String ## eg 'email'
11
+ field :match_from, type: String ## eg '@synchrony.com', '*@synchrony.com$'
12
+
13
+ scope :active, -> { where( status: 'active' ) }
14
+
15
+ ## eg [ { 'method': 'create_lead', 'params': {} },
16
+ ## { 'method': 'autorespond', 'params': {}, ... ]
17
+ field :actions, type: Array, default: []
18
+
19
+ def self.create_lead params
20
+ msg = params[:msg]
21
+ leadset = Leadset.find_or_create_by({ company_url: msg.company_url })
22
+ lead = Lead.new({
23
+ email: msg.from_str,
24
+ name: msg.name,
25
+ leadset: leadset,
26
+ })
27
+ lead.save
28
+ end
29
+
30
+ def self.autorespond params
31
+ msg = params[:msg]
32
+ email_template = ::Ish::EmailTemplate.find_by!({ slug: '20230207-autorespond' })
33
+ email_ctx = ::Ish::EmailContext.new({
34
+ to_email: '',
35
+ subject: '',
36
+ from_email: '',
37
+ body: '',
38
+ email_template_id: email_template.id.to_s,
39
+ })
40
+ email_ctx.save!
41
+ IshManager::OfficeMailer.send_context_email( email_ctx ).deliver_later
42
+ end
43
+
44
+ end
@@ -0,0 +1,77 @@
1
+
2
+ ##
3
+ ## When I receive one.
4
+ ##
5
+ class Office::EmailMessage
6
+ include Mongoid::Document
7
+ include Mongoid::Timestamps
8
+
9
+ field :raw, type: :string
10
+ field :object_key, type: :string ## aka 'filename', use with bucket name + prefix
11
+ # validates_presence_of :object_key
12
+ field :object_path, type: :string ## A routable s3 url
13
+
14
+ field :subject
15
+ field :part_txt
16
+ field :part_html
17
+ # attachments ?
18
+
19
+ field :from, type: Array, default: []
20
+ def from_str
21
+ from.join(", ")
22
+ end
23
+
24
+ field :to, type: Array, default: []
25
+ field :cc, type: Array, default: []
26
+ field :bss, type: Array, default: []
27
+ field :date, type: DateTime
28
+ def received_at
29
+ date
30
+ end
31
+
32
+ ## @TODO: reimplement, look at footer instead.
33
+ def name
34
+ return 'associate'
35
+ # from[0].split('@')[0].upcase
36
+ end
37
+
38
+ def company_url
39
+ from[0].split('@')[1]
40
+ end
41
+
42
+ def process
43
+ Aws.config[:credentials] = Aws::Credentials.new(
44
+ ::S3_CREDENTIALS[:access_key_id],
45
+ ::S3_CREDENTIALS[:secret_access_key]
46
+ )
47
+ s3 = Aws::S3::Client.new
48
+
49
+ obj = s3.get_object({
50
+ bucket: 'ish-ses',
51
+ key: self.object_key
52
+ })
53
+ obj2 = obj.body.read
54
+
55
+ mail = Mail.read_from_string( obj2 )
56
+ self.from = mail.from
57
+ self.to = mail.to
58
+ self.subject = mail.subject
59
+ self.date = mail.date
60
+ self.raw = obj2
61
+
62
+ self.save
63
+ end
64
+
65
+ ## action.match_from = '@synchrony.com'
66
+ def apply_actions
67
+ triggers = Office::Action.active.where({ channel: 'email' })
68
+ triggers.each do |trigger|
69
+ if self.from_str.match(/#{trigger.match_from}/i)
70
+ trigger.actions do |action|
71
+ Office::Action.call( action[:method], { msg: self }.merge( action[:params] ))
72
+ end
73
+ end
74
+ end
75
+ end
76
+
77
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ish_models
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.33.191
4
+ version: 0.0.33.193
5
5
  platform: ruby
6
6
  authors:
7
7
  - piousbox
@@ -108,6 +108,34 @@ dependencies:
108
108
  - - ">="
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: mysql2
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: 0.5.4
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: 0.5.4
125
+ - !ruby/object:Gem::Dependency
126
+ name: rails
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: 6.1.0
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: 6.1.0
111
139
  description: models of ish
112
140
  email: victor@wasya.co
113
141
  executables: []
@@ -122,15 +150,16 @@ files:
122
150
  - lib/gameui/map_bookmark.rb
123
151
  - lib/gameui/marker.rb
124
152
  - lib/gameui/premium_purchase.rb
153
+ - lib/iro/option_price_item.rb
125
154
  - lib/ish/cache_key.rb
126
155
  - lib/ish/configuration.rb
127
156
  - lib/ish/crawler.rb
157
+ - lib/ish/email_campaign.rb
128
158
  - lib/ish/email_context.rb
129
159
  - lib/ish/email_template.rb
130
160
  - lib/ish/email_unsubscribe.rb
131
161
  - lib/ish/gallery_name.rb
132
162
  - lib/ish/image_asset.rb
133
- - lib/ish/input_error.rb
134
163
  - lib/ish/invoice.rb
135
164
  - lib/ish/lorem_ipsum.rb
136
165
  - lib/ish/meeting.rb
@@ -146,6 +175,8 @@ files:
146
175
  - lib/mongoid/votable.rb
147
176
  - lib/mongoid/voter.rb
148
177
  - lib/newsitem.rb
178
+ - lib/office/action.rb
179
+ - lib/office/email_message.rb
149
180
  - lib/photo.rb
150
181
  - lib/report.rb
151
182
  - lib/trash/app_model2.rb
@@ -1,3 +0,0 @@
1
-
2
- class Ish::InputError < RuntimeError
3
- end