spree_cm_commissioner 1.8.0.pre.beta2 → 1.8.0.pre.beta3

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 (53) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/test_and_build_gem.yml +16 -16
  3. data/Gemfile.lock +1 -1
  4. data/app/controllers/spree/admin/taxons_controller_decorator.rb +0 -10
  5. data/app/models/spree_cm_commissioner/place.rb +0 -2
  6. data/app/models/spree_cm_commissioner/product_decorator.rb +0 -4
  7. data/app/models/spree_cm_commissioner/taxon_decorator.rb +0 -3
  8. data/app/models/spree_cm_commissioner/user_decorator.rb +0 -4
  9. data/app/overrides/spree/admin/taxons/_form/assets_form.html.erb.deface +0 -19
  10. data/app/overrides/spree/admin/taxons/edit/title.html.erb.deface +3 -5
  11. data/app/serializers/spree/v2/storefront/taxon_serializer_decorator.rb +1 -2
  12. data/app/views/spree/admin/classifications/index.html.erb +1 -1
  13. data/app/views/spree/admin/guest_card_classes/index.html.erb +1 -1
  14. data/app/views/spree/admin/taxon_vendors/index.html.erb +1 -1
  15. data/app/views/spree/admin/user_events/_users.html.erb +1 -1
  16. data/config/initializers/spree_permitted_attributes.rb +0 -1
  17. data/config/locales/en.yml +1 -10
  18. data/config/locales/km.yml +1 -10
  19. data/config/routes.rb +0 -4
  20. data/lib/spree_cm_commissioner/version.rb +1 -1
  21. metadata +2 -34
  22. data/.tool-versions +0 -1
  23. data/app/assets/images/mailer/bookme-plus_light.svg +0 -1
  24. data/app/controllers/spree/api/v2/organizer/invites_controller.rb +0 -35
  25. data/app/controllers/spree/api/v2/tenant/profile_images_controller.rb +0 -52
  26. data/app/controllers/spree/api/v2/tenant/s3_signed_urls_controller.rb +0 -29
  27. data/app/interactors/spree_cm_commissioner/crew_inviter.rb +0 -63
  28. data/app/interactors/spree_cm_commissioner/profile_image_destroyer.rb +0 -16
  29. data/app/mailers/spree_cm_commissioner/crew_invite_mailer.rb +0 -13
  30. data/app/models/spree_cm_commissioner/crew_invite.rb +0 -7
  31. data/app/models/spree_cm_commissioner/invite.rb +0 -22
  32. data/app/models/spree_cm_commissioner/invite_user_event.rb +0 -5
  33. data/app/models/spree_cm_commissioner/invite_user_taxon.rb +0 -11
  34. data/app/models/spree_cm_commissioner/taxon_video_banner.rb +0 -4
  35. data/app/models/spree_cm_commissioner/video.rb +0 -15
  36. data/app/overrides/spree/admin/taxons/_form/available_on.html.erb.deface +0 -18
  37. data/app/serializers/spree/v2/organizer/asset_serializer.rb +0 -11
  38. data/app/serializers/spree/v2/organizer/invite_serializer.rb +0 -11
  39. data/app/serializers/spree/v2/organizer/taxon_serializer.rb +0 -10
  40. data/app/serializers/spree/v2/organizer/user_serializer.rb +0 -9
  41. data/app/serializers/spree/v2/tenant/s3_signed_url_serializer.rb +0 -9
  42. data/app/serializers/spree/v2/tenant/user_profile_serializer.rb +0 -8
  43. data/app/serializers/spree_cm_commissioner/v2/storefront/video_serializer.rb +0 -9
  44. data/app/views/spree_cm_commissioner/crew_invite_mailer/_mailer_stylesheets.html.erb +0 -82
  45. data/app/views/spree_cm_commissioner/crew_invite_mailer/send_crew_invite_email.html.erb +0 -33
  46. data/app/views/spree_cm_commissioner/layouts/crew_invite_mailer.html.erb +0 -15
  47. data/db/migrate/20250304101907_create_spree_cm_commissioner_invite.rb +0 -12
  48. data/db/migrate/20250304101946_create_spree_cm_commissioner_invite_user_taxon.rb +0 -11
  49. data/db/migrate/20250307013422_add_parent_id_to_cm_place.rb +0 -9
  50. data/db/migrate/20250314013434_add_available_on_to_spree_taxons.rb +0 -5
  51. data/lib/spree_cm_commissioner/test_helper/factories/invite_factory.rb +0 -7
  52. data/lib/spree_cm_commissioner/test_helper/factories/invite_user_event_factory.rb +0 -5
  53. data/lib/spree_cm_commissioner/test_helper/factories/user_event_factory.rb +0 -6
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ea8803e08aefa14cf5aab9234abfb9619a75f220a60a40e4ccf81c64039906b5
4
- data.tar.gz: 37474847fdd50ded47ced904e3c133781f132cbd94bd60d265d72332d25a7962
3
+ metadata.gz: 2c03954e64a4eb80fede9261e4b11885fbdf1a24702db045b67000da22687714
4
+ data.tar.gz: 7ed29bf9a72b179dc8b01c94cbfd8dde40629271cc4ea4347478e5206ce107a1
5
5
  SHA512:
6
- metadata.gz: 8adc0d6d15702bfd001e29cbbe51337ba00f723acc5fa5ad31f865a1300626bf891cf6ccda2aac2d080be2fe885ce308cd98098e1c7e6b3f45fd0fbb0463930a
7
- data.tar.gz: ecdc09159880d9144f6507f1e9e068ceb2d1a884ed07a72e32764ba96c88bd8b6c06b9c142a00b3dd72e39e41e1b791d572c4d3772ff315d98aed1930fa970c8
6
+ metadata.gz: e89c45f1e5001c01ba1881eab45e06ff10e447aad002e3074478c640e4dbfb752162204754ac56fe5575efb1d79424c795a9863bbd1d2a154cdd5cbec0bc5d63
7
+ data.tar.gz: dd28032bc934a7718bbbb1309aa1e432caf56cb11298abf3543c566e5e927f66a4f74a7525aa12afa961bf0a564e759eb18fd7a7f7e2d2804352a0746f28a7cd
@@ -48,25 +48,25 @@ jobs:
48
48
  gem install bundler
49
49
  bundle install --jobs 4 --retry 3
50
50
 
51
- - name: Quality
52
- env:
53
- DATABASE_URL: postgres://myuser:mypassword@localhost:5432/test_db
54
- run: |
55
- bundle exec rubocop
51
+ # - name: Quality
52
+ # env:
53
+ # DATABASE_URL: postgres://myuser:mypassword@localhost:5432/test_db
54
+ # run: |
55
+ # bundle exec rubocop
56
56
 
57
- - name: Security
58
- env:
59
- DATABASE_URL: postgres://myuser:mypassword@localhost:5432/test_db
60
- run: |
61
- bundle exec brakeman
57
+ # - name: Security
58
+ # env:
59
+ # DATABASE_URL: postgres://myuser:mypassword@localhost:5432/test_db
60
+ # run: |
61
+ # bundle exec brakeman
62
62
 
63
- - name: Run test
64
- env:
65
- DATABASE_URL: postgres://myuser:mypassword@localhost:5432/test_db
63
+ # - name: Run test
64
+ # env:
65
+ # DATABASE_URL: postgres://myuser:mypassword@localhost:5432/test_db
66
66
 
67
- if: github.event_name == 'pull_request' && github.event.pull_request.base.ref == 'develop'
68
- run: |
69
- bundle exec rake
67
+ # if: github.event_name == 'pull_request' && github.event.pull_request.base.ref == 'develop'
68
+ # run: |
69
+ # bundle exec rake
70
70
 
71
71
  # 2405-build-and-publish-gem
72
72
  # - name: Rename long migration files
data/Gemfile.lock CHANGED
@@ -34,7 +34,7 @@ GIT
34
34
  PATH
35
35
  remote: .
36
36
  specs:
37
- spree_cm_commissioner (1.8.0.pre.beta2)
37
+ spree_cm_commissioner (1.8.0.pre.beta3)
38
38
  activerecord-multi-tenant
39
39
  activerecord_json_validator (~> 2.1, >= 2.1.3)
40
40
  aws-sdk-cloudfront
@@ -5,11 +5,6 @@ module Spree
5
5
  base.before_action :build_assets, only: %i[create update]
6
6
  end
7
7
 
8
- def update
9
- @taxon.update(available_on: permitted_resource_params[:available_on]) if permitted_resource_params[:available_on].present?
10
- super
11
- end
12
-
13
8
  def remove_category_icon
14
9
  remove_asset(@taxon.category_icon)
15
10
  end
@@ -26,10 +21,6 @@ module Spree
26
21
  remove_asset(@taxon.home_banner)
27
22
  end
28
23
 
29
- def remove_video_banner
30
- remove_asset(@taxon.video_banner)
31
- end
32
-
33
24
  private
34
25
 
35
26
  def remove_asset(asset)
@@ -47,7 +38,6 @@ module Spree
47
38
  @taxon.build_app_banner(attachment: permitted_resource_params.delete(:app_banner)) if permitted_resource_params[:app_banner]
48
39
  @taxon.build_web_banner(attachment: permitted_resource_params.delete(:web_banner)) if permitted_resource_params[:web_banner]
49
40
  @taxon.build_home_banner(attachment: permitted_resource_params.delete(:home_banner)) if permitted_resource_params[:home_banner]
50
- @taxon.build_video_banner(attachment: permitted_resource_params.delete(:video_banner)) if permitted_resource_params[:video_banner]
51
41
  end
52
42
  end
53
43
  end
@@ -13,8 +13,6 @@ module SpreeCmCommissioner
13
13
 
14
14
  has_many :product_places, class_name: 'SpreeCmCommissioner::ProductPlace', dependent: :destroy
15
15
  has_many :products, through: :product_places
16
- has_many :children, class_name: 'SpreeCmCommissioner::Place', foreign_key: :parent_id, dependent: :destroy
17
- belongs_to :parent, class_name: 'SpreeCmCommissioner::Place', optional: true
18
16
 
19
17
  def self.ransackable_attributes(auth_object = nil)
20
18
  super & %w[name code]
@@ -75,10 +75,6 @@ module SpreeCmCommissioner
75
75
  taxons.event.first&.parent
76
76
  end
77
77
 
78
- def ticket_url
79
- "#{Spree::Store.default.formatted_url}/tickets/#{slug}"
80
- end
81
-
82
78
  private
83
79
 
84
80
  def set_tenant
@@ -28,7 +28,6 @@ module SpreeCmCommissioner
28
28
  base.has_one :web_banner, as: :viewable, dependent: :destroy, class_name: 'SpreeCmCommissioner::TaxonWebBanner'
29
29
  base.has_one :app_banner, as: :viewable, dependent: :destroy, class_name: 'SpreeCmCommissioner::TaxonAppBanner'
30
30
  base.has_one :home_banner, as: :viewable, dependent: :destroy, class_name: 'SpreeCmCommissioner::TaxonHomeBanner'
31
- base.has_one :video_banner, as: :viewable, dependent: :destroy, class_name: 'SpreeCmCommissioner::TaxonVideoBanner'
32
31
 
33
32
  # Update children association to work with nested set (lft, rgt)
34
33
  base.has_many :children, -> { order(:lft) }, class_name: 'Spree::Taxon', foreign_key: :parent_id, dependent: :destroy
@@ -49,8 +48,6 @@ module SpreeCmCommissioner
49
48
  base.whitelisted_ransackable_attributes |= %w[kind]
50
49
 
51
50
  base.enum purchasable_on: { both: 0, web: 1, app: 2 }
52
- base.has_many :crew_invites, class_name: 'SpreeCmCommissioner::CrewInvite', dependent: :destroy
53
- base.has_many :invite_user_events, through: :user_events, class_name: 'SpreeCmCommissioner::InviteUserEvent'
54
51
  end
55
52
  # rubocop:enable Metrics/MethodLength
56
53
 
@@ -67,10 +67,6 @@ module SpreeCmCommissioner
67
67
  has_spree_role?('organizer')
68
68
  end
69
69
 
70
- def operator?
71
- has_spree_role?('operator')
72
- end
73
-
74
70
  def full_name
75
71
  [first_name, last_name].compact_blank.join(' ')
76
72
  end
@@ -47,24 +47,5 @@
47
47
  form:f,
48
48
  classes: ['col-md-5 ml-3']
49
49
  %>
50
-
51
- <%= f.field_container :video_banner, direct_upload: true, class: ['col-md-5 ml-3 rounded border p-3'] do %>
52
- <% if @taxon.video_banner&.attachment.present? %>
53
- <video class="rounded border mb-4 mw-150" style="max-height: 200px" controls>
54
- <source src="<%= main_app.rails_blob_url(@taxon.video_banner.attachment) %>" type="<%= @taxon.video_banner.attachment.content_type %>">
55
- Your browser does not support the video tag.
56
- </video>
57
- <% end %>
58
-
59
- <div data-hook="file" class="mb-3" >
60
- <%= f.label :video_banner, I18n.t('taxon.video_banner') %>
61
- <%= f.label :video_banner, I18n.t('taxon.video_banner_require_size') %>
62
- <%= f.file_field :video_banner, required: false, accept: "video/*" %>
63
- </div>
64
-
65
- <% if @taxon.video_banner.present? && defined?(remove_video_banner_admin_taxonomy_taxon_url) %>
66
- <%= link_to Spree.t(:remove_video), remove_video_banner_admin_taxonomy_taxon_url, method: :delete %>
67
- <% end %>
68
- <% end %>
69
50
  </div>
70
51
 
@@ -1,8 +1,6 @@
1
1
  <!-- replace "erb[silent]:contains('unless @taxon.root?')" closing_selector "erb[silent]:contains('end')" -->
2
2
 
3
- <%if @taxon.depth !=1 && @taxon.parent.present? %>
4
- / <%= link_to @taxon.parent.name, spree.edit_admin_taxonomy_taxon_url(@taxonomy,@taxon.parent.id) %>
3
+ <%if @taxon.depth !=1 %>
4
+ / <%= link_to @taxon.parent.name, spree.edit_admin_taxonomy_taxon_url(@taxonomy,@taxon.parent.id) %>
5
5
  <%end%>
6
- <% unless @taxon.root? %>
7
- / <%= @taxon.name %>
8
- <% end %>
6
+ / <%= @taxon.name %>
@@ -10,11 +10,10 @@ module Spree
10
10
  base.has_one :app_banner, serializer: ::SpreeCmCommissioner::V2::Storefront::AssetSerializer
11
11
  base.has_one :web_banner, serializer: ::SpreeCmCommissioner::V2::Storefront::AssetSerializer
12
12
  base.has_one :home_banner, serializer: ::SpreeCmCommissioner::V2::Storefront::AssetSerializer
13
- base.has_one :video_banner, serializer: ::SpreeCmCommissioner::V2::Storefront::VideoSerializer
14
13
 
15
14
  base.attributes :custom_redirect_url, :kind, :subtitle, :from_date, :to_date,
16
15
  :background_color, :foreground_color, :show_badge_status,
17
- :purchasable_on, :vendor_id, :available_on
16
+ :purchasable_on, :vendor_id
18
17
 
19
18
  base.attribute :purchasable_on_app do |taxon|
20
19
  taxon.purchasable_on == 'app' || taxon.purchasable_on == 'both'
@@ -2,7 +2,7 @@
2
2
  <%= link_to Spree.t(:taxonomies), spree.admin_taxonomies_url %> /
3
3
 
4
4
  <%= link_to @taxonomy.root.name, spree.edit_admin_taxonomy_url(@taxonomy) %>
5
- <%if @taxon.depth !=1 && @taxon.parent.present? %>
5
+ <%if @taxon.depth !=1 %>
6
6
  / <%= link_to @taxon.parent.name, spree.edit_admin_taxonomy_taxon_url(@taxonomy,@taxon.parent.id) %>
7
7
  <%end%>
8
8
  <% unless @taxon.root? %>
@@ -2,7 +2,7 @@
2
2
  <%= link_to Spree.t(:taxonomies), spree.admin_taxonomies_url %> /
3
3
 
4
4
  <%= link_to @taxonomy.root.name, spree.edit_admin_taxonomy_url(@taxonomy) %>
5
- <%if @taxon.depth !=1 && @taxon.parent.present? %>
5
+ <%if @taxon.depth !=1 %>
6
6
  / <%= link_to @taxon.parent.name, spree.edit_admin_taxonomy_taxon_url(@taxonomy,@taxon.parent.id) %>
7
7
  <%end%>
8
8
  <% unless @taxon.root? %>
@@ -2,7 +2,7 @@
2
2
  <%= link_to Spree.t(:taxonomies), spree.admin_taxonomies_url %> /
3
3
 
4
4
  <%= link_to @taxonomy.root.name, spree.edit_admin_taxonomy_url(@taxonomy) %>
5
- <%if @taxon.depth !=1 && @taxon.parent.present? %>
5
+ <%if @taxon.depth !=1 %>
6
6
  / <%= link_to @taxon.parent.name, spree.edit_admin_taxonomy_taxon_url(@taxonomy,@taxon.parent.id) %>
7
7
  <%end%>
8
8
  <% unless @taxon.root? %>
@@ -2,7 +2,7 @@
2
2
  <%= link_to Spree.t(:taxonomies), spree.admin_taxonomies_url %> /
3
3
 
4
4
  <%= link_to @taxonomy.root.name, spree.edit_admin_taxonomy_url(@taxonomy) %>
5
- <%if @taxon.depth !=1 && @taxon.parent.present? %>
5
+ <%if @taxon.depth !=1 %>
6
6
  / <%= link_to @taxon.parent.name, spree.edit_admin_taxonomy_taxon_url(@taxonomy,@taxon.parent.id) %>
7
7
  <%end%>
8
8
  <% unless @taxon.root? %>
@@ -33,7 +33,6 @@ module Spree
33
33
  preferred_foreground_color
34
34
  show_badge_status
35
35
  purchasable_on
36
- available_on
37
36
  vendor_id
38
37
  ]
39
38
 
@@ -41,8 +41,6 @@ en:
41
41
  app_banner: App Banner (16x9)
42
42
  web_banner: Web banner (10x2)
43
43
  home_banner: Home Banner (16x9)
44
- video_banner: Video Banner (9x16)
45
- video_banner_require_size: Maximum size 10MB
46
44
  note: "<b>Note:</b> Subtitle is used for country code in Nationality Taxon"
47
45
 
48
46
  taxon_vendor:
@@ -566,11 +564,4 @@ en:
566
564
  update_success: Option Type updated successfully.
567
565
  user_roles_assigner:
568
566
  user_not_found: 'User not found'
569
- roles_empty: 'Roles are empty'
570
- invite:
571
- url_not_found: 'Invite link not found or have been expired'
572
- accept_fail: 'Failed to accept invite'
573
- url_expired: 'Invitation link is expired'
574
- already_invited: 'Failed: User already invited to event'
575
- update_fail: 'Failed: to Update invite user'
576
-
567
+ roles_empty: 'Roles are empty'
@@ -46,8 +46,6 @@ km:
46
46
  app_banner: App Banner (16x9)
47
47
  web_banner: Web banner (10x2)
48
48
  home_banner: Home Banner (16x9)
49
- video_banner: Video Banner (9x16)
50
- video_banner_require_size: Maximum size 10MB
51
49
 
52
50
  taxon_vendor:
53
51
  empty_info: "មិនមានព័ត៌មានអំពីអ្នកលក់ទេ"
@@ -410,11 +408,4 @@ km:
410
408
  not_found: 'រកមិនឃើញរូបភាព'
411
409
  user_roles_assigner:
412
410
  user_not_found: 'រកមិនឃើញអ្នកប្រើប្រាស់'
413
- roles_empty: 'តួនាទីគឺទទេ'
414
-
415
- invite:
416
- url_not_found: 'រកមិនឃើញតំណអញ្ជើញ ឬផុតកំណត់ហើយ'
417
- accept_fail: 'បរាជ័យក្នុងការទទួលយកការអញ្ជើញ'
418
- url_expired: 'តំណ​អញ្ជើញ​បាន​ផុត​កំណត់'
419
- already_invited: 'បរាជ័យ៖ អ្នកប្រើប្រាស់បានអញ្ជើញចូលរួមព្រឹត្តិការណ៍រួចហើយ'
420
- update_fail: 'បរាជ័យ៖ ធ្វើបច្ចុប្បន្នភាពអ្នកប្រើប្រាស់អញ្ជើញ'
411
+ roles_empty: 'តួនាទីគឺទទេ'
data/config/routes.rb CHANGED
@@ -173,7 +173,6 @@ Spree::Core::Engine.add_routes do
173
173
  delete :remove_app_banner
174
174
  delete :remove_web_banner
175
175
  delete :remove_home_banner
176
- delete :remove_video_banner
177
176
  end
178
177
  end
179
178
  end
@@ -442,7 +441,6 @@ Spree::Core::Engine.add_routes do
442
441
  end
443
442
  resources :images
444
443
  resource :s3_signed_urls
445
- resources :invites
446
444
  end
447
445
 
448
446
  namespace :tenant do
@@ -482,8 +480,6 @@ Spree::Core::Engine.add_routes do
482
480
  end
483
481
 
484
482
  resources :user_account_linkages, only: %i[index create destroy]
485
- resource :s3_signed_urls
486
- resource :profile_images, only: %i[update destroy]
487
483
  end
488
484
 
489
485
  namespace :storefront do
@@ -1,5 +1,5 @@
1
1
  module SpreeCmCommissioner
2
- VERSION = '1.8.0-beta2'.freeze
2
+ VERSION = '1.8.0-beta3'.freeze
3
3
 
4
4
  module_function
5
5
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spree_cm_commissioner
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.0.pre.beta2
4
+ version: 1.8.0.pre.beta3
5
5
  platform: ruby
6
6
  authors:
7
7
  - You
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-03-14 00:00:00.000000000 Z
11
+ date: 2025-03-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: spree
@@ -493,7 +493,6 @@ files:
493
493
  - ".rubocop-rails.yml"
494
494
  - ".rubocop.yml"
495
495
  - ".ruby-version"
496
- - ".tool-versions"
497
496
  - ".travis.yml"
498
497
  - ".vscode/settings.json"
499
498
  - Dockerfile
@@ -579,7 +578,6 @@ files:
579
578
  - app/assets/images/cm-wifi-icon.svg
580
579
  - app/assets/images/mailer/bed.png
581
580
  - app/assets/images/mailer/bookme-plus.png
582
- - app/assets/images/mailer/bookme-plus_light.svg
583
581
  - app/assets/images/mailer/calendar.png
584
582
  - app/assets/images/mailer/envelope.png
585
583
  - app/assets/images/mailer/event-mailer-bg.png
@@ -745,7 +743,6 @@ files:
745
743
  - app/controllers/spree/api/v2/operator/taxons_controller.rb
746
744
  - app/controllers/spree/api/v2/organizer/base_controller.rb
747
745
  - app/controllers/spree/api/v2/organizer/images_controller.rb
748
- - app/controllers/spree/api/v2/organizer/invites_controller.rb
749
746
  - app/controllers/spree/api/v2/organizer/s3_signed_urls_controller.rb
750
747
  - app/controllers/spree/api/v2/organizer/ticket_images_controller.rb
751
748
  - app/controllers/spree/api/v2/organizer/tickets_controller.rb
@@ -825,8 +822,6 @@ files:
825
822
  - app/controllers/spree/api/v2/tenant/pin_code_checkers_controller.rb
826
823
  - app/controllers/spree/api/v2/tenant/pin_code_generators_controller.rb
827
824
  - app/controllers/spree/api/v2/tenant/products_controller.rb
828
- - app/controllers/spree/api/v2/tenant/profile_images_controller.rb
829
- - app/controllers/spree/api/v2/tenant/s3_signed_urls_controller.rb
830
825
  - app/controllers/spree/api/v2/tenant/taxons_controller.rb
831
826
  - app/controllers/spree/api/v2/tenant/user_account_linkages_controller.rb
832
827
  - app/controllers/spree/api/v2/tenant/user_device_tokens_controller.rb
@@ -945,7 +940,6 @@ files:
945
940
  - app/interactors/spree_cm_commissioner/check_in_destroyer.rb
946
941
  - app/interactors/spree_cm_commissioner/confirm_pin_code_checker.rb
947
942
  - app/interactors/spree_cm_commissioner/conversion_pre_calculator.rb
948
- - app/interactors/spree_cm_commissioner/crew_inviter.rb
949
943
  - app/interactors/spree_cm_commissioner/customer_content_notification_creator.rb
950
944
  - app/interactors/spree_cm_commissioner/customer_notification_cron_executor.rb
951
945
  - app/interactors/spree_cm_commissioner/customer_notification_sender.rb
@@ -986,7 +980,6 @@ files:
986
980
  - app/interactors/spree_cm_commissioner/pin_code_creator.rb
987
981
  - app/interactors/spree_cm_commissioner/pin_code_generator.rb
988
982
  - app/interactors/spree_cm_commissioner/pin_code_sender.rb
989
- - app/interactors/spree_cm_commissioner/profile_image_destroyer.rb
990
983
  - app/interactors/spree_cm_commissioner/profile_image_updater.rb
991
984
  - app/interactors/spree_cm_commissioner/recaptcha_token_validator.rb
992
985
  - app/interactors/spree_cm_commissioner/sms.rb
@@ -1060,7 +1053,6 @@ files:
1060
1053
  - app/jobs/spree_cm_commissioner/webhook_subscriber_orders_sender_job.rb
1061
1054
  - app/mailers/spree/order_mailer_decorator.rb
1062
1055
  - app/mailers/spree_cm_commissioner/application_mailer.rb
1063
- - app/mailers/spree_cm_commissioner/crew_invite_mailer.rb
1064
1056
  - app/mailers/spree_cm_commissioner/pin_code_mailer.rb
1065
1057
  - app/models/.gitkeep
1066
1058
  - app/models/concerns/spree_cm_commissioner/homepage_section_bitwise.rb
@@ -1102,7 +1094,6 @@ files:
1102
1094
  - app/models/spree_cm_commissioner/check_in_record.rb
1103
1095
  - app/models/spree_cm_commissioner/classification_decorator.rb
1104
1096
  - app/models/spree_cm_commissioner/configuration.rb
1105
- - app/models/spree_cm_commissioner/crew_invite.rb
1106
1097
  - app/models/spree_cm_commissioner/customer.rb
1107
1098
  - app/models/spree_cm_commissioner/customer_notification.rb
1108
1099
  - app/models/spree_cm_commissioner/customer_promotion_rule.rb
@@ -1140,9 +1131,6 @@ files:
1140
1131
  - app/models/spree_cm_commissioner/image_methods_decorator.rb
1141
1132
  - app/models/spree_cm_commissioner/import.rb
1142
1133
  - app/models/spree_cm_commissioner/imports/import_order.rb
1143
- - app/models/spree_cm_commissioner/invite.rb
1144
- - app/models/spree_cm_commissioner/invite_user_event.rb
1145
- - app/models/spree_cm_commissioner/invite_user_taxon.rb
1146
1134
  - app/models/spree_cm_commissioner/invoice.rb
1147
1135
  - app/models/spree_cm_commissioner/line_item_decorator.rb
1148
1136
  - app/models/spree_cm_commissioner/line_item_seat.rb
@@ -1212,7 +1200,6 @@ files:
1212
1200
  - app/models/spree_cm_commissioner/taxon_decorator.rb
1213
1201
  - app/models/spree_cm_commissioner/taxon_home_banner.rb
1214
1202
  - app/models/spree_cm_commissioner/taxon_vendor.rb
1215
- - app/models/spree_cm_commissioner/taxon_video_banner.rb
1216
1203
  - app/models/spree_cm_commissioner/taxon_web_banner.rb
1217
1204
  - app/models/spree_cm_commissioner/taxonomy_decorator.rb
1218
1205
  - app/models/spree_cm_commissioner/telegram_bot.rb
@@ -1245,7 +1232,6 @@ files:
1245
1232
  - app/models/spree_cm_commissioner/vendor_promotion_rule.rb
1246
1233
  - app/models/spree_cm_commissioner/vendor_stop.rb
1247
1234
  - app/models/spree_cm_commissioner/vendor_web_promotion_banner.rb
1248
- - app/models/spree_cm_commissioner/video.rb
1249
1235
  - app/models/spree_cm_commissioner/video_on_demand.rb
1250
1236
  - app/models/spree_cm_commissioner/waiting_room_session.rb
1251
1237
  - app/models/spree_cm_commissioner/webhooks.rb
@@ -1342,7 +1328,6 @@ files:
1342
1328
  - app/overrides/spree/admin/stores/form/_layout/default_notification_image.html.erb.deface
1343
1329
  - app/overrides/spree/admin/taxonomies/_form/kind.html.erb.deface
1344
1330
  - app/overrides/spree/admin/taxons/_form/assets_form.html.erb.deface
1345
- - app/overrides/spree/admin/taxons/_form/available_on.html.erb.deface
1346
1331
  - app/overrides/spree/admin/taxons/_form/background_color_and_foreground_color.html.erb.deface
1347
1332
  - app/overrides/spree/admin/taxons/_form/custom_redirect_url.html.erb.deface
1348
1333
  - app/overrides/spree/admin/taxons/_form/kind_html.erb.deface
@@ -1407,14 +1392,10 @@ files:
1407
1392
  - app/serializers/.gitkeep
1408
1393
  - app/serializers/concerns/spree_cm_commissioner/api/v2/resource_serializer_concern_decorator.rb
1409
1394
  - app/serializers/spree/api/v2/platform/create_date_specific_item_adjustment_serializer.rb
1410
- - app/serializers/spree/v2/organizer/asset_serializer.rb
1411
1395
  - app/serializers/spree/v2/organizer/base_serializer.rb
1412
1396
  - app/serializers/spree/v2/organizer/image_serializer.rb
1413
- - app/serializers/spree/v2/organizer/invite_serializer.rb
1414
1397
  - app/serializers/spree/v2/organizer/s3_signed_url_serializer.rb
1415
- - app/serializers/spree/v2/organizer/taxon_serializer.rb
1416
1398
  - app/serializers/spree/v2/organizer/ticket_serializer.rb
1417
- - app/serializers/spree/v2/organizer/user_serializer.rb
1418
1399
  - app/serializers/spree/v2/storefront/accommodation_serializer.rb
1419
1400
  - app/serializers/spree/v2/storefront/address_serializer_decorator.rb
1420
1401
  - app/serializers/spree/v2/storefront/cart_serializer_decorator.rb
@@ -1450,12 +1431,10 @@ files:
1450
1431
  - app/serializers/spree/v2/tenant/homepage_section_relatable_serializer.rb
1451
1432
  - app/serializers/spree/v2/tenant/homepage_section_serializer.rb
1452
1433
  - app/serializers/spree/v2/tenant/role_serializer.rb
1453
- - app/serializers/spree/v2/tenant/s3_signed_url_serializer.rb
1454
1434
  - app/serializers/spree/v2/tenant/taxon_serializer.rb
1455
1435
  - app/serializers/spree/v2/tenant/taxonomy_serializer.rb
1456
1436
  - app/serializers/spree/v2/tenant/user_device_token_serializer.rb
1457
1437
  - app/serializers/spree/v2/tenant/user_identity_provider_serializer.rb
1458
- - app/serializers/spree/v2/tenant/user_profile_serializer.rb
1459
1438
  - app/serializers/spree/v2/tenant/user_serializer.rb
1460
1439
  - app/serializers/spree/v2/tenant/vendor_image_serializer.rb
1461
1440
  - app/serializers/spree/v2/tenant/vendor_serializer.rb
@@ -1510,7 +1489,6 @@ files:
1510
1489
  - app/serializers/spree_cm_commissioner/v2/storefront/user_contact_serializer.rb
1511
1490
  - app/serializers/spree_cm_commissioner/v2/storefront/user_identity_provider_serializer.rb
1512
1491
  - app/serializers/spree_cm_commissioner/v2/storefront/vendor_include_product_serializer.rb
1513
- - app/serializers/spree_cm_commissioner/v2/storefront/video_serializer.rb
1514
1492
  - app/serializers/spree_cm_commissioner/v2/storefront/waiting_room_session_serializer.rb
1515
1493
  - app/services/.gitkeep
1516
1494
  - app/services/sms_adapter/base.rb
@@ -1946,10 +1924,7 @@ files:
1946
1924
  - app/views/spree/transit/vendors/_form.html.erb
1947
1925
  - app/views/spree/transit/vendors/_tabs.html.erb
1948
1926
  - app/views/spree/transit/vendors/edit.html.erb
1949
- - app/views/spree_cm_commissioner/crew_invite_mailer/_mailer_stylesheets.html.erb
1950
- - app/views/spree_cm_commissioner/crew_invite_mailer/send_crew_invite_email.html.erb
1951
1927
  - app/views/spree_cm_commissioner/guest_cards/show.html.erb
1952
- - app/views/spree_cm_commissioner/layouts/crew_invite_mailer.html.erb
1953
1928
  - app/views/spree_cm_commissioner/layouts/line_item_mailer.html.erb
1954
1929
  - app/views/spree_cm_commissioner/layouts/order_mailer.html.erb
1955
1930
  - app/views/spree_cm_commissioner/layouts/telegram.html.erb
@@ -2253,11 +2228,7 @@ files:
2253
2228
  - db/migrate/20250217075228_add_indexes_to_cm_guests.rb
2254
2229
  - db/migrate/20250220021751_remove_unique_constraint_from_email_in_spree_users.rb
2255
2230
  - db/migrate/20250226092650_add_index_to_email_in_spree_users.rb
2256
- - db/migrate/20250304101907_create_spree_cm_commissioner_invite.rb
2257
- - db/migrate/20250304101946_create_spree_cm_commissioner_invite_user_taxon.rb
2258
2231
  - db/migrate/20250304155234_add_meta_data_to_spree_vendors.rb
2259
- - db/migrate/20250307013422_add_parent_id_to_cm_place.rb
2260
- - db/migrate/20250314013434_add_available_on_to_spree_taxons.rb
2261
2232
  - docker-compose.yml
2262
2233
  - docs/option_types/attr_types.md
2263
2234
  - docs/private_key.pem
@@ -2310,8 +2281,6 @@ files:
2310
2281
  - lib/spree_cm_commissioner/test_helper/factories/homepage_section_relatable_factory.rb
2311
2282
  - lib/spree_cm_commissioner/test_helper/factories/id_card_factory.rb
2312
2283
  - lib/spree_cm_commissioner/test_helper/factories/image_factory.rb
2313
- - lib/spree_cm_commissioner/test_helper/factories/invite_factory.rb
2314
- - lib/spree_cm_commissioner/test_helper/factories/invite_user_event_factory.rb
2315
2284
  - lib/spree_cm_commissioner/test_helper/factories/line_item_factory.rb
2316
2285
  - lib/spree_cm_commissioner/test_helper/factories/line_item_seat_factory.rb
2317
2286
  - lib/spree_cm_commissioner/test_helper/factories/notification_factory.rb
@@ -2343,7 +2312,6 @@ files:
2343
2312
  - lib/spree_cm_commissioner/test_helper/factories/tenant_factory.rb
2344
2313
  - lib/spree_cm_commissioner/test_helper/factories/transit_place_factory.rb
2345
2314
  - lib/spree_cm_commissioner/test_helper/factories/user_deletion_reasons_factory.rb
2346
- - lib/spree_cm_commissioner/test_helper/factories/user_event_factory.rb
2347
2315
  - lib/spree_cm_commissioner/test_helper/factories/user_factory.rb
2348
2316
  - lib/spree_cm_commissioner/test_helper/factories/user_identity_provider_factory.rb
2349
2317
  - lib/spree_cm_commissioner/test_helper/factories/variant_factory.rb
data/.tool-versions DELETED
@@ -1 +0,0 @@
1
- ruby 3.3.5
@@ -1 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="408" height="66" fill="none"><path fill="#010304" d="M63.27 27.02c1.4-1.91 2.3-3.95 2.69-6.05l.82-4.51c.87-4.8-.26-8.67-3.38-11.52C60.33 2.14 55.8.72 49.95.72H17.81l-4.76 26.14-2.16 11.82-3.18 17.43c-.5 2.73 0 4.98 1.45 6.69 1.46 1.7 3.6 2.56 6.38 2.56h25.69c6.22 0 11.53-1.53 15.78-4.55 4.31-3.06 6.96-7.21 7.9-12.36l.86-4.69c.54-2.99.09-5.72-1.34-8.14-1.22-2.04-2.96-3.62-5.21-4.7 1.58-1.08 2.94-2.39 4.05-3.91zM51.78 43.77l-.72 3.97c-.31 1.68-1.14 2.93-2.54 3.84-1.47.95-3.47 1.43-5.93 1.43H22.27l2.61-14.31h21.67c1.9 0 3.34.48 4.28 1.44.92.94 1.23 2.13.96 3.65zm.76-25.96-.56 3.06c-.34 1.85-1.11 3.28-2.38 4.37-1.26 1.09-2.71 1.62-4.43 1.62H27.02l2.51-13.77h17.7c1.92 0 3.37.44 4.33 1.32.92.84 1.24 1.96.98 3.4"/><path fill="#010304" d="M44.91 26.87v11.82H.74l2.18-11.82zM114.17 19.64c-2.73-1.55-6.09-2.34-9.98-2.34h-8.11c-3.89 0-7.53.79-10.83 2.34-3.32 1.56-6.12 3.8-8.33 6.65-2.21 2.84-3.66 6.15-4.33 9.81l-1.92 10.55c-.67 3.67-.43 6.96.72 9.77 1.15 2.82 3.13 5.03 5.88 6.56 2.73 1.52 6.09 2.29 9.98 2.29h8.11c3.95 0 7.62-.77 10.91-2.29 3.31-1.53 6.11-3.74 8.31-6.56 2.2-2.81 3.66-6.1 4.33-9.77l1.92-10.55c.67-3.67.42-6.97-.75-9.81-1.17-2.85-3.16-5.08-5.91-6.65M89.63 53.17c-1.89 0-3.25-.66-4.18-2.03-.95-1.4-1.21-3.19-.79-5.49l1.59-8.74c.41-2.26 1.35-4.11 2.8-5.49 1.42-1.37 3.06-2.03 5.01-2.03h7.75c1.94 0 3.34.66 4.27 2.03.94 1.38 1.21 3.23.79 5.49l-1.59 8.74c-.41 2.26-1.35 4.11-2.79 5.49-1.43 1.37-3.1 2.03-5.1 2.03h-7.76M167.9 19.64c-2.73-1.55-6.09-2.34-9.98-2.34h-8.11c-3.89 0-7.54.79-10.83 2.34-3.32 1.56-6.12 3.8-8.33 6.65-2.21 2.84-3.66 6.15-4.33 9.81l-1.92 10.55c-.67 3.67-.43 6.95.72 9.77s3.13 5.03 5.88 6.56c2.73 1.52 6.09 2.29 9.98 2.29h8.11c3.95 0 7.62-.77 10.91-2.29 3.31-1.53 6.11-3.74 8.31-6.56 2.2-2.81 3.66-6.1 4.33-9.77l1.92-10.55c.67-3.67.42-6.97-.75-9.81-1.17-2.85-3.16-5.08-5.91-6.65m-29.51 26.02 1.59-8.74c.41-2.26 1.35-4.11 2.8-5.49 1.43-1.37 3.06-2.03 5.01-2.03h7.75c1.95 0 3.34.66 4.27 2.03.94 1.38 1.21 3.23.79 5.49l-1.59 8.74c-.41 2.26-1.35 4.11-2.8 5.49-1.43 1.37-3.09 2.03-5.1 2.03h-7.75c-1.88 0-3.25-.66-4.18-2.03-.95-1.4-1.21-3.19-.79-5.49M230.08 18.75h-16.44l-19.73 16.82L200.28.63h-13.81l-11.78 64.64h13.81l2.5-13.7 4.64-3.93 10.54 17.63h15.84L206.31 38.7zM265.04 36.88 251.68.63h-12.31l-11.78 64.64h13.72l6.87-37.7 7.91 21.35c.34.92.73 1.73 1.17 2.39l.04.06c.34.52.7.95 1.08 1.28.92.78 2.08 1.18 3.45 1.18h.27c1.37 0 2.68-.4 3.88-1.18.52-.34 1.04-.77 1.52-1.25.68-.65 1.39-1.48 2.12-2.46l15.68-21.35-6.87 37.69h13.72L303.93.64h-12.32l-26.56 36.25zM347.2 22.38c-3-3.37-7.54-5.08-13.48-5.08h-7.21c-3.89 0-7.53.79-10.83 2.34-3.32 1.56-6.12 3.78-8.32 6.6-2.2 2.81-3.66 6.1-4.33 9.77l-2.12 11.63c-.63 3.44-.33 6.54.88 9.2 1.21 2.67 3.22 4.77 5.99 6.23 2.74 1.46 6.1 2.2 9.99 2.2h6.85c3.87 0 7.48-.66 10.71-1.95 3.28-1.32 6.03-3.23 8.17-5.68 1.86-2.12 3.14-4.53 3.83-7.18h-13.8c-.37.67-.94 1.24-1.71 1.74-1.3.83-2.94 1.25-4.87 1.25h-7.03c-1.98 0-3.39-.52-4.31-1.59-.92-1.06-1.21-2.44-.89-4.21l.25-1.39h33.35l1.88-10.33c1.02-5.61 0-10.16-3.01-13.55zm-10.61 13.49H316.7c.45-2.03 1.35-3.68 2.68-4.94 1.42-1.34 3.06-1.99 5.01-1.99h7.3c1.89 0 3.24.61 4.13 1.86.9 1.27 1.15 2.92.77 5.06z"/><path fill="#6444D8" d="m372.06 63.5 8.12-44.57h13.06l-8.12 44.57z"/><path fill="#6444D8" d="M405.25 47.52h-47l2.44-13.22h46.99z"/></svg>
@@ -1,35 +0,0 @@
1
- module Spree
2
- module Api
3
- module V2
4
- module Organizer
5
- class InvitesController < ::Spree::Api::V2::Organizer::BaseController
6
- def show
7
- if invite&.url_valid?
8
- render_serialized_payload { serialize_resource(invite) }
9
- else
10
- render_error_payload(I18n.t('invite.url_not_found'))
11
- end
12
- end
13
-
14
- def update
15
- context = invite.confirm(params[:user_id])
16
-
17
- if context.success?
18
- render_serialized_payload { serialize_resource(context.invite) }
19
- else
20
- render_error_payload({ message: context.message || I18n.t('invite.accept_fail') })
21
- end
22
- end
23
-
24
- def invite
25
- @invite ||= SpreeCmCommissioner::Invite.find_by!(token: params[:id])
26
- end
27
-
28
- def resource_serializer
29
- ::Spree::V2::Organizer::InviteSerializer
30
- end
31
- end
32
- end
33
- end
34
- end
35
- end
@@ -1,52 +0,0 @@
1
- module Spree
2
- module Api
3
- module V2
4
- module Tenant
5
- class ProfileImagesController < BaseController
6
- before_action :require_spree_current_user
7
- before_action :required_schema_validation!, except: [:destroy]
8
-
9
- def update
10
- context = SpreeCmCommissioner::ProfileImageUpdater.call(
11
- user: spree_current_user,
12
- url: schema.output.fetch(:url)
13
- )
14
- if context.success?
15
- render_serialized_payload { serialize_resource(context.result) }
16
- else
17
- render_error_payload(context.message)
18
- end
19
- end
20
-
21
- def destroy
22
- context = SpreeCmCommissioner::ProfileImageDestroyer.call(
23
- user: spree_current_user
24
- )
25
- if context.success?
26
- render_serialized_payload(204) { serialize_resource(context.result) }
27
- else
28
- render_error_payload(context.message)
29
- end
30
- end
31
-
32
- def required_schema_validation!
33
- return true if required_schema.nil?
34
-
35
- @schema = required_schema.new(request: request, locale: locale, user: spree_current_user)
36
- return true if schema.success?
37
-
38
- raise SchemaValidationError, schema.error_message
39
- end
40
-
41
- def required_schema
42
- SpreeCmCommissioner::ProfileImageRequestSchema
43
- end
44
-
45
- def resource_serializer
46
- Spree::V2::Tenant::UserProfileSerializer
47
- end
48
- end
49
- end
50
- end
51
- end
52
- end
@@ -1,29 +0,0 @@
1
- module Spree
2
- module Api
3
- module V2
4
- module Tenant
5
- class S3SignedUrlsController < BaseController
6
- def show
7
- if resource.error_message.blank?
8
- render_serialized_payload { serialize_resource(resource) }
9
- else
10
- render_error_payload(resource.error_message)
11
- end
12
- end
13
-
14
- def resource
15
- SpreeCmCommissioner::S3PresignedUrlBuilder.call(
16
- bucket_name: params[:bucket_name],
17
- object_key: params[:object_key],
18
- file_name: params[:file_name]
19
- )
20
- end
21
-
22
- def resource_serializer
23
- Spree::V2::Tenant::S3SignedUrlSerializer
24
- end
25
- end
26
- end
27
- end
28
- end
29
- end
@@ -1,63 +0,0 @@
1
- module SpreeCmCommissioner
2
- class CrewInviter < BaseInteractor
3
- delegate :id, :invitee_id, to: :context
4
-
5
- def call
6
- validate_data
7
- assign_role_to_user
8
- create_user_event
9
- update_invite_user_event
10
- context.invite = crew_invite
11
- end
12
-
13
- private
14
-
15
- def validate_data
16
- if invite_user_event.nil?
17
- context.fail!(message: I18n.t('invite.url_not_found'))
18
- elsif !invite_user_event.invite.url_valid?
19
- context.fail!(message: I18n.t('invite.url_expired'))
20
- end
21
- end
22
-
23
- def assign_role_to_user
24
- return if user.operator?
25
-
26
- role = Spree::Role.find_by(name: 'operator')
27
- role_user = Spree::RoleUser.new(user_id: user.id, role_id: role.id)
28
- role_user.save
29
- end
30
-
31
- def create_user_event
32
- @user_event = SpreeCmCommissioner::UserEvent.new(
33
- taxon_id: crew_invite.taxon_id,
34
- user_id: user.id
35
- )
36
-
37
- return if @user_event.save
38
-
39
- context.fail!(message: I18n.t('invite.already_invited'))
40
- end
41
-
42
- def update_invite_user_event
43
- invite_user_event.user_taxon_id = @user_event.id
44
- invite_user_event.confirmed_at = Time.current
45
-
46
- return if @invite_user_event.save
47
-
48
- context.fail!(message: I18n.t('invite.update_fail'))
49
- end
50
-
51
- def crew_invite
52
- @crew_invite ||= SpreeCmCommissioner::CrewInvite.find(id)
53
- end
54
-
55
- def invite_user_event
56
- @invite_user_event ||= crew_invite.invite_user_events.find_by(email: user.email, confirmed_at: nil)
57
- end
58
-
59
- def user
60
- @user ||= Spree::User.find(invitee_id)
61
- end
62
- end
63
- end
@@ -1,16 +0,0 @@
1
- module SpreeCmCommissioner
2
- class ProfileImageDestroyer < BaseInteractor
3
- delegate :user, to: :context
4
-
5
- def call
6
- profile_image = SpreeCmCommissioner::UserProfile.find_by(viewable: user)
7
-
8
- if profile_image
9
- profile_image.destroy
10
- context.result = profile_image
11
- else
12
- context.fail!(message: 'No profile image to delete')
13
- end
14
- end
15
- end
16
- end
@@ -1,13 +0,0 @@
1
- module SpreeCmCommissioner
2
- class CrewInviteMailer < Spree::BaseMailer
3
- layout 'spree_cm_commissioner/layouts/crew_invite_mailer'
4
-
5
- def send_crew_invite_email(invite_user_event_id)
6
- @invite_user_event = SpreeCmCommissioner::InviteUserEvent.find(invite_user_event_id)
7
-
8
- subject = Spree::Store.default.name.to_s
9
-
10
- mail(from: from_address, to: @invite_user_event.email, subject: subject)
11
- end
12
- end
13
- end
@@ -1,7 +0,0 @@
1
- module SpreeCmCommissioner
2
- class CrewInvite < Invite
3
- def confirm(invitee_id)
4
- SpreeCmCommissioner::CrewInviter.call(id: id, invitee_id: invitee_id)
5
- end
6
- end
7
- end
@@ -1,22 +0,0 @@
1
- module SpreeCmCommissioner
2
- class Invite < SpreeCmCommissioner::Base
3
- belongs_to :taxon, class_name: 'Spree::Taxon'
4
- belongs_to :inviter, class_name: 'Spree::User'
5
- has_many :invite_user_events, class_name: 'SpreeCmCommissioner::InviteUserEvent', dependent: :destroy
6
- scope :active, -> { where('expires_at > ?', Time.current) }
7
-
8
- after_create :set_expiration
9
-
10
- def set_expiration
11
- update(expires_at: 3.days.from_now)
12
- end
13
-
14
- def invite_url
15
- "#{Spree::Store.default.formatted_url}/invite/#{token}?utm_source=email"
16
- end
17
-
18
- def url_valid?
19
- expires_at.present? && expires_at > Time.current
20
- end
21
- end
22
- end
@@ -1,5 +0,0 @@
1
- module SpreeCmCommissioner
2
- class InviteUserEvent < InviteUserTaxon
3
- alias_attribute :user_event, :user_taxon
4
- end
5
- end
@@ -1,11 +0,0 @@
1
- module SpreeCmCommissioner
2
- class InviteUserTaxon < SpreeCmCommissioner::Base
3
- belongs_to :user_taxon, class_name: 'SpreeCmCommissioner::UserTaxon'
4
- belongs_to :invite, class_name: 'SpreeCmCommissioner::Invite'
5
- after_create :send_crew_invite_email
6
-
7
- def send_crew_invite_email
8
- SpreeCmCommissioner::CrewInviteMailer.send_crew_invite_email(id).deliver_later
9
- end
10
- end
11
- end
@@ -1,4 +0,0 @@
1
- module SpreeCmCommissioner
2
- class TaxonVideoBanner < Video
3
- end
4
- end
@@ -1,15 +0,0 @@
1
- module SpreeCmCommissioner
2
- class Video < Spree::Asset
3
- include ::Rails.application.routes.url_helpers
4
-
5
- has_one_attached :attachment
6
-
7
- validates :attachment, attached: true, content_type: %r{\Avideo/.*\z}
8
-
9
- default_scope { includes(attachment_attachment: :blob) }
10
-
11
- def original_url
12
- cdn_image_url(attachment)
13
- end
14
- end
15
- end
@@ -1,18 +0,0 @@
1
- <!-- insert_before "erb[loud]:contains('field_container :parent_id')" -->
2
-
3
- <div class="form-group">
4
- <%= label_tag nil, Spree.t(:available_on) %>
5
- <div class="input-group datePickerFrom"
6
- data-wrap="true"
7
- data-alt-input="true"
8
- data-min-date="<%= Time.now.strftime('%Y-%m-%d') %>"
9
- data-enable-time="true">
10
- <%= f.text_field :available_on,
11
- value: @taxon.available_on,
12
- placeholder: Spree.t(:select_a_date),
13
- class: 'form-control shadow-none',
14
- 'data-input':'' %>
15
-
16
- <%= render partial: 'spree/admin/shared/cal_close' %>
17
- </div>
18
- </div>
@@ -1,11 +0,0 @@
1
- module Spree
2
- module V2
3
- module Organizer
4
- class AssetSerializer < BaseSerializer
5
- include ::Spree::Api::V2::ImageTransformationConcern
6
-
7
- attributes :alt, :original_url, :position, :styles
8
- end
9
- end
10
- end
11
- end
@@ -1,11 +0,0 @@
1
- module Spree
2
- module V2
3
- module Organizer
4
- class InviteSerializer < BaseSerializer
5
- attributes :token, :expires_at
6
- belongs_to :taxon, serializer: Spree::V2::Organizer::TaxonSerializer
7
- belongs_to :inviter, serializer: Spree::V2::Organizer::UserSerializer
8
- end
9
- end
10
- end
11
- end
@@ -1,10 +0,0 @@
1
- module Spree
2
- module V2
3
- module Organizer
4
- class TaxonSerializer < BaseSerializer
5
- attributes :name
6
- has_one :app_banner, serializer: Spree::V2::Organizer::AssetSerializer
7
- end
8
- end
9
- end
10
- end
@@ -1,9 +0,0 @@
1
- module Spree
2
- module V2
3
- module Organizer
4
- class UserSerializer < BaseSerializer
5
- attributes :first_name, :last_name, :email
6
- end
7
- end
8
- end
9
- end
@@ -1,9 +0,0 @@
1
- module Spree
2
- module V2
3
- module Tenant
4
- class S3SignedUrlSerializer < BaseSerializer
5
- attribute :host, :fields, :url
6
- end
7
- end
8
- end
9
- end
@@ -1,8 +0,0 @@
1
- module Spree
2
- module V2
3
- module Tenant
4
- class UserProfileSerializer < Spree::V2::Tenant::AssetSerializer
5
- end
6
- end
7
- end
8
- end
@@ -1,9 +0,0 @@
1
- module SpreeCmCommissioner
2
- module V2
3
- module Storefront
4
- class VideoSerializer < BaseSerializer
5
- attributes :alt, :original_url
6
- end
7
- end
8
- end
9
- end
@@ -1,82 +0,0 @@
1
- <style>
2
- body, table, td {
3
- font-family: 'Poppins', Arial, sans-serif;
4
- margin: 0;
5
- padding: 0;
6
- }
7
-
8
- .content-wrapper {
9
- max-width: 500px;
10
- margin: 0 auto;
11
- border: 1px solid grey;
12
- border-top: none;
13
- }
14
-
15
- .main-content{
16
- padding-top: 10px;
17
- padding-bottom: 25px;
18
- }
19
-
20
- .logo {
21
- display: block;
22
- width: 150px;
23
- margin-top: 10px;
24
- margin-bottom: 20px;
25
- }
26
-
27
- .heading-1 {
28
- font-size: 24px;
29
- text-align: center;
30
- line-height: 1.4;
31
- margin-bottom: 15px;
32
- }
33
-
34
- .bar-large {
35
- height: 10px;
36
- background-color: #5D54D9;
37
- margin-bottom: 20px;
38
-
39
- }
40
-
41
- .bar-thin {
42
- height: 3px;
43
- height: 1px;
44
- background-color: grey;
45
- width: 100%;
46
- margin: 20px auto;
47
- }
48
-
49
- .heading-2 {
50
- font-size: 16px;
51
- text-align: center;
52
- line-height: 1.5;
53
- }
54
-
55
- .title-bold {
56
- font-weight: bold;
57
- color: #000;
58
- }
59
-
60
- .action-button {
61
- display: inline-block;
62
- background-color: #5D54D9;
63
- border-radius: 24px;
64
- font-size: 14px;
65
- width: 222px;
66
- height: 50px;
67
- text-align: center;
68
- line-height: 50px;
69
- text-decoration: none;
70
- cursor: pointer;
71
- margin: 15px 0;
72
- color: white !important;
73
- text-decoration: none;
74
- }
75
-
76
- .heading-3 {
77
- font-size: 12px;
78
- text-align: center;
79
- color: #888;
80
- }
81
- </style>
82
-
@@ -1,33 +0,0 @@
1
- <table role="presentation" cellspacing="0" cellpadding="0" border="0" align="center" width="100%">
2
- <tr>
3
- <td align="center">
4
- <div class="content-wrapper">
5
- <div class="bar-large"></div>
6
- <div class="main-content">
7
- <div class="content">
8
- <div><%= image_tag "mailer/bookme-plus_light.svg", class: "logo" %></div>
9
- <div class="heading-1">
10
- Become a part of the <br> event <strong> <%= @invite_user_event.invite.taxon.name %> </strong>
11
- </div>
12
- <div class="bar-thin"></div>
13
- <div class="heading-2">
14
- <%= @invite_user_event.invite.inviter.full_name.presence || @invite_user_event.inviter.email %> invites you to join the <br>
15
- <span class="title-bold">Check-in Crew</span> for the event <br>
16
- <%= @invite_user_event.invite.taxon.name %>
17
- </div>
18
- <div style="text-align: center;">
19
- <a href="<%= @invite_user_event.invite.invite_url %>" class="action-button">
20
- Get Started
21
- </a>
22
- </div>
23
- <div class="heading-3">
24
- Please note that this invitation will expire<br>
25
- in <%= ((@invite_user_event.invite.expires_at - Time.current) / 1.hour).round %> hours.
26
- </div>
27
- </div>
28
- </div>
29
- </div>
30
- </td>
31
- </tr>
32
- </table>
33
-
@@ -1,15 +0,0 @@
1
-
2
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
- <html>
4
- <head>
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
6
- <meta name="x-apple-disable-message-reformatting"/>
7
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
8
- <link href="https://fonts.googleapis.com/css2?family=Poppins&display=swap" rel="stylesheet">
9
- <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
10
- <%= render partial: 'spree_cm_commissioner/crew_invite_mailer/mailer_stylesheets' %>
11
- </head>
12
- <body>
13
- <%= yield %>
14
- </body>
15
- </html>
@@ -1,12 +0,0 @@
1
- class CreateSpreeCmCommissionerInvite < ActiveRecord::Migration[7.0]
2
- def change
3
- create_table :cm_invites, if_not_exists: true do |t|
4
- t.string :token, null: false, unique: true
5
- t.datetime :expires_at
6
- t.string :type
7
- t.references :inviter, null: false, foreign_key: { to_table: :spree_users }, index: true
8
- t.references :taxon, null: false, foreign_key: { to_table: :spree_taxons }, index: true
9
- t.timestamps
10
- end
11
- end
12
- end
@@ -1,11 +0,0 @@
1
- class CreateSpreeCmCommissionerInviteUserTaxon < ActiveRecord::Migration[7.0]
2
- def change
3
- create_table :cm_invite_user_taxons, if_not_exists: true do |t|
4
- t.references :invite, foreign_key: { to_table: :cm_invites }, null: true, index: true
5
- t.references :user_taxon, foreign_key: { to_table: :cm_user_taxons }, null: true, index: true
6
- t.string :email, index: true
7
- t.datetime :confirmed_at
8
- t.timestamps
9
- end
10
- end
11
- end
@@ -1,9 +0,0 @@
1
- class AddParentIdToCmPlace < ActiveRecord::Migration[7.0]
2
- def change
3
- unless column_exists?(:cm_places, :parent_id)
4
- add_column :cm_places, :parent_id, :integer, null: true
5
- add_foreign_key :cm_places, :cm_places, column: :parent_id
6
- add_index :cm_places, :parent_id
7
- end
8
- end
9
- end
@@ -1,5 +0,0 @@
1
- class AddAvailableOnToSpreeTaxons < ActiveRecord::Migration[7.0]
2
- def change
3
- add_column :spree_taxons, :available_on, :datetime, if_not_exists: true
4
- end
5
- end
@@ -1,7 +0,0 @@
1
- FactoryBot.define do
2
- factory :invite, class: SpreeCmCommissioner::Invite do
3
- token { SecureRandom.hex(16) }
4
- taxon { create(:taxon) }
5
- inviter { create(:user) }
6
- end
7
- end
@@ -1,5 +0,0 @@
1
- FactoryBot.define do
2
- factory :invite_user_event, class: SpreeCmCommissioner::InviteUserEvent do
3
- invite { create(:invite) }
4
- end
5
- end
@@ -1,6 +0,0 @@
1
- FactoryBot.define do
2
- factory :user_event, class: SpreeCmCommissioner::UserEvent do
3
- taxon { create(:taxon) }
4
- user { create(:user) }
5
- end
6
- end