spree_cm_commissioner 2.8.3.pre.pre8 → 2.8.3
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 +4 -4
- data/.github/workflows/test_and_build_gem.yml +1 -2
- data/.gitignore +0 -6
- data/Gemfile.lock +1 -1
- data/app/controllers/concerns/spree_cm_commissioner/content_cachable.rb +0 -2
- data/app/controllers/spree/admin/guests_controller.rb +1 -1
- data/app/controllers/spree/admin/homepage_section_controller.rb +1 -4
- data/app/controllers/spree/admin/stock_managements_controller.rb +1 -1
- data/app/controllers/spree/admin/taxons_controller_decorator.rb +0 -19
- data/app/controllers/spree/api/v2/storefront/homepage_sections_controller.rb +0 -1
- data/app/controllers/spree/api/v2/tenant/base_controller.rb +0 -4
- data/app/controllers/spree/api/v2/tenant/homepage_sections_controller.rb +0 -1
- data/app/controllers/spree/api/v2/tenant/products_controller.rb +1 -1
- data/app/controllers/spree/api/v2/tenant/taxons_controller.rb +1 -1
- data/app/controllers/spree/api/v2/tenant/trips_controller.rb +0 -11
- data/app/controllers/spree_cm_commissioner/admin/orders_controller_decorator.rb +3 -7
- data/app/controllers/spree_cm_commissioner/admin/products_controller_decorator.rb +0 -19
- data/app/finders/spree_cm_commissioner/events/find_matches.rb +0 -1
- data/app/helpers/spree_cm_commissioner/admin/guest_helper.rb +0 -10
- data/app/helpers/spree_cm_commissioner/admin/homepage_segment_helper.rb +0 -2
- data/app/models/concerns/spree_cm_commissioner/homepage_section_bitwise.rb +1 -2
- data/app/models/concerns/spree_cm_commissioner/line_items_filter_scope.rb +0 -5
- data/app/models/concerns/spree_cm_commissioner/option_type_attr_type.rb +1 -2
- data/app/models/concerns/spree_cm_commissioner/order_state_machine.rb +0 -10
- data/app/models/concerns/spree_cm_commissioner/product_type.rb +1 -1
- data/app/models/concerns/spree_cm_commissioner/taxon_kind.rb +1 -3
- data/app/models/spree_cm_commissioner/guest.rb +0 -20
- data/app/models/spree_cm_commissioner/import.rb +1 -1
- data/app/models/spree_cm_commissioner/line_item_decorator.rb +0 -7
- data/app/models/spree_cm_commissioner/notification.rb +1 -10
- data/app/models/spree_cm_commissioner/order_decorator.rb +3 -13
- data/app/models/spree_cm_commissioner/payment_decorator.rb +0 -19
- data/app/models/spree_cm_commissioner/payment_method_decorator.rb +0 -8
- data/app/models/spree_cm_commissioner/product_decorator.rb +0 -50
- data/app/models/spree_cm_commissioner/reserved_block.rb +0 -2
- data/app/models/spree_cm_commissioner/role_decorator.rb +1 -4
- data/app/models/spree_cm_commissioner/stock/availability_validator_decorator.rb +0 -4
- data/app/models/spree_cm_commissioner/stock/order_availability_checker.rb +0 -3
- data/app/models/spree_cm_commissioner/taxon_decorator.rb +0 -22
- data/app/models/spree_cm_commissioner/taxonomy_decorator.rb +1 -19
- data/app/models/spree_cm_commissioner/tenant.rb +0 -9
- data/app/models/spree_cm_commissioner/trip.rb +0 -31
- data/app/models/spree_cm_commissioner/user_decorator.rb +0 -6
- data/app/models/spree_cm_commissioner/variant_decorator.rb +0 -4
- data/app/models/spree_cm_commissioner/variant_options.rb +0 -4
- data/app/models/spree_cm_commissioner/vendor_decorator.rb +0 -4
- data/app/queries/spree_cm_commissioner/multi_leg_trips_query.rb +8 -31
- data/app/queries/spree_cm_commissioner/single_leg_trips_query.rb +2 -33
- data/app/serializers/spree/v2/storefront/homepage_section_serializer.rb +1 -1
- data/app/serializers/spree/v2/storefront/line_item_serializer_decorator.rb +2 -4
- data/app/serializers/spree/v2/storefront/product_serializer_decorator.rb +2 -3
- data/app/serializers/spree/v2/storefront/role_serializer.rb +1 -1
- data/app/serializers/spree/v2/storefront/taxon_serializer_decorator.rb +1 -2
- data/app/serializers/spree/v2/tenant/dynamic_field_serializer.rb +1 -1
- data/app/serializers/spree/v2/tenant/homepage_section_serializer.rb +1 -1
- data/app/serializers/spree/v2/tenant/role_serializer.rb +1 -1
- data/app/serializers/spree_cm_commissioner/v2/storefront/dynamic_field_serializer.rb +1 -1
- data/app/serializers/spree_cm_commissioner/v2/storefront/guest_serializer.rb +1 -3
- data/app/serializers/spree_cm_commissioner/v2/storefront/reserved_block_serializer.rb +1 -1
- data/app/serializers/spree_cm_commissioner/v2/storefront/trip_query_result_serializer.rb +1 -2
- data/app/serializers/spree_cm_commissioner/v2/storefront/trip_stop_serializer.rb +0 -1
- data/app/services/spree_cm_commissioner/api_caches/invalidate.rb +0 -12
- data/app/services/spree_cm_commissioner/check_ins/create_bulk.rb +5 -11
- data/app/services/spree_cm_commissioner/inventory_items/reset.rb +1 -1
- data/app/services/spree_cm_commissioner/reserved_blocks/reserve.rb +1 -2
- data/app/views/spree/admin/guests/_table.html.erb +87 -82
- data/app/views/spree/admin/homepage_section/_form.html.erb +0 -5
- data/config/initializers/spree_permitted_attributes.rb +0 -8
- data/config/locales/en.yml +1 -105
- data/config/locales/km.yml +0 -133
- data/config/routes.rb +0 -48
- data/lib/spree_cm_commissioner/trip_query_result.rb +0 -9
- data/lib/spree_cm_commissioner/trip_result.rb +2 -5
- data/lib/spree_cm_commissioner/version.rb +1 -1
- data/lib/spree_cm_commissioner.rb +1 -7
- data/spree_cm_commissioner.gemspec +1 -1
- metadata +4 -202
- data/app/controllers/spree/admin/order_ticket_transfers_controller.rb +0 -25
- data/app/controllers/spree/admin/ticket_transfer_rules_controller.rb +0 -47
- data/app/controllers/spree/admin/ticket_transfers_controller.rb +0 -61
- data/app/controllers/spree/api/v2/storefront/account/recipients_controller.rb +0 -32
- data/app/controllers/spree/api/v2/storefront/preview_products_controller.rb +0 -48
- data/app/controllers/spree/api/v2/storefront/preview_sections_controller.rb +0 -27
- data/app/controllers/spree/api/v2/storefront/preview_taxons_controller.rb +0 -18
- data/app/controllers/spree/api/v2/storefront/products_controller_decorator.rb +0 -15
- data/app/controllers/spree/api/v2/storefront/taxons_controller_decorator.rb +0 -15
- data/app/controllers/spree/api/v2/storefront/ticket_transfer_acceptances_controller.rb +0 -32
- data/app/controllers/spree/api/v2/storefront/ticket_transfers_controller.rb +0 -117
- data/app/controllers/spree/api/v2/tenant/advertisements_controller.rb +0 -24
- data/app/controllers/spree/api/v2/tenant/episodes_controller.rb +0 -38
- data/app/controllers/spree/api/v2/tenant/free_vote_claims_controller.rb +0 -37
- data/app/controllers/spree/api/v2/tenant/preview_products_controller.rb +0 -47
- data/app/controllers/spree/api/v2/tenant/preview_sections_controller.rb +0 -26
- data/app/controllers/spree/api/v2/tenant/preview_shows_controller.rb +0 -19
- data/app/controllers/spree/api/v2/tenant/preview_taxons_controller.rb +0 -19
- data/app/controllers/spree/api/v2/tenant/show_contestants_controller.rb +0 -52
- data/app/controllers/spree/api/v2/tenant/show_elimination_sessions_controller.rb +0 -57
- data/app/controllers/spree/api/v2/tenant/show_people_controller.rb +0 -49
- data/app/controllers/spree/api/v2/tenant/show_person_assignments_controller.rb +0 -36
- data/app/controllers/spree/api/v2/tenant/shows_controller.rb +0 -36
- data/app/controllers/spree/api/v2/tenant/votes_controller.rb +0 -94
- data/app/controllers/spree/api/v2/tenant/voting_contestants_controller.rb +0 -43
- data/app/controllers/spree/api/v2/tenant/voting_credit_transactions_controller.rb +0 -41
- data/app/controllers/spree/api/v2/tenant/voting_credits_controller.rb +0 -31
- data/app/helpers/spree_cm_commissioner/admin/ticket_transfers_helper.rb +0 -32
- data/app/jobs/spree_cm_commissioner/expire_ticket_transfer_job.rb +0 -10
- data/app/jobs/spree_cm_commissioner/show_contestants/import_job.rb +0 -9
- data/app/jobs/spree_cm_commissioner/vendor_route_metrics/decrease_trip_count_job.rb +0 -17
- data/app/jobs/spree_cm_commissioner/vendor_route_metrics/increase_trip_count_job.rb +0 -14
- data/app/jobs/spree_cm_commissioner/vote_fraud_event_job.rb +0 -9
- data/app/jobs/spree_cm_commissioner/voting_credit_allocation_job.rb +0 -10
- data/app/jobs/spree_cm_commissioner/voting_credit_de_allocation_job.rb +0 -10
- data/app/models/concerns/spree_cm_commissioner/ticket_transferable.rb +0 -15
- data/app/models/concerns/spree_cm_commissioner/voting_session_live_stream_concern.rb +0 -41
- data/app/models/spree_cm_commissioner/imports/import_contestant.rb +0 -7
- data/app/models/spree_cm_commissioner/maintenance_tasks/voting_session.rb +0 -36
- data/app/models/spree_cm_commissioner/preview_role.rb +0 -8
- data/app/models/spree_cm_commissioner/role_user_decorator.rb +0 -8
- data/app/models/spree_cm_commissioner/show.rb +0 -163
- data/app/models/spree_cm_commissioner/show_contestant.rb +0 -39
- data/app/models/spree_cm_commissioner/show_contestant_image.rb +0 -11
- data/app/models/spree_cm_commissioner/show_contestant_video.rb +0 -15
- data/app/models/spree_cm_commissioner/show_episode.rb +0 -108
- data/app/models/spree_cm_commissioner/show_person.rb +0 -15
- data/app/models/spree_cm_commissioner/show_person_assignment.rb +0 -21
- data/app/models/spree_cm_commissioner/show_person_image.rb +0 -11
- data/app/models/spree_cm_commissioner/ticket_transfer.rb +0 -191
- data/app/models/spree_cm_commissioner/ticket_transfer_rule.rb +0 -88
- data/app/models/spree_cm_commissioner/vendor_route_metric.rb +0 -25
- data/app/models/spree_cm_commissioner/vote.rb +0 -16
- data/app/models/spree_cm_commissioner/vote_fraud_event.rb +0 -20
- data/app/models/spree_cm_commissioner/voting_contestant.rb +0 -100
- data/app/models/spree_cm_commissioner/voting_credit.rb +0 -72
- data/app/models/spree_cm_commissioner/voting_credit_transaction.rb +0 -55
- data/app/models/spree_cm_commissioner/voting_session.rb +0 -216
- data/app/models/spree_cm_commissioner/voting_session_stat.rb +0 -8
- data/app/notifications/spree_cm_commissioner/ticket_transfer_accepted_notification.rb +0 -48
- data/app/notifications/spree_cm_commissioner/ticket_transfer_completed_notification.rb +0 -48
- data/app/notifications/spree_cm_commissioner/ticket_transfer_expired_notification.rb +0 -46
- data/app/notifications/spree_cm_commissioner/ticket_transfer_received_notification.rb +0 -48
- data/app/notifications/spree_cm_commissioner/ticket_transfer_rejected_notification.rb +0 -48
- data/app/overrides/spree/admin/products/_form/allow_gift_transfer.html.erb.deface +0 -9
- data/app/overrides/spree/admin/products/_form/allow_transfer.html.erb.deface +0 -9
- data/app/overrides/spree/admin/products/_form/preview_checkbox.html.erb.deface +0 -9
- data/app/overrides/spree/admin/shared/_order_tabs/ticket_transfers.html.erb.deface +0 -10
- data/app/overrides/spree/admin/shared/sub_menu/_product/ticket_transfers_tab.html.erb.deface +0 -3
- data/app/overrides/spree/admin/taxons/_form/preview_checkbox.html.erb.deface +0 -7
- data/app/queries/spree_cm_commissioner/recipient_searcher_query.rb +0 -14
- data/app/serializers/spree/v2/tenant/advertisement_serializer.rb +0 -11
- data/app/serializers/spree/v2/tenant/campaign_serializer.rb +0 -13
- data/app/serializers/spree/v2/tenant/show_contestant_serializer.rb +0 -21
- data/app/serializers/spree/v2/tenant/show_episode_serializer.rb +0 -20
- data/app/serializers/spree/v2/tenant/show_person_assignment_serializer.rb +0 -16
- data/app/serializers/spree/v2/tenant/show_person_serializer.rb +0 -13
- data/app/serializers/spree/v2/tenant/show_serializer.rb +0 -21
- data/app/serializers/spree/v2/tenant/video_serializer.rb +0 -9
- data/app/serializers/spree/v2/tenant/vote_package_serializer.rb +0 -9
- data/app/serializers/spree/v2/tenant/vote_serializer.rb +0 -14
- data/app/serializers/spree/v2/tenant/voting_contestant_serializer.rb +0 -23
- data/app/serializers/spree/v2/tenant/voting_credit_serializer.rb +0 -10
- data/app/serializers/spree/v2/tenant/voting_credit_transaction_serializer.rb +0 -14
- data/app/serializers/spree/v2/tenant/voting_session_serializer.rb +0 -21
- data/app/serializers/spree_cm_commissioner/v2/storefront/guest_minimal_serializer.rb +0 -30
- data/app/serializers/spree_cm_commissioner/v2/storefront/line_item_minimal_serializer.rb +0 -57
- data/app/serializers/spree_cm_commissioner/v2/storefront/recipient_serializer.rb +0 -13
- data/app/serializers/spree_cm_commissioner/v2/storefront/ticket_transfer_minimal_serializer.rb +0 -17
- data/app/serializers/spree_cm_commissioner/v2/storefront/ticket_transfer_serializer.rb +0 -20
- data/app/services/spree_cm_commissioner/advertisements/sorted_advertisements.rb +0 -61
- data/app/services/spree_cm_commissioner/advertisements/update_campaign_sorted_ads_ids.rb +0 -33
- data/app/services/spree_cm_commissioner/checkout/complete_decorator.rb +0 -22
- data/app/services/spree_cm_commissioner/fraud_check.rb +0 -299
- data/app/services/spree_cm_commissioner/imports/contestants/create.rb +0 -153
- data/app/services/spree_cm_commissioner/show_contestants/normalize_video_highlights.rb +0 -57
- data/app/services/spree_cm_commissioner/show_persons/contestant_assigner.rb +0 -51
- data/app/services/spree_cm_commissioner/ticket_transfers/accept.rb +0 -132
- data/app/services/spree_cm_commissioner/ticket_transfers/cancel.rb +0 -54
- data/app/services/spree_cm_commissioner/ticket_transfers/complete.rb +0 -68
- data/app/services/spree_cm_commissioner/ticket_transfers/eligibility_checker.rb +0 -99
- data/app/services/spree_cm_commissioner/ticket_transfers/expire.rb +0 -47
- data/app/services/spree_cm_commissioner/ticket_transfers/fee_calculator.rb +0 -57
- data/app/services/spree_cm_commissioner/ticket_transfers/initiate.rb +0 -98
- data/app/services/spree_cm_commissioner/ticket_transfers/preview_rule.rb +0 -38
- data/app/services/spree_cm_commissioner/ticket_transfers/reject.rb +0 -55
- data/app/services/spree_cm_commissioner/ticket_transfers/transfer_guest.rb +0 -29
- data/app/services/spree_cm_commissioner/url_embed/youtube_embed.rb +0 -44
- data/app/services/spree_cm_commissioner/vendor_route_metrics/decrease_trip_count.rb +0 -19
- data/app/services/spree_cm_commissioner/vendor_route_metrics/increase_trip_count.rb +0 -24
- data/app/services/spree_cm_commissioner/vote_counters/audit_counters.rb +0 -43
- data/app/services/spree_cm_commissioner/vote_counters/base.rb +0 -31
- data/app/services/spree_cm_commissioner/vote_counters/increment.rb +0 -44
- data/app/services/spree_cm_commissioner/vote_counters/per_contestant_counter.rb +0 -68
- data/app/services/spree_cm_commissioner/vote_counters/rebuild_from_db.rb +0 -70
- data/app/services/spree_cm_commissioner/vote_counters/snapshot_to_db.rb +0 -113
- data/app/services/spree_cm_commissioner/vote_credit_deductor.rb +0 -68
- data/app/services/spree_cm_commissioner/vote_package/create.rb +0 -145
- data/app/services/spree_cm_commissioner/vote_package/update.rb +0 -91
- data/app/services/spree_cm_commissioner/vote_processor.rb +0 -144
- data/app/services/spree_cm_commissioner/voting_contestants/advancer.rb +0 -335
- data/app/services/spree_cm_commissioner/voting_contestants/assigner.rb +0 -40
- data/app/services/spree_cm_commissioner/voting_contestants/bulk_updater.rb +0 -106
- data/app/services/spree_cm_commissioner/voting_credits/allocate.rb +0 -77
- data/app/services/spree_cm_commissioner/voting_credits/claim_free_votes.rb +0 -119
- data/app/services/spree_cm_commissioner/voting_credits/credit_calculator.rb +0 -35
- data/app/services/spree_cm_commissioner/voting_credits/de_allocate.rb +0 -87
- data/app/services/spree_cm_commissioner/voting_leaderboards/calculate_score.rb +0 -67
- data/app/services/spree_cm_commissioner/voting_leaderboards/combined_result.rb +0 -190
- data/app/services/spree_cm_commissioner/voting_sessions/finalize.rb +0 -106
- data/app/views/spree/admin/order_ticket_transfers/show.html.erb +0 -7
- data/app/views/spree/admin/shared/_ticket_transfer_details.html.erb +0 -226
- data/app/views/spree/admin/shared/_ticket_transfer_tabs.html.erb +0 -14
- data/app/views/spree/admin/ticket_transfer_rules/_form.html.erb +0 -193
- data/app/views/spree/admin/ticket_transfer_rules/edit.html.erb +0 -11
- data/app/views/spree/admin/ticket_transfer_rules/index.html.erb +0 -79
- data/app/views/spree/admin/ticket_transfer_rules/new.html.erb +0 -11
- data/app/views/spree/admin/ticket_transfers/_search_form.html.erb +0 -70
- data/app/views/spree/admin/ticket_transfers/_tabs.html.erb +0 -14
- data/app/views/spree/admin/ticket_transfers/index.html.erb +0 -74
- data/app/views/spree/admin/ticket_transfers/show.html.erb +0 -13
- data/app/views/spree/admin/ticket_transfers/state_changes.html.erb +0 -47
- data/db/migrate/20260303101440_add_allow_transfer_to_spree_products.rb +0 -5
- data/db/migrate/20260303101907_create_cm_ticket_transfers.rb +0 -32
- data/db/migrate/20260303102316_add_state_to_cm_guests.rb +0 -7
- data/db/migrate/20260309230148_create_cm_show_people.rb +0 -14
- data/db/migrate/20260309230149_create_cm_show_people_assignments.rb +0 -16
- data/db/migrate/20260310082711_create_cm_show_contestants.rb +0 -28
- data/db/migrate/20260310082720_create_cm_voting_sessions.rb +0 -21
- data/db/migrate/20260310082721_create_cm_voting_contestants.rb +0 -23
- data/db/migrate/20260310082734_add_voting_fields_to_spree_taxons.rb +0 -9
- data/db/migrate/20260310082735_add_type_to_spree_products.rb +0 -6
- data/db/migrate/20260310082749_create_cm_voting_credits.rb +0 -27
- data/db/migrate/20260326080200_create_cm_voting_credit_transactions.rb +0 -27
- data/db/migrate/20260330160000_create_cm_votes.rb +0 -25
- data/db/migrate/20260401072500_add_advanced_from_to_cm_voting_contestants.rb +0 -7
- data/db/migrate/20260402000001_add_voting_credit_scope_to_spree_taxons.rb +0 -6
- data/db/migrate/20260402000002_rename_scopeable_to_votable_in_cm_voting_credits.rb +0 -12
- data/db/migrate/20260403070000_add_name_to_cm_voting_sessions.rb +0 -5
- data/db/migrate/20260406000001_add_vendor_id_to_voting_tables.rb +0 -6
- data/db/migrate/20260406000001_rename_votes_remaining_to_amount_in_cm_voting_credits.rb +0 -11
- data/db/migrate/20260408085255_add_show_id_and_vendor_id_to_cm_voting_sessions.rb +0 -9
- data/db/migrate/20260408100000_create_cm_ticket_transfer_rules.rb +0 -28
- data/db/migrate/20260410120000_add_transfer_type_to_cm_ticket_transfers.rb +0 -5
- data/db/migrate/20260420000001_rename_type_to_credit_type_in_cm_voting_credits.rb +0 -25
- data/db/migrate/20260422000001_create_cm_vote_fraud_events.rb +0 -23
- data/db/migrate/20260422120000_add_settlement_status_to_cm_ticket_transfers.rb +0 -6
- data/db/migrate/20260423000001_add_preview_to_taxons_products_and_sections.rb +0 -11
- data/db/migrate/20260423000002_create_preview_roles.rb +0 -24
- data/db/migrate/20260507000000_add_index_to_cm_ticket_transfers_completed_at.rb +0 -5
- data/db/migrate/20260515120000_add_public_metadata_to_cm_voting_sessions.rb +0 -5
- data/db/migrate/20260518090920_add_unique_voter_count_to_voting_contestants.rb +0 -5
- data/db/migrate/20260518094322_create_cm_voting_session_stats.rb +0 -17
- data/db/migrate/20260520000000_add_number_to_cm_ticket_transfers.rb +0 -6
- data/db/migrate/20260520000001_add_scoring_model_to_cm_voting_sessions.rb +0 -5
- data/db/migrate/20260520000001_optimize_cm_votes_indexes.rb +0 -22
- data/db/migrate/20260525042257_add_vote_number_to_cm_voting_contestants.rb +0 -18
- data/db/migrate/20260527035430_add_confirmed_rank_to_cm_voting_contestants.rb +0 -5
- data/db/migrate/20260527062005_add_eliminated_at_to_cm_show_contestants.rb +0 -5
- data/db/migrate/20260603063652_add_parent_to_voting_sessions.rb +0 -9
- data/db/migrate/20260603090000_add_session_type_to_cm_voting_sessions.rb +0 -6
- data/db/migrate/20260605120908_add_description_to_cm_dynamic_fields.rb +0 -5
- data/db/migrate/20260608000000_add_allow_gift_transfer_to_spree_products.rb +0 -5
- data/db/migrate/20260608000000_add_display_to_cm_voting_sessions.rb +0 -5
- data/db/migrate/20260608000000_create_cm_vendor_route_metrics.rb +0 -25
- data/db/migrate/20260608152251_add_gender_to_cm_reserved_blocks.rb +0 -5
- data/docs/sql/jsonb_query_guide.md +0 -57
- data/lib/spree_cm_commissioner/test_helper/factories/show_episode_factory.rb +0 -12
- data/lib/spree_cm_commissioner/test_helper/factories/show_factory.rb +0 -120
- data/lib/spree_cm_commissioner/test_helper/factories/ticket_transfer_factory.rb +0 -18
- data/lib/spree_cm_commissioner/test_helper/factories/vendor_route_metric_factory.rb +0 -10
- data/lib/spree_cm_commissioner/test_helper/factories/vote_credit_factory.rb +0 -37
- data/lib/spree_cm_commissioner/test_helper/factories/vote_factory.rb +0 -28
- data/lib/spree_cm_commissioner/test_helper/factories/voting_credit_transaction_factory.rb +0 -11
- data/lib/spree_cm_commissioner/test_helper/factories/voting_session_factory.rb +0 -11
- data/lib/tasks/backfill_route_metrics.rake +0 -21
- data/lib/tasks/backfill_vendor_route_metrics.rake +0 -23
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 0774f6d0c4fad7ae396f14326fd6d0965164b74d89f355c3966bc8d1fd9563f9
|
|
4
|
+
data.tar.gz: 002d84c9f1273b54f01d5a25bdecc5f3b475a12e07b32d8e1846c19107fe776f
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 260d54db1f9dd63dbfef02edf2944d02e2c582972b8903815462e438be9cbfb6f5561a7b4a4b64c2cda4af18908c8c7a91958213c06764d1f7ee4d8e2c16dec3
|
|
7
|
+
data.tar.gz: 003d6ecd547b0215851266f06e823f2f7c5e7a8da35f5b4a8051784855a4d095d088b79f700dcadca8820d561d7a9989a3ee0d9eb7940943c3c5777cc7a4742c
|
|
@@ -164,8 +164,7 @@ jobs:
|
|
|
164
164
|
env:
|
|
165
165
|
DATABASE_URL: postgres://myuser:mypassword@localhost:5432/test_db
|
|
166
166
|
run: |
|
|
167
|
-
|
|
168
|
-
bundle exec brakeman --no-threads --no-exit-on-warn
|
|
167
|
+
bundle exec brakeman --no-exit-on-warn
|
|
169
168
|
|
|
170
169
|
test:
|
|
171
170
|
needs: [setup]
|
data/.gitignore
CHANGED
data/Gemfile.lock
CHANGED
|
@@ -16,7 +16,6 @@ module SpreeCmCommissioner
|
|
|
16
16
|
GuestCardClassesController
|
|
17
17
|
SeatLayoutController
|
|
18
18
|
CmsPagesController
|
|
19
|
-
AdvertisementsController
|
|
20
19
|
].freeze
|
|
21
20
|
|
|
22
21
|
# Priority 2: Semi-Static (1 hour)
|
|
@@ -26,7 +25,6 @@ module SpreeCmCommissioner
|
|
|
26
25
|
HomepageDataController
|
|
27
26
|
PopularRoutesController
|
|
28
27
|
RoutePlacesController
|
|
29
|
-
ShowsController
|
|
30
28
|
].freeze
|
|
31
29
|
|
|
32
30
|
# Priority 3: Moderate Freshness (30 minutes)
|
|
@@ -51,10 +51,7 @@ module Spree
|
|
|
51
51
|
def permitted_resource_params
|
|
52
52
|
segment_value = helpers.calculate_segment_value(params[:spree_cm_commissioner_homepage_section])
|
|
53
53
|
|
|
54
|
-
params
|
|
55
|
-
.require(:spree_cm_commissioner_homepage_section)
|
|
56
|
-
.permit(:title, :description, :active, :tenant_id, :preview)
|
|
57
|
-
.merge(segment: segment_value)
|
|
54
|
+
params.require(:spree_cm_commissioner_homepage_section).permit(:title, :description, :active, :tenant_id).merge(segment: segment_value)
|
|
58
55
|
end
|
|
59
56
|
|
|
60
57
|
def load_tenants
|
|
@@ -3,7 +3,6 @@ module Spree
|
|
|
3
3
|
module TaxonsControllerDecorator
|
|
4
4
|
def self.prepended(base)
|
|
5
5
|
base.before_action :build_assets, only: %i[create update]
|
|
6
|
-
base.before_action :normalize_sti_taxon_params, only: %i[create update]
|
|
7
6
|
end
|
|
8
7
|
|
|
9
8
|
# override
|
|
@@ -51,24 +50,6 @@ module Spree
|
|
|
51
50
|
@taxon.build_home_banner(attachment: permitted_resource_params.delete(:home_banner)) if permitted_resource_params[:home_banner]
|
|
52
51
|
@taxon.build_video_banner(attachment: permitted_resource_params.delete(:video_banner)) if permitted_resource_params[:video_banner]
|
|
53
52
|
end
|
|
54
|
-
|
|
55
|
-
# Some admin forms submit STI records under their class key
|
|
56
|
-
# (e.g. :spree_cm_commissioner_show) while Spree update reads :taxon.
|
|
57
|
-
# Merge both into :taxon so all edited fields are persisted.
|
|
58
|
-
def normalize_sti_taxon_params
|
|
59
|
-
return unless @taxon
|
|
60
|
-
|
|
61
|
-
sti_key = @taxon.class.model_name.param_key.to_sym
|
|
62
|
-
sti_params = params[sti_key]
|
|
63
|
-
return unless sti_params.is_a?(::ActionController::Parameters)
|
|
64
|
-
|
|
65
|
-
base_params = params[:taxon]
|
|
66
|
-
base_hash = base_params.is_a?(::ActionController::Parameters) ? base_params.to_unsafe_h : {}
|
|
67
|
-
sti_hash = sti_params.to_unsafe_h
|
|
68
|
-
merged_params = ::ActionController::Parameters.new(base_hash.merge(sti_hash))
|
|
69
|
-
|
|
70
|
-
params[:taxon] = merged_params
|
|
71
|
-
end
|
|
72
53
|
end
|
|
73
54
|
end
|
|
74
55
|
end
|
|
@@ -25,17 +25,6 @@ module Spree
|
|
|
25
25
|
def resource_serializer
|
|
26
26
|
Spree::V2::Tenant::TripSerializer
|
|
27
27
|
end
|
|
28
|
-
|
|
29
|
-
# override
|
|
30
|
-
def serializer_params
|
|
31
|
-
super.merge(
|
|
32
|
-
include_details: include_details?
|
|
33
|
-
)
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
def include_details?
|
|
37
|
-
params.fetch(:include_details, 'true') == 'true'
|
|
38
|
-
end
|
|
39
28
|
end
|
|
40
29
|
end
|
|
41
30
|
end
|
|
@@ -40,13 +40,9 @@ module SpreeCmCommissioner
|
|
|
40
40
|
|
|
41
41
|
# override
|
|
42
42
|
def cancel
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
internal_note = params.dig(:order, :internal_note)
|
|
47
|
-
@order.canceled_by(try_spree_current_user, cancellation_reason: internal_note)
|
|
48
|
-
flash[:success] = Spree.t(:order_canceled)
|
|
49
|
-
end
|
|
43
|
+
internal_note = params.dig(:order, :internal_note)
|
|
44
|
+
@order.canceled_by(try_spree_current_user, cancellation_reason: internal_note)
|
|
45
|
+
flash[:success] = Spree.t(:order_canceled)
|
|
50
46
|
redirect_back fallback_location: spree.edit_admin_order_url(@order)
|
|
51
47
|
end
|
|
52
48
|
|
|
@@ -6,7 +6,6 @@ module SpreeCmCommissioner
|
|
|
6
6
|
base.around_action :set_writing_role, only: %i[index]
|
|
7
7
|
base.after_action :set_tenant_after_update, only: %i[update]
|
|
8
8
|
base.before_action :merge_industry_taxons_into_taxons, only: [:update]
|
|
9
|
-
base.before_action :normalize_sti_product_params, only: %i[create update]
|
|
10
9
|
end
|
|
11
10
|
|
|
12
11
|
# Override
|
|
@@ -52,24 +51,6 @@ module SpreeCmCommissioner
|
|
|
52
51
|
|
|
53
52
|
protected
|
|
54
53
|
|
|
55
|
-
# Some admin forms submit STI records under their class key while
|
|
56
|
-
# Spree update reads :product. Merge both into :product so all edited
|
|
57
|
-
# fields are persisted for STI product subclasses.
|
|
58
|
-
def normalize_sti_product_params
|
|
59
|
-
return unless @product
|
|
60
|
-
|
|
61
|
-
sti_key = @product.class.model_name.param_key.to_sym
|
|
62
|
-
sti_params = params[sti_key]
|
|
63
|
-
return unless sti_params.is_a?(::ActionController::Parameters)
|
|
64
|
-
|
|
65
|
-
base_params = params[:product]
|
|
66
|
-
base_hash = base_params.is_a?(::ActionController::Parameters) ? base_params.to_unsafe_h : {}
|
|
67
|
-
sti_hash = sti_params.to_unsafe_h
|
|
68
|
-
merged_params = ::ActionController::Parameters.new(base_hash.merge(sti_hash))
|
|
69
|
-
|
|
70
|
-
params[:product] = merged_params
|
|
71
|
-
end
|
|
72
|
-
|
|
73
54
|
def merge_industry_taxons_into_taxons
|
|
74
55
|
return if params[:product].blank?
|
|
75
56
|
|
|
@@ -61,16 +61,6 @@ module SpreeCmCommissioner
|
|
|
61
61
|
'badge-info'
|
|
62
62
|
end
|
|
63
63
|
end
|
|
64
|
-
|
|
65
|
-
def guest_state_badge(guest)
|
|
66
|
-
badge_class = case guest.state
|
|
67
|
-
when 'active' then 'badge-success'
|
|
68
|
-
when 'locked' then 'badge-warning'
|
|
69
|
-
when 'transferred' then 'badge-secondary'
|
|
70
|
-
else 'badge-info'
|
|
71
|
-
end
|
|
72
|
-
content_tag(:span, guest.state.humanize, class: "badge #{badge_class}")
|
|
73
|
-
end
|
|
74
64
|
end
|
|
75
65
|
end
|
|
76
66
|
end
|
|
@@ -10,11 +10,6 @@ module SpreeCmCommissioner
|
|
|
10
10
|
scope :accepted, -> { joins(:order).merge(Spree::Order.accepted) }
|
|
11
11
|
scope :paid, -> { joins(:order).merge(Spree::Order.paid) }
|
|
12
12
|
scope :with_bib_prefix, -> { joins(:option_types).where(option_types: { name: 'bib-prefix' }) }
|
|
13
|
-
scope :exclude_ticket_transfer_orders, -> { joins(:order).merge(Spree::Order.not_ticket_transfer) }
|
|
14
|
-
|
|
15
|
-
# Centralizes the rule so that adjustments (e.g. excluding new order kinds in the
|
|
16
|
-
# future) only need to be made here. Use this anywhere inventory is computed.
|
|
17
|
-
scope :affecting_inventory, -> { complete.exclude_ticket_transfer_orders }
|
|
18
13
|
|
|
19
14
|
scope :filter_by_event, lambda { |event|
|
|
20
15
|
case event
|
|
@@ -26,10 +26,8 @@ module SpreeCmCommissioner
|
|
|
26
26
|
|
|
27
27
|
state_machine.after_transition to: :canceled, do: :precalculate_conversion
|
|
28
28
|
state_machine.after_transition to: :canceled, do: :restock_inventory!
|
|
29
|
-
state_machine.after_transition to: :canceled, do: :de_allocate_resources
|
|
30
29
|
|
|
31
30
|
state_machine.after_transition to: :complete, do: :increment_route_fulfilled_order_count
|
|
32
|
-
state_machine.after_transition to: :complete, do: :allocate_resources
|
|
33
31
|
|
|
34
32
|
scope :accepted, -> { where(request_state: 'accepted') }
|
|
35
33
|
|
|
@@ -330,13 +328,5 @@ module SpreeCmCommissioner
|
|
|
330
328
|
factory = OrderTelegramMessageFactory.new(title: title, order: self)
|
|
331
329
|
TelegramNotificationSenderJob.perform_later(chat_id: chat_id, message: factory.message, parse_mode: factory.parse_mode)
|
|
332
330
|
end
|
|
333
|
-
|
|
334
|
-
def allocate_resources
|
|
335
|
-
SpreeCmCommissioner::VotingCreditAllocationJob.perform_later(order_id: id)
|
|
336
|
-
end
|
|
337
|
-
|
|
338
|
-
def de_allocate_resources
|
|
339
|
-
SpreeCmCommissioner::VotingCreditDeAllocationJob.perform_later(order_id: id)
|
|
340
|
-
end
|
|
341
331
|
end
|
|
342
332
|
end
|
|
@@ -5,7 +5,7 @@ module SpreeCmCommissioner
|
|
|
5
5
|
module ProductType
|
|
6
6
|
extend ActiveSupport::Concern
|
|
7
7
|
|
|
8
|
-
PRODUCT_TYPES = %i[accommodation service ecommerce transit
|
|
8
|
+
PRODUCT_TYPES = %i[accommodation service ecommerce transit].freeze
|
|
9
9
|
PERMANENT_STOCK_PRODUCT_TYPES = %w[accommodation service transit].freeze
|
|
10
10
|
PRE_INVENTORY_DAYS = { 'transit' => 90, 'accommodation' => 365, 'service' => 30 }.freeze
|
|
11
11
|
|
|
@@ -3,9 +3,7 @@ module SpreeCmCommissioner
|
|
|
3
3
|
extend ActiveSupport::Concern
|
|
4
4
|
|
|
5
5
|
included do
|
|
6
|
-
enum kind: { category: 0, cms: 1, event: 2, occupation: 3, nationality: 4, organization: 5, transit: 6, industry: 7, agency_category: 8
|
|
7
|
-
ads: 9
|
|
8
|
-
}
|
|
6
|
+
enum kind: { category: 0, cms: 1, event: 2, occupation: 3, nationality: 4, organization: 5, transit: 6, industry: 7, agency_category: 8 }
|
|
9
7
|
end
|
|
10
8
|
end
|
|
11
9
|
end
|
|
@@ -12,7 +12,6 @@ module SpreeCmCommissioner
|
|
|
12
12
|
enum gender: { :other => 0, :male => 1, :female => 2 }
|
|
13
13
|
enum age_group: { :adult => 0, :child => 1 }
|
|
14
14
|
enum nationality_group: { :local => 0, :foreigner => 1 }
|
|
15
|
-
enum state: { active: 0, locked: 1, transferred: 2 }
|
|
16
15
|
enum social_contact_platform: {
|
|
17
16
|
:other => 0,
|
|
18
17
|
:telegram => 1,
|
|
@@ -47,7 +46,6 @@ module SpreeCmCommissioner
|
|
|
47
46
|
has_many :state_changes, as: :stateful, class_name: 'Spree::StateChange'
|
|
48
47
|
has_many :guest_dynamic_fields, dependent: :destroy, class_name: 'SpreeCmCommissioner::GuestDynamicField'
|
|
49
48
|
has_many :check_ins, class_name: 'SpreeCmCommissioner::CheckIn'
|
|
50
|
-
has_many :ticket_transfers, foreign_key: 'from_guest_id', class_name: 'SpreeCmCommissioner::TicketTransfer'
|
|
51
49
|
|
|
52
50
|
accepts_nested_attributes_for :guest_dynamic_fields, allow_destroy: true, reject_if: :reject_guest_dynamic_field?
|
|
53
51
|
|
|
@@ -192,10 +190,6 @@ module SpreeCmCommissioner
|
|
|
192
190
|
[first_name, last_name].compact_blank.join(' ')
|
|
193
191
|
end
|
|
194
192
|
|
|
195
|
-
def display_name_with_bib
|
|
196
|
-
[full_name, formatted_bib_number, seat_number].compact.join(' | ')
|
|
197
|
-
end
|
|
198
|
-
|
|
199
193
|
def generate_svg_qr
|
|
200
194
|
qrcode = RQRCode::QRCode.new(qr_data)
|
|
201
195
|
qrcode.as_svg(
|
|
@@ -515,20 +509,6 @@ module SpreeCmCommissioner
|
|
|
515
509
|
saved_change_to_data_fill_stage_phase? ||
|
|
516
510
|
(guest_dynamic_fields.any? && (guest_dynamic_fields.any?(&:saved_changes?) || guest_dynamic_fields.any?(&:destroyed?)))
|
|
517
511
|
end
|
|
518
|
-
|
|
519
|
-
# Ticket Transfer validations
|
|
520
|
-
def allows_transfer?
|
|
521
|
-
line_item&.product&.allow_transfer?
|
|
522
|
-
end
|
|
523
|
-
|
|
524
|
-
def allows_gift_transfer?
|
|
525
|
-
line_item&.product&.allow_gift_transfer?
|
|
526
|
-
end
|
|
527
|
-
|
|
528
|
-
def event_started?
|
|
529
|
-
event_from_date = event&.from_date
|
|
530
|
-
event_from_date.present? && event_from_date <= Time.current
|
|
531
|
-
end
|
|
532
512
|
end
|
|
533
513
|
end
|
|
534
514
|
# rubocop:enable Metrics/ClassLength
|
|
@@ -3,7 +3,7 @@ module SpreeCmCommissioner
|
|
|
3
3
|
extend FriendlyId
|
|
4
4
|
|
|
5
5
|
enum :status, { :queue => 0, :progress => 1, :done => 2, :failed => 3 }
|
|
6
|
-
enum :import_type, { :new_order => 0, :existing_order => 1, :aba_payment_reference => 2
|
|
6
|
+
enum :import_type, { :new_order => 0, :existing_order => 1, :aba_payment_reference => 2 }
|
|
7
7
|
has_one_attached :imported_file
|
|
8
8
|
friendly_id :name, use: :slugged
|
|
9
9
|
|
|
@@ -119,9 +119,6 @@ module SpreeCmCommissioner
|
|
|
119
119
|
|
|
120
120
|
# override to calculate price per date for permanent stock
|
|
121
121
|
def update_price
|
|
122
|
-
# Skip price updates for ticket transfer orders to preserve custom transfer pricing
|
|
123
|
-
return if order&.ticket_transfer?
|
|
124
|
-
|
|
125
122
|
base_price = variant.price_in(order.currency)
|
|
126
123
|
self.price = if permanent_stock?
|
|
127
124
|
date_range.map do |date|
|
|
@@ -259,11 +256,7 @@ module SpreeCmCommissioner
|
|
|
259
256
|
end
|
|
260
257
|
|
|
261
258
|
# override
|
|
262
|
-
# Ticket transfer line items reuse the seller's already-committed inventory,
|
|
263
|
-
# so stock checks must not block the receiver's checkout when the event is sold out.
|
|
264
259
|
def sufficient_stock?
|
|
265
|
-
return true if order&.ticket_transfer?
|
|
266
|
-
|
|
267
260
|
SpreeCmCommissioner::Stock::LineItemAvailabilityChecker.new(self).can_supply?(quantity)
|
|
268
261
|
end
|
|
269
262
|
|
|
@@ -10,16 +10,7 @@ module SpreeCmCommissioner
|
|
|
10
10
|
|
|
11
11
|
scope :user_notifications, lambda {
|
|
12
12
|
where(
|
|
13
|
-
type: %w[
|
|
14
|
-
order_complete_notification
|
|
15
|
-
customer_notification
|
|
16
|
-
guest_dynamic_field_notification
|
|
17
|
-
ticket_transfer_received_notification
|
|
18
|
-
ticket_transfer_accepted_notification
|
|
19
|
-
ticket_transfer_completed_notification
|
|
20
|
-
ticket_transfer_rejected_notification
|
|
21
|
-
ticket_transfer_expired_notification
|
|
22
|
-
]
|
|
13
|
+
type: %w[order_complete_notification customer_notification guest_dynamic_field_notification]
|
|
23
14
|
)
|
|
24
15
|
}
|
|
25
16
|
|
|
@@ -1,11 +1,5 @@
|
|
|
1
1
|
module SpreeCmCommissioner
|
|
2
2
|
module OrderDecorator
|
|
3
|
-
SPREE_CHANNEL = 'spree'.freeze
|
|
4
|
-
GOOGLE_FORM_CHANNEL = 'google_form'.freeze
|
|
5
|
-
TELEGRAM_CHANNEL = 'telegram'.freeze
|
|
6
|
-
TICKET_TRANSFER_CHANNEL = 'ticket_transfer'.freeze
|
|
7
|
-
ALLOWED_CHANNEL_PREFIXES = [SPREE_CHANNEL, GOOGLE_FORM_CHANNEL, TELEGRAM_CHANNEL, TICKET_TRANSFER_CHANNEL].freeze
|
|
8
|
-
|
|
9
3
|
def self.prepended(base) # rubocop:disable Metrics/MethodLength
|
|
10
4
|
base.include SpreeCmCommissioner::StoreMetadata
|
|
11
5
|
base.include SpreeCmCommissioner::PhoneNumberSanitizer
|
|
@@ -14,7 +8,6 @@ module SpreeCmCommissioner
|
|
|
14
8
|
base.include SpreeCmCommissioner::OrderStateMachine
|
|
15
9
|
base.include SpreeCmCommissioner::RouteOrderCountable
|
|
16
10
|
base.include SpreeCmCommissioner::OrderScopes
|
|
17
|
-
base.include SpreeCmCommissioner::TicketTransferable
|
|
18
11
|
|
|
19
12
|
base.before_create :link_by_phone_number
|
|
20
13
|
base.before_create :associate_customer
|
|
@@ -241,10 +234,6 @@ module SpreeCmCommissioner
|
|
|
241
234
|
complete? && need_confirmation? == false
|
|
242
235
|
end
|
|
243
236
|
|
|
244
|
-
def guests_in_transfer?
|
|
245
|
-
guests.exists?(state: %i[locked transferred])
|
|
246
|
-
end
|
|
247
|
-
|
|
248
237
|
def generate_svg_qr
|
|
249
238
|
qrcode = RQRCode::QRCode.new(qr_data)
|
|
250
239
|
qrcode.as_svg(
|
|
@@ -355,9 +344,10 @@ module SpreeCmCommissioner
|
|
|
355
344
|
end
|
|
356
345
|
|
|
357
346
|
def validate_channel_prefix
|
|
358
|
-
|
|
347
|
+
allowed_prefixes = %w[spree google_form telegram]
|
|
348
|
+
return if allowed_prefixes.any? { |prefix| channel&.start_with?(prefix) }
|
|
359
349
|
|
|
360
|
-
errors.add(:channel, "must start with one of the following: #{
|
|
350
|
+
errors.add(:channel, "must start with one of the following: #{allowed_prefixes.join(', ')}")
|
|
361
351
|
end
|
|
362
352
|
|
|
363
353
|
def set_tenant_id
|
|
@@ -32,14 +32,6 @@ module SpreeCmCommissioner
|
|
|
32
32
|
payment_method.is_a?(Spree::PaymentMethod::Check)
|
|
33
33
|
end
|
|
34
34
|
|
|
35
|
-
# @override Spree::Payment#after_completed
|
|
36
|
-
# Called inside the state machine transition to :completed (within the transaction),
|
|
37
|
-
# ensuring Complete is atomic with the payment completion.
|
|
38
|
-
def after_completed
|
|
39
|
-
super
|
|
40
|
-
complete_ticket_transfer if ticket_transfer_completable?
|
|
41
|
-
end
|
|
42
|
-
|
|
43
35
|
def can_void?
|
|
44
36
|
state.in? %i[pending processing completed checkout]
|
|
45
37
|
end
|
|
@@ -55,17 +47,6 @@ module SpreeCmCommissioner
|
|
|
55
47
|
def lock_holds_for_payment
|
|
56
48
|
order.lock_order_holds_for_payment
|
|
57
49
|
end
|
|
58
|
-
|
|
59
|
-
def ticket_transfer_completable?
|
|
60
|
-
completed? && order.ticket_transfer? && order.complete? && order.payment_fulfilled?
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
def complete_ticket_transfer
|
|
64
|
-
ticket_transfer = order.ticket_transfer
|
|
65
|
-
return if ticket_transfer.blank? || !ticket_transfer.accepted?
|
|
66
|
-
|
|
67
|
-
SpreeCmCommissioner::TicketTransfers::Complete.call(ticket_transfer: ticket_transfer)
|
|
68
|
-
end
|
|
69
50
|
end
|
|
70
51
|
end
|
|
71
52
|
|
|
@@ -5,14 +5,6 @@ module SpreeCmCommissioner
|
|
|
5
5
|
def self.prepended(base)
|
|
6
6
|
base.const_set(:DISPLAY, DISPLAY)
|
|
7
7
|
|
|
8
|
-
# Expose a dedicated class helper so services can call Spree::PaymentMethod.ticket_transfer
|
|
9
|
-
# instead of duplicating lookup/creation logic.
|
|
10
|
-
base.define_singleton_method(:ticket_transfer) do
|
|
11
|
-
Spree::PaymentMethod::Check.available_on_back_end.find_or_create_by!(name: 'Ticket Transfer') do |method|
|
|
12
|
-
method.stores = [Spree::Store.default]
|
|
13
|
-
end
|
|
14
|
-
end
|
|
15
|
-
|
|
16
8
|
base.scope :available_on_frontend_for_early_adopter, -> { active.where(display_on: %i[both front_end frontend_for_early_adopter]) }
|
|
17
9
|
|
|
18
10
|
# override
|
|
@@ -14,8 +14,6 @@ module SpreeCmCommissioner
|
|
|
14
14
|
|
|
15
15
|
base.delegate :is_open_dated, :is_open_dated?, to: :trip, allow_nil: true
|
|
16
16
|
|
|
17
|
-
base.has_many :voting_sessions, class_name: 'SpreeCmCommissioner::VotingSession', foreign_key: :episode_id, dependent: :destroy
|
|
18
|
-
|
|
19
17
|
base.has_many :variant_kind_option_types, -> { where(kind: :variant).order(:position) },
|
|
20
18
|
through: :product_option_types, source: :option_type
|
|
21
19
|
|
|
@@ -57,45 +55,8 @@ module SpreeCmCommissioner
|
|
|
57
55
|
|
|
58
56
|
base.belongs_to :event, class_name: 'Spree::Taxon', optional: true
|
|
59
57
|
|
|
60
|
-
base.has_many :preview_roles, class_name: 'SpreeCmCommissioner::PreviewRole', as: :previewable
|
|
61
58
|
base.has_many :industry_classifications, -> { joins(:taxon).where(spree_taxons: { kind: :industry }) }, class_name: 'Spree::Classification'
|
|
62
59
|
base.has_many :industry_taxons, through: :industry_classifications, source: :taxon
|
|
63
|
-
base.scope :visible_to, lambda { |user|
|
|
64
|
-
publicly_available = where(status: :active, preview: false)
|
|
65
|
-
|
|
66
|
-
if user
|
|
67
|
-
# Resolved through associations — avoids hardcoding class names.
|
|
68
|
-
taxon_type = reflect_on_association(:taxons).klass.polymorphic_name
|
|
69
|
-
|
|
70
|
-
# IDs of products that have been explicitly assigned their own PreviewRole.
|
|
71
|
-
products_with_own_roles = SpreeCmCommissioner::PreviewRole
|
|
72
|
-
.where(previewable_type: polymorphic_name)
|
|
73
|
-
.select(:previewable_id)
|
|
74
|
-
|
|
75
|
-
# Path A: product has its own PreviewRole → user must hold that role directly.
|
|
76
|
-
# Taxon membership is irrelevant for these products.
|
|
77
|
-
via_product_role = where(status: :active, preview: true)
|
|
78
|
-
.where(id: products_with_own_roles)
|
|
79
|
-
.where(id: user.preview_roles.where(previewable_type: polymorphic_name).select(:previewable_id))
|
|
80
|
-
|
|
81
|
-
# Path B: product has no own PreviewRole → inherit access from its event or taxons.
|
|
82
|
-
# Accessible if the user holds a preview role for the product's event_id or any
|
|
83
|
-
# taxon the product belongs to via the classifications join table.
|
|
84
|
-
allowed_taxon_ids = user.preview_roles.where(previewable_type: taxon_type).select(:previewable_id)
|
|
85
|
-
preview_no_own = where(status: :active, preview: true).where.not(id: products_with_own_roles)
|
|
86
|
-
|
|
87
|
-
via_event_id = preview_no_own.where(event_id: allowed_taxon_ids)
|
|
88
|
-
via_taxon_join = preview_no_own.joins(:taxons).where(spree_taxons: { id: allowed_taxon_ids })
|
|
89
|
-
|
|
90
|
-
publicly_available
|
|
91
|
-
.or(via_product_role)
|
|
92
|
-
.or(where(id: via_event_id.select(:id)))
|
|
93
|
-
.or(where(id: via_taxon_join.select(:id)))
|
|
94
|
-
else
|
|
95
|
-
publicly_available
|
|
96
|
-
end
|
|
97
|
-
}
|
|
98
|
-
|
|
99
60
|
base.scope :min_price, lambda { |vendor|
|
|
100
61
|
joins(:prices_including_master)
|
|
101
62
|
.where(vendor_id: vendor.id, product_type: vendor.primary_product_type)
|
|
@@ -108,12 +69,6 @@ module SpreeCmCommissioner
|
|
|
108
69
|
.maximum('spree_prices.price').to_f
|
|
109
70
|
}
|
|
110
71
|
base.scope :subscribable, -> { where(subscribable: 1) }
|
|
111
|
-
base.scope :advertisements, lambda {
|
|
112
|
-
advertisement
|
|
113
|
-
.available
|
|
114
|
-
.where('spree_products.available_on IS NULL OR spree_products.available_on <= CURRENT_TIMESTAMP')
|
|
115
|
-
.where('spree_products.discontinue_on IS NULL OR spree_products.discontinue_on > CURRENT_TIMESTAMP')
|
|
116
|
-
}
|
|
117
72
|
|
|
118
73
|
base.before_validation :set_event_id
|
|
119
74
|
|
|
@@ -127,11 +82,6 @@ module SpreeCmCommissioner
|
|
|
127
82
|
base.store_public_metadata :open_dated_validity_days, :integer, default: 90
|
|
128
83
|
base.store_public_metadata :enable_inventory_hold, :boolean, default: false
|
|
129
84
|
|
|
130
|
-
base.store_private_metadata :advertise_weight, :integer, default: 1
|
|
131
|
-
base.store_private_metadata :video_url, :string
|
|
132
|
-
base.store_private_metadata :skip_after_seconds, :integer, default: 5
|
|
133
|
-
base.store_private_metadata :duration_seconds, :integer, default: 30
|
|
134
|
-
|
|
135
85
|
base.after_update :update_variants_vendor_id, if: :saved_change_to_vendor_id?
|
|
136
86
|
base.after_update :sync_event_id_to_children, if: :saved_change_to_event_id?
|
|
137
87
|
|