spree_cm_commissioner 1.8.8 → 1.8.9

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: 687ff4cf4e03ffe157a851660a8d0a82f90463ab2f7e2050e8d25e0792377989
4
- data.tar.gz: 78794baf30a3bf2bcf033cc1ca921c422c273d2a3eb50ce40481c7424cd07950
3
+ metadata.gz: 1b66674e326443a681e0e4f80caa6a25569d508141a05966471c14f675a6690d
4
+ data.tar.gz: ab0ab4b8b78a04c5a9f54ab15ce88df60b5719b85566ab8aae8c1a6574a46d73
5
5
  SHA512:
6
- metadata.gz: 7b1884005a4e95691a3f71c6d2a128c821cd32fb41a29bb7af72f4be5a2a3734a8c81137a29d4a3a258832118c446ce8b93656122ebeeb8dc8e985edfca400ad
7
- data.tar.gz: 5c5c8d8dd8f1a75402b034f9e158554cf00aa3e1d7a25f16c983c71a3867b4d4312f882e0863a30b463df82e205a59daa19b432f84e67a34c6adcab484e38786
6
+ metadata.gz: cb4d294124696d2fa0aa76beb43eb2ce76182565118d5d98b750efd5df27daadd2081dc4c3bd707c37794c375d3ac0f55b448ec0c2b52389b6169f70d261102d
7
+ data.tar.gz: d522bb1bc55ddb70ce0185ab6c0352a51829199c535da283555a33d9ca1897379b95229593fc2e98ed0023c8d4ca3ef9318438d1558439435656b9a33c8d14ac
data/Gemfile.lock CHANGED
@@ -34,12 +34,13 @@ GIT
34
34
  PATH
35
35
  remote: .
36
36
  specs:
37
- spree_cm_commissioner (1.8.8)
37
+ spree_cm_commissioner (1.8.9)
38
38
  activerecord-multi-tenant
39
39
  activerecord_json_validator (~> 2.1, >= 2.1.3)
40
40
  aws-sdk-cloudfront
41
41
  aws-sdk-ecs
42
42
  aws-sdk-s3
43
+ blazer (~> 3.0.4)
43
44
  byebug
44
45
  counter_culture (~> 3.2)
45
46
  dry-validation (~> 1.10)
@@ -215,6 +216,12 @@ GEM
215
216
  base64 (0.1.1)
216
217
  bcrypt (3.1.19)
217
218
  bigdecimal (3.1.8)
219
+ blazer (3.0.4)
220
+ activerecord (>= 6.1)
221
+ chartkick (>= 5)
222
+ csv
223
+ railties (>= 6.1)
224
+ safely_block (>= 0.4)
218
225
  bootstrap (4.6.2)
219
226
  autoprefixer-rails (>= 9.1.0)
220
227
  popper_js (>= 1.16.1, < 2)
@@ -238,6 +245,7 @@ GEM
238
245
  capybara-select-2 (0.5.1)
239
246
  carmen (1.1.3)
240
247
  activesupport (>= 3.0.0)
248
+ chartkick (5.1.4)
241
249
  chunky_png (1.4.0)
242
250
  coderay (1.1.3)
243
251
  concurrent-ruby (1.2.2)
@@ -253,6 +261,7 @@ GEM
253
261
  crass (1.0.6)
254
262
  css_parser (1.16.0)
255
263
  addressable
264
+ csv (3.3.3)
256
265
  database_cleaner (2.0.2)
257
266
  database_cleaner-active_record (>= 2, < 3)
258
267
  database_cleaner-active_record (2.1.0)
@@ -698,6 +707,7 @@ GEM
698
707
  ffi (~> 1.12)
699
708
  ruby2_keywords (0.0.5)
700
709
  rubyzip (2.3.2)
710
+ safely_block (0.4.1)
701
711
  sass-rails (6.0.0)
702
712
  sassc-rails (~> 2.1, >= 2.1.1)
703
713
  sassc (2.4.0)
@@ -1,10 +1,15 @@
1
+ # https://stackoverflow.com/questions/77318060/blazer-raised-activerecordconnectionnotestablished
1
2
  module Blazer
2
3
  module BaseControllerDecorator
3
4
  def self.prepended(base)
5
+ base.around_action :set_writing_role
4
6
  base.before_action :restrict_organizer_access
5
7
  end
6
8
 
7
- private
9
+ # Annonymous block: https://www.rubydoc.info/gems/rubocop/RuboCop/Cop/Naming/BlockForwarding
10
+ def set_writing_role(&block)
11
+ ActiveRecord::Base.connected_to(role: :writing, &block)
12
+ end
8
13
 
9
14
  def restrict_organizer_access
10
15
  return unless spree_current_user.organizer? && !spree_current_user.admin?
@@ -15,4 +20,4 @@ module Blazer
15
20
  end
16
21
  end
17
22
 
18
- Blazer::BaseController.prepend(Blazer::BaseControllerDecorator) if defined?(Blazer::BaseController)
23
+ Blazer::BaseController.prepend(Blazer::BaseControllerDecorator) unless Blazer::BaseController.ancestors.include?(Blazer::BaseControllerDecorator)
@@ -19,7 +19,7 @@ module Spree
19
19
  render_error_payload(context.message, 400)
20
20
  end
21
21
 
22
- # :phone_number, :email, :type, :recaptcha_token, :recaptcha_action, :recaptcah_site_key
22
+ # :phone_number, :email, :type, :tenant
23
23
  def create
24
24
  context = SpreeCmCommissioner::PinCodeGenerator.call(pin_code_attrs)
25
25
 
@@ -40,8 +40,10 @@ module Spree
40
40
  SpreeCmCommissioner::V2::Storefront::PinCodeSerializer
41
41
  end
42
42
 
43
+ private
44
+
43
45
  def pin_code_attrs
44
- params.slice(:phone_number, :email, :type)
46
+ params.slice(:phone_number, :email, :type).merge(tenant: @tenant)
45
47
  end
46
48
  end
47
49
  end
@@ -3,7 +3,7 @@ module Spree
3
3
  module V2
4
4
  module Tenant
5
5
  class PinCodeGeneratorsController < BaseController
6
- # :phone_number, :email, :type
6
+ # :phone_number, :email, :type, :tenant
7
7
  def create
8
8
  context = SpreeCmCommissioner::PinCodeGenerator.call(pin_code_attrs)
9
9
 
@@ -24,8 +24,10 @@ module Spree
24
24
  SpreeCmCommissioner::V2::Storefront::PinCodeSerializer
25
25
  end
26
26
 
27
+ private
28
+
27
29
  def pin_code_attrs
28
- params.slice(:phone_number, :email, :type)
30
+ params.slice(:phone_number, :email, :type).merge(tenant: @tenant)
29
31
  end
30
32
  end
31
33
  end
@@ -0,0 +1,22 @@
1
+ module SpreeCmCommissioner
2
+ module PinCodeSenderHelper
3
+ def sender_name(tenant)
4
+ return Spree::Store.default&.name if tenant.nil?
5
+
6
+ tenant.active_vendor&.name
7
+ end
8
+
9
+ def sender_email(tenant)
10
+ return Spree::Store.default.mail_from_address if tenant.nil?
11
+
12
+ tenant.active_vendor&.notification_email
13
+ end
14
+
15
+ def logo_url(tenant)
16
+ vendor_or_store = tenant.nil? || tenant.active_vendor.nil? ? Spree::Store.default : tenant.active_vendor
17
+ return unless vendor_or_store&.logo&.attachment&.attached?
18
+
19
+ main_app.cdn_image_url(vendor_or_store.logo.attachment.variant(resize_to_limit: [244, 104]))
20
+ end
21
+ end
22
+ end
@@ -15,7 +15,10 @@ module SpreeCmCommissioner
15
15
  private
16
16
 
17
17
  def send_sms
18
+ from = context.tenant || Spree::Store.default
19
+
18
20
  options = {
21
+ from: from,
19
22
  to: context.pin_code.contact,
20
23
  body: I18n.t('pincode_sender.sms.body', code: context.pin_code.code, readable_type: context.pin_code.readable_type)
21
24
  }
@@ -24,13 +27,22 @@ module SpreeCmCommissioner
24
27
  end
25
28
 
26
29
  def send_email
27
- SpreeCmCommissioner::PinCodeMailer.send_pin_code(context.pin_code.id, context.pin_code.readable_type).deliver_later
30
+ SpreeCmCommissioner::PinCodeMailer.send_pin_code(
31
+ context.pin_code.id,
32
+ context.pin_code.readable_type,
33
+ context.tenant
34
+ ).deliver_later
28
35
  end
29
36
 
30
37
  def send_telegram_debug_pin_code
31
38
  return unless ENV['PIN_CODE_DEBUG_NOTIFIY_TELEGRAM_ENABLE'] == 'yes'
32
39
 
33
- SpreeCmCommissioner::TelegramDebugPinCodeSenderJob.perform_later(context.pin_code.id)
40
+ options = {
41
+ pin_code_id: context.pin_code.id,
42
+ tenant_id: context.tenant&.id
43
+ }
44
+
45
+ SpreeCmCommissioner::TelegramDebugPinCodeSenderJob.perform_later(options)
34
46
  end
35
47
  end
36
48
  end
@@ -40,7 +40,7 @@ module SpreeCmCommissioner
40
40
  end
41
41
 
42
42
  def sms_options
43
- opts = { to: context.to, body: context.body }
43
+ opts = { from: context.from, to: context.to, body: context.body }
44
44
  opts[:to] = sanitize(opts[:to]) if opts[:to].present?
45
45
  opts[:from] = from_number
46
46
  opts
@@ -1,6 +1,6 @@
1
1
  module SpreeCmCommissioner
2
2
  class TelegramDebugPinCodeSender < BaseInteractor
3
- delegate :pin_code, to: :context
3
+ delegate :pin_code, :name, to: :context
4
4
 
5
5
  def call
6
6
  telegram_client.send_message(
@@ -13,6 +13,7 @@ module SpreeCmCommissioner
13
13
  def body
14
14
  text = []
15
15
 
16
+ text << "<b>From: #{name}</b>"
16
17
  text << "<b>PIN CODE sent to #{pin_code.contact}</b>"
17
18
  text << "<code>#{pin_code.code}</code> is your #{pin_code.readable_type}"
18
19
 
@@ -1,6 +1,6 @@
1
1
  module SpreeCmCommissioner
2
2
  class SmsPinCodeJob < SpreeCmCommissioner::SmsJob
3
- # options = { to: xxxx, body: xxxx }
3
+ # options = { from: xxx, to: xxxx, body: xxxx }
4
4
  def perform(options)
5
5
  SpreeCmCommissioner::Sms.call(options)
6
6
  end
@@ -1,9 +1,17 @@
1
1
  module SpreeCmCommissioner
2
2
  class TelegramDebugPinCodeSenderJob < ApplicationUniqueJob
3
- def perform(pin_code_id)
4
- pin_code = SpreeCmCommissioner::PinCode.find(pin_code_id)
3
+ include SpreeCmCommissioner::PinCodeSenderHelper
5
4
 
6
- SpreeCmCommissioner::TelegramDebugPinCodeSender.call(pin_code: pin_code)
5
+ def perform(options)
6
+ pin_code = SpreeCmCommissioner::PinCode.find(options[:pin_code_id])
7
+ tenant = SpreeCmCommissioner::Tenant.find_by(id: options[:tenant_id])
8
+
9
+ name = sender_name(tenant)
10
+
11
+ SpreeCmCommissioner::TelegramDebugPinCodeSender.call(
12
+ pin_code: pin_code,
13
+ name: name
14
+ )
7
15
  end
8
16
  end
9
17
  end
@@ -1,13 +1,19 @@
1
1
  module SpreeCmCommissioner
2
2
  class PinCodeMailer < Spree::BaseMailer
3
- def send_pin_code(pin_code_id, action)
3
+ include SpreeCmCommissioner::PinCodeSenderHelper
4
+
5
+ def send_pin_code(pin_code_id, action, tenant)
4
6
  @pin_code = SpreeCmCommissioner::PinCode.find(pin_code_id)
5
7
 
8
+ @sender_name = sender_name(tenant)
9
+ @sender_email = sender_email(tenant)
10
+ @logo_path = logo_url(tenant)
11
+
6
12
  return unless @pin_code.email?
7
13
 
8
- subject = "#{Spree::Store.default.name} #{action.titlecase}"
14
+ subject = "#{@sender_name} #{action.titlecase}"
9
15
 
10
- mail(from: from_address, to: @pin_code.contact, subject: subject)
16
+ mail(from: @sender_email, to: @pin_code.contact, subject: subject)
11
17
  end
12
18
  end
13
19
  end
@@ -3,6 +3,7 @@ module SpreeCmCommissioner
3
3
  extend ActiveSupport::Concern
4
4
 
5
5
  included do
6
+ preference :sms_sender_id, :string
6
7
  preference :telegram_order_alert_chat_id, :string
7
8
  preference :telegram_order_request_alert_chat_id, :string
8
9
  end
@@ -5,6 +5,7 @@ module SpreeCmCommissioner
5
5
 
6
6
  base.has_one :default_notification_image, class_name: 'SpreeCmCommissioner::FeatureImage', dependent: :destroy, as: :viewable
7
7
  base.accepts_nested_attributes_for :default_notification_image, reject_if: :all_blank
8
+ base.multi_tenant :tenant, class_name: 'SpreeCmCommissioner::Tenant'
8
9
  end
9
10
  end
10
11
  end
@@ -13,6 +13,10 @@ module SpreeCmCommissioner
13
13
 
14
14
  before_validation :generate_slug, if: -> { slug.blank? && name.present? }
15
15
 
16
+ def active_vendor
17
+ vendors.where(state: :active).first
18
+ end
19
+
16
20
  private
17
21
 
18
22
  def generate_slug
@@ -0,0 +1,12 @@
1
+ <!-- override base_mailer_header.html.erb -->
2
+ <tr>
3
+ <td class="email-masthead">
4
+ <%= link_to @sender_name, class: 'template-label' do %>
5
+ <% if @logo_path.present? %>
6
+ <%= image_tag @logo_path, class: 'logo', alt: @sender_name, title: @sender_name %>
7
+ <% else %>
8
+ <%= @sender_name %>
9
+ <% end %>
10
+ <% end %>
11
+ </td>
12
+ </tr>
@@ -3,7 +3,7 @@
3
3
  <tr>
4
4
  <td>
5
5
  <h4>Hello, </h4>
6
- <p>Welcome to <%= Spree::Store.default.name %> </p>
6
+ <p>Welcome to <%= @sender_name %> </p>
7
7
  <p>Please use the following code:</p>
8
8
  <h5 style="font-size: 22px;padding: 0 10px;"><%= @pin_code.code %></h5>
9
9
  <p>to verify your account.</p>
@@ -11,7 +11,7 @@
11
11
  <br>
12
12
  <p>
13
13
  Regards,<br>
14
- The <%= Spree::Store.default.name %> team
14
+ The <%= @sender_name %> team
15
15
  </p>
16
16
  </td>
17
17
  </tr>
data/config/routes.rb CHANGED
@@ -1,5 +1,10 @@
1
1
  Spree::Core::Engine.add_routes do
2
2
  # Add your extension routes here
3
+
4
+ authenticate :spree_user, -> (user) { user.admin? || user.organizer? } do
5
+ mount Blazer::Engine, at: 'admin/bi_reports'
6
+ end
7
+
3
8
  namespace :admin do
4
9
  post '/invalidate_api_caches', to: 'base#invalidate_api_caches'
5
10
 
@@ -44,4 +44,4 @@ class InstallBlazer < ActiveRecord::Migration[7.0]
44
44
  t.timestamps null: false
45
45
  end
46
46
  end
47
- end
47
+ end
@@ -7,4 +7,3 @@ class CreateSpreeCmCommissionerTaxonBlazerQuery < ActiveRecord::Migration[7.0]
7
7
  end
8
8
  end
9
9
  end
10
-
@@ -1,5 +1,5 @@
1
1
  module SpreeCmCommissioner
2
- VERSION = '1.8.8'.freeze
2
+ VERSION = '1.8.9'.freeze
3
3
 
4
4
  module_function
5
5
 
@@ -3,6 +3,7 @@ require 'spree_api_v1'
3
3
  require 'spree_backend'
4
4
  require 'spree_auth_devise'
5
5
  require 'spree_multi_vendor'
6
+ require 'blazer'
6
7
  require 'spree_extension'
7
8
 
8
9
  require 'spree_cm_commissioner/engine'
@@ -28,7 +28,6 @@ Gem::Specification.new do |s|
28
28
  s.add_dependency 'spree_backend', spree_opts
29
29
  s.add_dependency 'spree_multi_vendor', '>= 2.4.1'
30
30
  s.add_dependency 'spree_extension'
31
-
32
31
  s.add_dependency 'activerecord-multi-tenant'
33
32
  s.add_dependency 'phonelib'
34
33
  s.add_dependency 'aws-sdk-ecs'
@@ -56,5 +55,6 @@ Gem::Specification.new do |s|
56
55
  s.add_dependency 'counter_culture', '~> 3.2'
57
56
  s.add_development_dependency 'pg'
58
57
  s.add_development_dependency 'spree_dev_tools'
58
+ s.add_dependency 'blazer', '~> 3.0.4'
59
59
  s.metadata['rubygems_mfa_required'] = 'true'
60
60
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spree_cm_commissioner
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.8
4
+ version: 1.8.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - You
@@ -478,6 +478,20 @@ dependencies:
478
478
  - - ">="
479
479
  - !ruby/object:Gem::Version
480
480
  version: '0'
481
+ - !ruby/object:Gem::Dependency
482
+ name: blazer
483
+ requirement: !ruby/object:Gem::Requirement
484
+ requirements:
485
+ - - "~>"
486
+ - !ruby/object:Gem::Version
487
+ version: 3.0.4
488
+ type: :runtime
489
+ prerelease: false
490
+ version_requirements: !ruby/object:Gem::Requirement
491
+ requirements:
492
+ - - "~>"
493
+ - !ruby/object:Gem::Version
494
+ version: 3.0.4
481
495
  description: Add (optional) extension description here
482
496
  email: you@example.com
483
497
  executables: []
@@ -940,6 +954,7 @@ files:
940
954
  - app/helpers/spree_cm_commissioner/admin/video_on_demand_helper.rb
941
955
  - app/helpers/spree_cm_commissioner/billing/monthly_orders_helper.rb
942
956
  - app/helpers/spree_cm_commissioner/billing/qrcodes_helper.rb
957
+ - app/helpers/spree_cm_commissioner/pin_code_sender_helper.rb
943
958
  - app/helpers/spree_cm_commissioner/telegram/base_helper.rb
944
959
  - app/helpers/spree_cm_commissioner/transit/service_calendars_helper.rb
945
960
  - app/interactors/spree_cm_commissioner/accommodation_search_detail.rb
@@ -1909,6 +1924,7 @@ files:
1909
1924
  - app/views/spree/order_mailer/confirm_email.html.erb
1910
1925
  - app/views/spree/order_mailer/ticket_email.html.erb
1911
1926
  - app/views/spree/order_mailer/ticket_email.text.erb
1927
+ - app/views/spree/shared/_base_mailer_header.html.erb
1912
1928
  - app/views/spree/telegram/errors/_error.html.erb
1913
1929
  - app/views/spree/telegram/errors/forbidden.html.erb
1914
1930
  - app/views/spree/telegram/errors/resource_not_found.html.erb