spree_cm_commissioner 2.8.15 → 2.8.16
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/.env.example +0 -4
- data/.gitignore +0 -6
- data/Gemfile.lock +2 -2
- data/app/controllers/concerns/spree_cm_commissioner/content_cachable.rb +0 -10
- data/app/controllers/concerns/spree_cm_commissioner/order_concern.rb +0 -5
- data/app/controllers/concerns/spree_cm_commissioner/turnstile_protectable.rb +7 -9
- data/app/controllers/spree/admin/guests_controller.rb +2 -4
- data/app/controllers/spree/admin/homepage_section_controller.rb +1 -4
- data/app/controllers/spree/admin/taxons_controller_decorator.rb +0 -19
- data/app/controllers/spree/admin/users_controller_decorator.rb +0 -18
- data/app/controllers/spree/api/chatrace/guests_controller.rb +1 -1
- data/app/controllers/spree/api/v2/operator/event_charts_controller.rb +0 -1
- data/app/controllers/spree/api/v2/operator/guest_json_gzips_controller.rb +4 -14
- data/app/controllers/spree/api/v2/storefront/account/guest_dynamic_fields_controller.rb +48 -19
- data/app/controllers/spree/api/v2/storefront/account/mark_guest_info_complete_controller.rb +2 -2
- data/app/controllers/spree/api/v2/storefront/account/orders_controller_decorator.rb +15 -5
- data/app/controllers/spree/api/v2/storefront/account_checker_controller.rb +0 -4
- data/app/controllers/spree/api/v2/storefront/guests_controller.rb +9 -10
- data/app/controllers/spree/api/v2/storefront/homepage_sections_controller.rb +0 -1
- data/app/controllers/spree/api/v2/storefront/order_histories_controller.rb +1 -0
- data/app/controllers/spree/api/v2/storefront/saved_guests_controller.rb +77 -0
- data/app/controllers/spree/api/v2/storefront/waiting_room_sessions_controller.rb +1 -8
- data/app/controllers/spree/api/v2/tenant/account/orders_controller.rb +1 -1
- data/app/controllers/spree/api/v2/tenant/base_controller.rb +0 -4
- data/app/controllers/spree/api/v2/tenant/guests_controller.rb +21 -11
- data/app/controllers/spree/api/v2/tenant/homepage_sections_controller.rb +0 -1
- data/app/controllers/spree/api/v2/tenant/order_histories_controller.rb +1 -2
- 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/waiting_room_sessions_controller.rb +1 -8
- data/app/controllers/spree_cm_commissioner/admin/orders_controller_decorator.rb +0 -9
- data/app/controllers/spree_cm_commissioner/admin/products_controller_decorator.rb +0 -19
- data/app/controllers/spree_cm_commissioner/admin/variants_controller_decorator.rb +0 -17
- data/app/controllers/spree_cm_commissioner/api/v2/storefront/checkout_controller_decorator.rb +3 -3
- data/app/finders/spree_cm_commissioner/events/find_matches.rb +0 -1
- data/app/finders/spree_cm_commissioner/routes/find.rb +1 -1
- data/app/helpers/spree_cm_commissioner/admin/homepage_segment_helper.rb +0 -2
- data/app/interactors/spree_cm_commissioner/create_ticket.rb +3 -7
- data/app/interactors/spree_cm_commissioner/guest_dynamic_field_notification_sender.rb +11 -0
- data/app/interactors/spree_cm_commissioner/guest_dynamic_fields_manager.rb +33 -0
- data/app/interactors/spree_cm_commissioner/host_matcher.rb +5 -6
- data/app/interactors/spree_cm_commissioner/turnstile_token_validator.rb +13 -43
- data/app/interactors/spree_cm_commissioner/user_id_token_authenticator.rb +5 -2
- data/app/interactors/spree_cm_commissioner/user_password_authenticator.rb +1 -23
- data/app/interactors/spree_cm_commissioner/waiting_guests_caller.rb +2 -11
- data/app/interactors/spree_cm_commissioner/waiting_room_session_creator.rb +6 -31
- data/app/mailers/spree/order_mailer_decorator.rb +0 -2
- data/app/models/concerns/spree_cm_commissioner/event_metadata.rb +2 -17
- data/app/models/concerns/spree_cm_commissioner/homepage_section_bitwise.rb +1 -2
- data/app/models/concerns/spree_cm_commissioner/kyc_bitwise.rb +0 -17
- data/app/models/concerns/spree_cm_commissioner/line_item_durationable.rb +0 -4
- data/app/models/concerns/spree_cm_commissioner/line_item_guests_concern.rb +1 -1
- data/app/models/concerns/spree_cm_commissioner/line_items_filter_scope.rb +3 -5
- data/app/models/concerns/spree_cm_commissioner/option_type_attr_type.rb +2 -2
- data/app/models/concerns/spree_cm_commissioner/order_scopes.rb +0 -5
- data/app/models/concerns/spree_cm_commissioner/order_state_machine.rb +30 -35
- data/app/models/concerns/spree_cm_commissioner/product_delegation.rb +0 -2
- data/app/models/concerns/spree_cm_commissioner/product_type.rb +1 -1
- data/app/models/concerns/spree_cm_commissioner/store_metadata.rb +0 -3
- data/app/models/concerns/spree_cm_commissioner/store_preference.rb +0 -2
- data/app/models/concerns/spree_cm_commissioner/taxon_kind.rb +1 -3
- data/app/models/concerns/spree_cm_commissioner/tenant_preference.rb +0 -2
- data/app/models/concerns/spree_cm_commissioner/variant_options_concern.rb +1 -0
- data/app/models/spree_cm_commissioner/check_in_session.rb +0 -36
- data/app/models/spree_cm_commissioner/dynamic_field.rb +0 -12
- data/app/models/spree_cm_commissioner/exports/operator_guest_json_gzip.rb +1 -26
- data/app/models/spree_cm_commissioner/guest.rb +144 -5
- data/app/models/spree_cm_commissioner/guest_dynamic_field.rb +71 -43
- data/app/models/spree_cm_commissioner/homepage_section_relatable.rb +0 -25
- data/app/models/spree_cm_commissioner/import.rb +1 -1
- data/app/models/spree_cm_commissioner/line_item_decorator.rb +3 -30
- data/app/models/spree_cm_commissioner/maintenance_tasks/event.rb +1 -9
- data/app/models/spree_cm_commissioner/order_decorator.rb +31 -22
- data/app/models/spree_cm_commissioner/payment_method_decorator.rb +0 -2
- data/app/models/spree_cm_commissioner/pricing_model_route.rb +0 -8
- data/app/models/spree_cm_commissioner/product_decorator.rb +22 -54
- data/app/models/spree_cm_commissioner/product_dynamic_field.rb +0 -17
- data/app/models/spree_cm_commissioner/role_decorator.rb +4 -55
- data/app/models/spree_cm_commissioner/seat_layout.rb +4 -12
- data/app/models/spree_cm_commissioner/taxon_decorator.rb +0 -25
- data/app/models/spree_cm_commissioner/taxonomy_decorator.rb +1 -19
- data/app/models/spree_cm_commissioner/tenant.rb +6 -26
- data/app/models/spree_cm_commissioner/trip.rb +1 -18
- data/app/models/spree_cm_commissioner/user_decorator.rb +1 -72
- data/app/models/spree_cm_commissioner/variant_decorator.rb +0 -4
- data/app/models/spree_cm_commissioner/variant_options.rb +4 -4
- data/app/models/spree_cm_commissioner/vehicle_type.rb +0 -1
- data/app/models/spree_cm_commissioner/vendor_decorator.rb +0 -5
- data/app/models/spree_cm_commissioner/waiting_room_session.rb +0 -14
- data/app/queries/spree_cm_commissioner/event_chart_queries.rb +9 -25
- data/app/queries/spree_cm_commissioner/guest_searcher_query.rb +3 -16
- data/app/queries/spree_cm_commissioner/multi_leg_trips_query.rb +0 -7
- data/app/queries/spree_cm_commissioner/pie_chart_event_aggregator_queries.rb +2 -3
- data/app/queries/spree_cm_commissioner/single_leg_trips_query.rb +1 -2
- data/app/serializers/spree/v2/storefront/homepage_section_serializer.rb +1 -1
- data/app/serializers/spree/v2/storefront/line_item_serializer_decorator.rb +2 -2
- data/app/serializers/spree/v2/storefront/order_serializer_decorator.rb +63 -0
- data/app/serializers/spree/v2/storefront/product_serializer_decorator.rb +1 -6
- data/app/serializers/spree/v2/storefront/role_serializer.rb +1 -1
- data/app/serializers/spree/v2/storefront/taxon_serializer_decorator.rb +1 -3
- data/app/serializers/spree/v2/storefront/user_serializer_decorator.rb +2 -5
- data/app/serializers/spree/v2/storefront/variant_serializer_decorator.rb +1 -2
- data/app/serializers/spree/v2/tenant/homepage_section_serializer.rb +1 -1
- data/app/serializers/spree/v2/tenant/product_serializer.rb +0 -5
- data/app/serializers/spree/v2/tenant/role_serializer.rb +1 -1
- data/app/serializers/spree/v2/tenant/user_serializer.rb +1 -1
- data/app/serializers/spree/v2/tenant/variant_serializer.rb +1 -2
- data/app/serializers/spree_cm_commissioner/v2/storefront/cart_serializer_decorator.rb +0 -1
- data/app/serializers/spree_cm_commissioner/v2/storefront/guest_minimal_serializer.rb +30 -0
- data/app/serializers/spree_cm_commissioner/v2/storefront/guest_serializer.rb +6 -3
- data/app/serializers/spree_cm_commissioner/v2/storefront/line_item_minimal_serializer.rb +57 -0
- data/app/serializers/spree_cm_commissioner/v2/storefront/ticket_transfer_minimal_serializer.rb +17 -0
- data/app/serializers/spree_cm_commissioner/v2/storefront/ticket_transfer_serializer.rb +2 -2
- data/app/serializers/spree_cm_commissioner/v2/storefront/trip_result_serializer.rb +2 -2
- data/app/serializers/spree_cm_commissioner/v2/storefront/trip_serializer.rb +1 -3
- data/app/services/spree_cm_commissioner/api_caches/invalidate.rb +3 -36
- data/app/services/spree_cm_commissioner/{guests/create.rb → cart/create_guest.rb} +10 -12
- data/app/services/spree_cm_commissioner/check_ins/create_bulk.rb +6 -10
- data/app/services/spree_cm_commissioner/inventory_holds/validate_limits.rb +3 -8
- data/app/services/spree_cm_commissioner/operator_guest_json_gzips/create.rb +7 -14
- data/app/services/spree_cm_commissioner/organizer/export_guest_csv_service.rb +11 -12
- data/app/services/spree_cm_commissioner/pricing_models/create_with_rule_groups.rb +3 -9
- data/app/services/spree_cm_commissioner/pricing_models/preview.rb +6 -49
- data/app/services/spree_cm_commissioner/pricing_models/update_with_rule_groups.rb +7 -10
- data/app/services/spree_cm_commissioner/trips/update_single_leg.rb +1 -6
- data/app/services/spree_cm_commissioner/update_guest_service.rb +129 -0
- data/app/services/spree_cm_commissioner/user_authenticator.rb +1 -22
- data/app/services/spree_cm_commissioner/users/incomplete_guest_checker_service.rb +34 -0
- data/app/views/spree/admin/featured_trips/index.html.erb +1 -1
- data/app/views/spree/admin/guests/_form.html.erb +0 -37
- data/app/views/spree/admin/homepage_section/_form.html.erb +0 -5
- data/app/views/spree/admin/shared/_system_tabs.html.erb +0 -7
- data/app/views/spree/admin/tenants/_form.html.erb +1 -40
- data/config/initializers/doorkeeper.rb +6 -10
- data/config/initializers/spree_permitted_attributes.rb +0 -59
- data/config/locales/en.yml +18 -180
- data/config/locales/km.yml +5 -73
- data/config/routes.rb +1 -56
- data/lib/spree_cm_commissioner/test_helper/factories/option_type_factory.rb +6 -0
- data/lib/spree_cm_commissioner/test_helper/factories/vehicle_factory.rb +1 -1
- data/lib/spree_cm_commissioner/trip_result.rb +1 -3
- 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 +12 -208
- data/app/controllers/concerns/spree_cm_commissioner/load_test_account_management.rb +0 -80
- data/app/controllers/concerns/spree_cm_commissioner/load_test_account_scope.rb +0 -39
- data/app/controllers/concerns/spree_cm_commissioner/load_test_bypassable.rb +0 -29
- data/app/controllers/concerns/spree_cm_commissioner/load_test_login_token_generation.rb +0 -53
- data/app/controllers/spree/admin/system/load_test_accounts_controller.rb +0 -24
- data/app/controllers/spree/admin/system/load_test_flows_controller.rb +0 -11
- data/app/controllers/spree/admin/system/load_test_login_tokens_controller.rb +0 -16
- data/app/controllers/spree/admin/system/load_testing_controller.rb +0 -9
- data/app/controllers/spree/api/v2/storefront/account/saved_guests_controller.rb +0 -65
- data/app/controllers/spree/api/v2/storefront/draft_orders_controller.rb +0 -52
- data/app/controllers/spree/api/v2/storefront/payment_methods_controller.rb +0 -40
- 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 -21
- 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/telegram_oauth_tokens_controller.rb +0 -61
- data/app/controllers/spree/api/v2/tenant/account/saved_guests_controller.rb +0 -70
- data/app/controllers/spree/api/v2/tenant/ad_campaigns_controller.rb +0 -25
- data/app/controllers/spree/api/v2/tenant/draft_orders_controller.rb +0 -50
- data/app/controllers/spree/api/v2/tenant/episodes_controller.rb +0 -40
- data/app/controllers/spree/api/v2/tenant/my_votes_controller.rb +0 -51
- data/app/controllers/spree/api/v2/tenant/payment_methods_controller.rb +0 -54
- 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 -20
- 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 -46
- data/app/controllers/spree/api/v2/tenant/show_person_assignments_controller.rb +0 -39
- data/app/controllers/spree/api/v2/tenant/shows_controller.rb +0 -36
- data/app/controllers/spree/api/v2/tenant/vote_packages_controller.rb +0 -81
- data/app/controllers/spree/api/v2/tenant/votes_controller.rb +0 -94
- data/app/controllers/spree/api/v2/tenant/voting_contestants_controller.rb +0 -46
- 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/finders/spree_cm_commissioner/payment_methods/find.rb +0 -59
- data/app/interactors/spree_cm_commissioner/telegram_oauth_id_token_provider.rb +0 -99
- data/app/interactors/spree_cm_commissioner/telegram_oauth_token_exchanger.rb +0 -71
- data/app/interactors/spree_cm_commissioner/user_telegram_oauth_authenticator.rb +0 -88
- data/app/jobs/spree_cm_commissioner/maintenance_tasks/guest_data_fill_stage_batch_job.rb +0 -28
- data/app/jobs/spree_cm_commissioner/show_contestants/import_job.rb +0 -9
- 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/guest_data_fill_stage_concern.rb +0 -82
- data/app/models/concerns/spree_cm_commissioner/order_qr_codeable.rb +0 -39
- data/app/models/concerns/spree_cm_commissioner/purchase_limitable.rb +0 -59
- data/app/models/concerns/spree_cm_commissioner/voting_session_live_stream_concern.rb +0 -41
- data/app/models/spree_cm_commissioner/claim.rb +0 -27
- data/app/models/spree_cm_commissioner/current.rb +0 -11
- data/app/models/spree_cm_commissioner/imports/import_contestant.rb +0 -7
- data/app/models/spree_cm_commissioner/maintenance_tasks/guest_data_fill_stage.rb +0 -21
- 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/request_guard.rb +0 -19
- data/app/models/spree_cm_commissioner/role_user_decorator.rb +0 -19
- data/app/models/spree_cm_commissioner/show.rb +0 -173
- 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 -124
- data/app/models/spree_cm_commissioner/show_person.rb +0 -19
- 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/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 -114
- data/app/models/spree_cm_commissioner/voting_credit.rb +0 -84
- data/app/models/spree_cm_commissioner/voting_credit_transaction.rb +0 -55
- data/app/models/spree_cm_commissioner/voting_session.rb +0 -217
- data/app/models/spree_cm_commissioner/voting_session_stat.rb +0 -8
- data/app/overrides/spree/admin/payment_methods/index/pagination.html.erb.deface +0 -3
- data/app/overrides/spree/admin/payment_methods/index/preserve_tab_in_search.html.erb.deface +0 -4
- data/app/overrides/spree/admin/products/_form/enable_social_sharing_email.html.erb.deface +0 -13
- data/app/overrides/spree/admin/products/_form/preview_checkbox.html.erb.deface +0 -9
- data/app/overrides/spree/admin/shared/_order_summary/internal_note.html.erb.deface +0 -23
- data/app/overrides/spree/admin/shared/_order_summary/internal_note_modal.html.erb.deface +0 -40
- data/app/overrides/spree/admin/stores/_form/telegram_auth.html.erb.deface +0 -73
- data/app/overrides/spree/admin/taxons/_form/preview_checkbox.html.erb.deface +0 -7
- data/app/overrides/spree/admin/variants/index/fixture_action.html.erb.deface +0 -9
- data/app/queries/spree_cm_commissioner/user_votes_per_contestant_query.rb +0 -48
- data/app/serializers/spree/v2/tenant/ad_campaign_serializer.rb +0 -13
- data/app/serializers/spree/v2/tenant/advertisement_serializer.rb +0 -11
- data/app/serializers/spree/v2/tenant/my_vote_serializer.rb +0 -19
- data/app/serializers/spree/v2/tenant/saved_guest_serializer.rb +0 -23
- data/app/serializers/spree/v2/tenant/show_contestant_serializer.rb +0 -21
- data/app/serializers/spree/v2/tenant/show_episode_serializer.rb +0 -12
- data/app/serializers/spree/v2/tenant/show_parent_serializer.rb +0 -13
- 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 -24
- data/app/serializers/spree/v2/tenant/video_serializer.rb +0 -9
- data/app/serializers/spree/v2/tenant/vote_package_serializer.rb +0 -15
- data/app/serializers/spree/v2/tenant/vote_serializer.rb +0 -14
- data/app/serializers/spree/v2/tenant/voting_contestant_serializer.rb +0 -25
- 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/services/spree_cm_commissioner/draft_order/create.rb +0 -95
- data/app/services/spree_cm_commissioner/fraud_check.rb +0 -308
- data/app/services/spree_cm_commissioner/guests/refresh_data_fill_stage.rb +0 -20
- data/app/services/spree_cm_commissioner/guests/send_dynamic_field_notification.rb +0 -15
- data/app/services/spree_cm_commissioner/guests/update.rb +0 -68
- data/app/services/spree_cm_commissioner/imports/contestants/create.rb +0 -171
- data/app/services/spree_cm_commissioner/line_items/validate_purchase_limits.rb +0 -97
- data/app/services/spree_cm_commissioner/load_test/create_accounts.rb +0 -68
- data/app/services/spree_cm_commissioner/load_test/destroy_accounts.rb +0 -47
- data/app/services/spree_cm_commissioner/load_test/flow_registry.rb +0 -26
- data/app/services/spree_cm_commissioner/load_test/generate_booking_ticket_data.rb +0 -204
- data/app/services/spree_cm_commissioner/load_test/generate_voting_fixture_data.rb +0 -178
- data/app/services/spree_cm_commissioner/load_test/login_token.rb +0 -46
- data/app/services/spree_cm_commissioner/order/guests/update.rb +0 -53
- data/app/services/spree_cm_commissioner/show_contestants/normalize_video_highlights.rb +0 -61
- data/app/services/spree_cm_commissioner/show_persons/contestant_assigner.rb +0 -51
- data/app/services/spree_cm_commissioner/url_embed/youtube_embed.rb +0 -44
- 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 -150
- data/app/services/spree_cm_commissioner/vote_package/update.rb +0 -97
- data/app/services/spree_cm_commissioner/vote_processor.rb +0 -144
- data/app/services/spree_cm_commissioner/voting_contestants/advancer.rb +0 -342
- data/app/services/spree_cm_commissioner/voting_contestants/assigner.rb +0 -58
- data/app/services/spree_cm_commissioner/voting_contestants/bulk_updater.rb +0 -115
- data/app/services/spree_cm_commissioner/voting_credits/admin_grant.rb +0 -37
- data/app/services/spree_cm_commissioner/voting_credits/allocate.rb +0 -134
- data/app/services/spree_cm_commissioner/voting_credits/claimable_scope_resolver.rb +0 -64
- 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_leaderboards/time_range_result.rb +0 -79
- data/app/services/spree_cm_commissioner/voting_sessions/finalize.rb +0 -105
- data/app/views/spree/admin/system/load_test_accounts/_login_tokens_modal.html.erb +0 -52
- data/app/views/spree/admin/system/load_test_accounts/index.html.erb +0 -175
- data/app/views/spree/admin/system/load_test_flows/index.html.erb +0 -66
- data/app/views/spree/admin/system/load_testing/index.html.erb +0 -25
- data/app/views/spree/admin/tenants/form/_telegram_auth.html.erb +0 -61
- data/app/views/spree/admin/variants/fixture.html.erb +0 -49
- data/config/load_test_flows/platform.yml +0 -25
- data/config/load_test_flows/tenant.yml +0 -93
- 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/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/20260423000001_add_preview_to_taxons_products_and_sections.rb +0 -11
- data/db/migrate/20260423000002_create_preview_roles.rb +0 -24
- 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/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/20260608000000_add_display_to_cm_voting_sessions.rb +0 -5
- data/db/migrate/20260623082233_create_cm_claims.rb +0 -14
- data/db/migrate/20260624175658_add_unique_index_to_cm_claims.rb +0 -11
- data/db/migrate/20260630000001_add_trip_to_cm_pricing_model_routes.rb +0 -7
- data/db/migrate/20260701000001_add_device_info_to_cm_waiting_room_sessions.rb +0 -14
- data/db/migrate/20260703065239_add_position_to_cm_voting_contestants.rb +0 -6
- data/db/migrate/20260708150000_add_name_and_short_name_to_cm_trips.rb +0 -6
- data/db/migrate/20260713022227_add_advanced_to_episode_id_to_cm_voting_contestants.rb +0 -8
- data/db/migrate/20260714002626_rename_data_fill_stage_phase_on_cm_guests.rb +0 -5
- data/db/migrate/20260720000001_add_check_in_fields_to_spree_roles.rb +0 -11
- data/db/migrate/20260723000000_add_payment_host_to_cm_tenants.rb +0 -6
- data/db/migrate/20260723000001_add_metadata_to_spree_roles.rb +0 -11
- data/db/migrate/20260728074153_add_role_to_cm_exports.rb +0 -5
- data/db/migrate/20260729000000_add_visibility_to_cm_trips.rb +0 -6
- data/db/migrate/20260729000001_add_session_created_at_index_to_cm_votes.rb +0 -12
- data/db/migrate/20260730000000_add_purchase_limit_scopes_to_spree_orders.rb +0 -22
- data/docs/sql/jsonb_query_guide.md +0 -57
- data/lib/spree_cm_commissioner/test_helper/factories/claim_factory.rb +0 -14
- data/lib/spree_cm_commissioner/test_helper/factories/pricing_model_trip_factory.rb +0 -11
- 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/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/recompute_guest_data_fill_stage.rake +0 -19
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 793be478c9e769be1ddebd446fb98201ed4277176ca0cc64880a1fdeb71297b2
|
|
4
|
+
data.tar.gz: fe71e91c4f124dcb730cad8ff27dd87dddd92e0ffab66aaf292845e797b3fa01
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: c15e41fc7108a69dd080a6610af697f6b1a669a4b830de63dbb725242b3c0ca899fc00e47b1086b9eb1c3da2df0567d94f95cdab60e230994f9abfc031dc2cb8
|
|
7
|
+
data.tar.gz: 1f25bae14db105a7b0db5225fe2df2fd232e6d507940bac7876cd038ed2eb71fff35799d9809a39c208972e70d2c2c9ce90f51ca78c86b904cc7cfe6f3edd6a5
|
data/.env.example
CHANGED
|
@@ -32,10 +32,6 @@ WAITING_ROOM_MAX_ETA_BATCH_SIZE=50 # cap on batch size assumed when estimating t
|
|
|
32
32
|
VATTANAC_AES_SECRET_KEY= ""
|
|
33
33
|
VATTANAC_PUBLIC_KEY=""
|
|
34
34
|
|
|
35
|
-
# Telegram OAuth (OpenID Connect) login client_id/client_secret are configured
|
|
36
|
-
# per tenant (or on the default store for tenant-less logins) from the admin
|
|
37
|
-
# under Telegram Authentication - see docs/authentication/telegram-login.md.
|
|
38
|
-
|
|
39
35
|
# Organizer URL
|
|
40
36
|
ORGANIZER_URL=http://127.0.0.1:4000/organizer
|
|
41
37
|
|
data/.gitignore
CHANGED
data/Gemfile.lock
CHANGED
|
@@ -34,7 +34,7 @@ GIT
|
|
|
34
34
|
PATH
|
|
35
35
|
remote: .
|
|
36
36
|
specs:
|
|
37
|
-
spree_cm_commissioner (2.8.
|
|
37
|
+
spree_cm_commissioner (2.8.16)
|
|
38
38
|
activerecord-multi-tenant
|
|
39
39
|
activerecord_json_validator (~> 2.1, >= 2.1.3)
|
|
40
40
|
aws-sdk-cloudfront
|
|
@@ -886,7 +886,7 @@ GEM
|
|
|
886
886
|
spree_backend (>= 4.3.0.rc1)
|
|
887
887
|
spree_emails (>= 4.3.0.rc1)
|
|
888
888
|
spree_extension
|
|
889
|
-
spree_vpago (2.
|
|
889
|
+
spree_vpago (2.0.5.pre.beta)
|
|
890
890
|
faraday
|
|
891
891
|
google-cloud-firestore
|
|
892
892
|
spree_api (>= 4.5)
|
|
@@ -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,14 +25,6 @@ module SpreeCmCommissioner
|
|
|
26
25
|
HomepageDataController
|
|
27
26
|
PopularRoutesController
|
|
28
27
|
RoutePlacesController
|
|
29
|
-
ShowsController
|
|
30
|
-
EpisodesController
|
|
31
|
-
ShowPeopleController
|
|
32
|
-
ShowPersonAssignmentsController
|
|
33
|
-
ShowContestantsController
|
|
34
|
-
VotePackagesController
|
|
35
|
-
ShowEliminationSessionsController
|
|
36
|
-
PaymentMethodsController
|
|
37
28
|
].freeze
|
|
38
29
|
|
|
39
30
|
# Priority 3: Moderate Freshness (30 minutes)
|
|
@@ -53,7 +44,6 @@ module SpreeCmCommissioner
|
|
|
53
44
|
HIGH_FRESHNESS_CONTROLLERS = %w[
|
|
54
45
|
TripsController
|
|
55
46
|
TripSearchController
|
|
56
|
-
VotingContestantsController
|
|
57
47
|
].freeze
|
|
58
48
|
|
|
59
49
|
def shared_max_age
|
|
@@ -12,7 +12,6 @@ module SpreeCmCommissioner
|
|
|
12
12
|
end
|
|
13
13
|
|
|
14
14
|
@spree_current_order.last_ip_address = request.remote_ip
|
|
15
|
-
@spree_current_order.device_id = device_id if device_id.present?
|
|
16
15
|
@spree_current_order
|
|
17
16
|
end
|
|
18
17
|
|
|
@@ -26,9 +25,5 @@ module SpreeCmCommissioner
|
|
|
26
25
|
state: params[:state]
|
|
27
26
|
)
|
|
28
27
|
end
|
|
29
|
-
|
|
30
|
-
def device_id
|
|
31
|
-
params[:device_id].presence
|
|
32
|
-
end
|
|
33
28
|
end
|
|
34
29
|
end
|
|
@@ -27,15 +27,13 @@ module SpreeCmCommissioner
|
|
|
27
27
|
return unless result.failure?
|
|
28
28
|
|
|
29
29
|
render json: {
|
|
30
|
-
errors: [
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
}
|
|
38
|
-
]
|
|
30
|
+
errors: [{
|
|
31
|
+
status: '403',
|
|
32
|
+
error_code: 'human_verification_failed',
|
|
33
|
+
title: I18n.t('turnstile.verification_failed'),
|
|
34
|
+
detail: result.message
|
|
35
|
+
}
|
|
36
|
+
]
|
|
39
37
|
}, status: :forbidden
|
|
40
38
|
end
|
|
41
39
|
|
|
@@ -80,10 +80,8 @@ module Spree
|
|
|
80
80
|
|
|
81
81
|
def permitted_resource_params
|
|
82
82
|
params.require(object_name).permit(:first_name, :last_name, :gender, :dob, :occupation_id,
|
|
83
|
-
:nationality_id, :age, :emergency_contact,
|
|
84
|
-
:
|
|
85
|
-
:other_organization, :expectation, :address,
|
|
86
|
-
:social_contact_platform, :social_contact
|
|
83
|
+
:nationality_id, :age, :emergency_contact, :line_item_id,
|
|
84
|
+
:seat_number, :phone_number
|
|
87
85
|
)
|
|
88
86
|
end
|
|
89
87
|
|
|
@@ -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
|
|
@@ -56,24 +55,6 @@ module Spree
|
|
|
56
55
|
@taxon.build_ad_banner(attachment: permitted_resource_params.delete(:ad_banner)) if permitted_resource_params[:ad_banner]
|
|
57
56
|
@taxon.build_video_banner(attachment: permitted_resource_params.delete(:video_banner)) if permitted_resource_params[:video_banner]
|
|
58
57
|
end
|
|
59
|
-
|
|
60
|
-
# Some admin forms submit STI records under their class key
|
|
61
|
-
# (e.g. :spree_cm_commissioner_show) while Spree update reads :taxon.
|
|
62
|
-
# Merge both into :taxon so all edited fields are persisted.
|
|
63
|
-
def normalize_sti_taxon_params
|
|
64
|
-
return unless @taxon
|
|
65
|
-
|
|
66
|
-
sti_key = @taxon.class.model_name.param_key.to_sym
|
|
67
|
-
sti_params = params[sti_key]
|
|
68
|
-
return unless sti_params.is_a?(::ActionController::Parameters)
|
|
69
|
-
|
|
70
|
-
base_params = params[:taxon]
|
|
71
|
-
base_hash = base_params.is_a?(::ActionController::Parameters) ? base_params.to_unsafe_h : {}
|
|
72
|
-
sti_hash = sti_params.to_unsafe_h
|
|
73
|
-
merged_params = ::ActionController::Parameters.new(base_hash.merge(sti_hash))
|
|
74
|
-
|
|
75
|
-
params[:taxon] = merged_params
|
|
76
|
-
end
|
|
77
58
|
end
|
|
78
59
|
end
|
|
79
60
|
end
|
|
@@ -20,26 +20,8 @@ module Spree
|
|
|
20
20
|
end
|
|
21
21
|
end
|
|
22
22
|
|
|
23
|
-
# override
|
|
24
|
-
def update
|
|
25
|
-
preserve_non_form_roles
|
|
26
|
-
super
|
|
27
|
-
end
|
|
28
|
-
|
|
29
23
|
private
|
|
30
24
|
|
|
31
|
-
# Role types the user form doesn't render (assigned in organizer dashboards), e.g. check-in groups and preview.
|
|
32
|
-
NON_FORM_ROLE_TYPES = %i[check_in preview].freeze
|
|
33
|
-
|
|
34
|
-
# spree_role_ids= replaces the whole role set, so a submit that omits these would drop them. Merge
|
|
35
|
-
# the user's existing ones back in so they survive. Skip when the form didn't submit roles at all.
|
|
36
|
-
def preserve_non_form_roles
|
|
37
|
-
return if params.dig(:user, :spree_role_ids).nil?
|
|
38
|
-
|
|
39
|
-
preserved_ids = @user.spree_roles.where(role_type: NON_FORM_ROLE_TYPES).pluck(:id).map(&:to_s)
|
|
40
|
-
params[:user][:spree_role_ids] = (params[:user][:spree_role_ids] + preserved_ids).uniq
|
|
41
|
-
end
|
|
42
|
-
|
|
43
25
|
def build_profile
|
|
44
26
|
return unless permitted_resource_params[:profile]
|
|
45
27
|
|
|
@@ -53,7 +53,7 @@ module Spree
|
|
|
53
53
|
preferences upload_later social_contact_platform user_id
|
|
54
54
|
bib_number bib_prefix bib_index public_metadata private_metadata
|
|
55
55
|
seat_number intel_phone_number block_id saved_guest_id
|
|
56
|
-
|
|
56
|
+
data_fill_stage_phase
|
|
57
57
|
].freeze
|
|
58
58
|
|
|
59
59
|
def guest_base_columns
|
|
@@ -26,8 +26,6 @@ module Spree
|
|
|
26
26
|
|
|
27
27
|
result = SpreeCmCommissioner::OperatorGuestJsonGzips::Create.call(
|
|
28
28
|
exportable: exportable,
|
|
29
|
-
# Scope the offline file to the requesting operator's check-in role (nil = unrestricted).
|
|
30
|
-
role: spree_current_user.check_in_role_for(exportable),
|
|
31
29
|
force_create: false,
|
|
32
30
|
options: {
|
|
33
31
|
created_by_id: spree_current_user.id.to_s,
|
|
@@ -55,19 +53,11 @@ module Spree
|
|
|
55
53
|
end
|
|
56
54
|
|
|
57
55
|
# override
|
|
58
|
-
# Scope the list to the requesting operator's check-in group, the same way the create cache
|
|
59
|
-
# does — otherwise a restricted crew could list (and download via exported_file_url) other
|
|
60
|
-
# groups' files for the event.
|
|
61
56
|
def scope
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
exportable_type: 'Spree::Taxon',
|
|
67
|
-
exportable_id: params[:taxon_id],
|
|
68
|
-
role_id: spree_current_user.check_in_role_for(exportable)&.id
|
|
69
|
-
)
|
|
70
|
-
.order(created_at: :desc)
|
|
57
|
+
SpreeCmCommissioner::Exports::OperatorGuestJsonGzip.where(
|
|
58
|
+
exportable_type: 'Spree::Taxon',
|
|
59
|
+
exportable_id: params[:taxon_id]
|
|
60
|
+
).order(created_at: :desc)
|
|
71
61
|
end
|
|
72
62
|
|
|
73
63
|
# override
|
|
@@ -4,40 +4,69 @@ module Spree
|
|
|
4
4
|
module Storefront
|
|
5
5
|
module Account
|
|
6
6
|
class GuestDynamicFieldsController < ::Spree::Api::V2::ResourceController
|
|
7
|
-
ALLOWED_PHASES = %w[pre_registration post_registration].freeze
|
|
8
|
-
|
|
9
7
|
before_action :require_spree_current_user
|
|
10
8
|
before_action :load_guest
|
|
11
9
|
|
|
12
10
|
def update_dynamic_field
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
)
|
|
22
|
-
|
|
23
|
-
if result.success?
|
|
24
|
-
render_serialized_payload { serialize_guest(result.value[:guest]) }
|
|
25
|
-
else
|
|
26
|
-
render_error_payload(result.error)
|
|
11
|
+
phase = params[:phase]
|
|
12
|
+
|
|
13
|
+
return render_error_payload('Invalid phase', 422) unless %w[pre_registration post_registration].include?(phase)
|
|
14
|
+
|
|
15
|
+
begin
|
|
16
|
+
fields = dynamic_fields_params
|
|
17
|
+
rescue ActionController::ParameterMissing
|
|
18
|
+
return render_error_payload('No dynamic fields provided', 422)
|
|
27
19
|
end
|
|
20
|
+
|
|
21
|
+
return render_error_payload('No dynamic fields provided', 422) if fields.blank?
|
|
22
|
+
|
|
23
|
+
ActiveRecord::Base.transaction do
|
|
24
|
+
fields.each do |field|
|
|
25
|
+
process_dynamic_field(field)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
@guest.save_and_move_to_next_stage
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
render_serialized_payload { serialize_guest(@guest) }
|
|
32
|
+
rescue ActiveRecord::RecordInvalid => e
|
|
33
|
+
render_error_payload(e.record.errors, 422)
|
|
34
|
+
rescue ActiveRecord::RecordNotFound => e
|
|
35
|
+
render_error_payload(e.message, 404)
|
|
28
36
|
end
|
|
29
37
|
|
|
30
38
|
private
|
|
31
39
|
|
|
32
40
|
def dynamic_fields_params
|
|
33
|
-
|
|
41
|
+
params.require(:dynamic_fields).map do |field|
|
|
42
|
+
field.permit(:id, :value)
|
|
43
|
+
end
|
|
34
44
|
end
|
|
35
45
|
|
|
36
46
|
def load_guest
|
|
37
47
|
@guest = SpreeCmCommissioner::Guest.find(params[:guest_id])
|
|
38
48
|
|
|
39
|
-
|
|
40
|
-
|
|
49
|
+
unless spree_current_user.guests.exists?(id: @guest.id) ||
|
|
50
|
+
@guest.line_item.order.user == spree_current_user
|
|
51
|
+
render_error_payload('Unauthorized', 401)
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def process_dynamic_field(field)
|
|
56
|
+
dynamic_field = SpreeCmCommissioner::DynamicField.find(field[:id])
|
|
57
|
+
guest_field = @guest.guest_dynamic_fields.build(dynamic_field_id: dynamic_field.id)
|
|
58
|
+
|
|
59
|
+
if dynamic_field.requires_dynamic_field_options?
|
|
60
|
+
option = dynamic_field.dynamic_field_options.find_by(value: field[:value])
|
|
61
|
+
raise ActiveRecord::RecordNotFound, "Invalid value for dynamic field #{dynamic_field.label}" unless option
|
|
62
|
+
|
|
63
|
+
guest_field.dynamic_field_option = option
|
|
64
|
+
guest_field.value = option.value
|
|
65
|
+
else
|
|
66
|
+
guest_field.value = field[:value]
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
guest_field.save!
|
|
41
70
|
end
|
|
42
71
|
|
|
43
72
|
def serialize_guest(guest)
|
|
@@ -7,7 +7,7 @@ module Spree
|
|
|
7
7
|
before_action :require_spree_current_user
|
|
8
8
|
|
|
9
9
|
def update
|
|
10
|
-
spree_current_user.
|
|
10
|
+
SpreeCmCommissioner::Users::IncompleteGuestCheckerService.new(spree_current_user).call
|
|
11
11
|
render_success
|
|
12
12
|
end
|
|
13
13
|
|
|
@@ -18,7 +18,7 @@ module Spree
|
|
|
18
18
|
{
|
|
19
19
|
success: true,
|
|
20
20
|
message: 'Guest information marked as complete',
|
|
21
|
-
has_incomplete_guest_info:
|
|
21
|
+
has_incomplete_guest_info: false
|
|
22
22
|
}
|
|
23
23
|
end
|
|
24
24
|
end
|
|
@@ -24,11 +24,21 @@ module Spree
|
|
|
24
24
|
private
|
|
25
25
|
|
|
26
26
|
def find_orders_with_incomplete_guest_info
|
|
27
|
-
spree_current_user.orders
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
27
|
+
orders = spree_current_user.orders
|
|
28
|
+
.complete
|
|
29
|
+
.includes(line_items: { guests: [:guest_dynamic_fields] })
|
|
30
|
+
|
|
31
|
+
incomplete_order_ids = orders.select do |order|
|
|
32
|
+
order.line_items.any? do |line_item|
|
|
33
|
+
line_item.guests.any? do |guest|
|
|
34
|
+
guest.pre_registration_completed? &&
|
|
35
|
+
guest.post_registration_fields? &&
|
|
36
|
+
!guest.post_registration_completed?
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end.map(&:id)
|
|
40
|
+
|
|
41
|
+
spree_current_user.orders.where(id: incomplete_order_ids)
|
|
32
42
|
end
|
|
33
43
|
|
|
34
44
|
def collection_finder
|
|
@@ -3,10 +3,6 @@ module Spree
|
|
|
3
3
|
module V2
|
|
4
4
|
module Storefront
|
|
5
5
|
class AccountCheckerController < Spree::Api::V2::BaseController
|
|
6
|
-
include SpreeCmCommissioner::TurnstileProtectable
|
|
7
|
-
|
|
8
|
-
before_action :verify_turnstile!, only: :index
|
|
9
|
-
|
|
10
6
|
def index
|
|
11
7
|
checker = SpreeCmCommissioner::ExistingAccountChecker.call(filter_params.to_h)
|
|
12
8
|
|
|
@@ -31,27 +31,26 @@ module Spree
|
|
|
31
31
|
def create
|
|
32
32
|
spree_authorize! :update, spree_current_order, order_token
|
|
33
33
|
|
|
34
|
-
result = SpreeCmCommissioner::
|
|
34
|
+
result = SpreeCmCommissioner::Cart::CreateGuest.call(
|
|
35
35
|
line_item: parent,
|
|
36
|
-
|
|
36
|
+
options: guest_params
|
|
37
37
|
)
|
|
38
38
|
|
|
39
39
|
if result.success?
|
|
40
|
-
render_serialized_payload(201) { serialize_resource(result.value
|
|
40
|
+
render_serialized_payload(201) { serialize_resource(result.value) }
|
|
41
41
|
else
|
|
42
|
-
render_error_payload(result.
|
|
42
|
+
render_error_payload(result.value.errors, 422)
|
|
43
43
|
end
|
|
44
44
|
end
|
|
45
45
|
|
|
46
46
|
def update
|
|
47
47
|
spree_authorize! :update, spree_current_order, order_token unless guest_for_update.pre_registration?
|
|
48
48
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
render_error_payload(result.error || result.value&.errors, 422)
|
|
49
|
+
begin
|
|
50
|
+
SpreeCmCommissioner::UpdateGuestService.new(guest_for_update, guest_params).call
|
|
51
|
+
render_serialized_payload { serialize_resource(guest_for_update) }
|
|
52
|
+
rescue ActiveRecord::RecordInvalid => e
|
|
53
|
+
render_error_payload(e.record.errors, 422)
|
|
55
54
|
end
|
|
56
55
|
end
|
|
57
56
|
|
|
@@ -18,6 +18,7 @@ module Spree
|
|
|
18
18
|
order = Spree::Order.not_archived.find_by!(token: order_token)
|
|
19
19
|
|
|
20
20
|
spree_authorize! :update, order, order_token
|
|
21
|
+
raise CanCan::AccessDenied unless order.payment?
|
|
21
22
|
|
|
22
23
|
if order.mark_as_archive
|
|
23
24
|
render_serialized_payload { serialize_resource(order) }
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V2
|
|
4
|
+
module Storefront
|
|
5
|
+
class SavedGuestsController < ::Spree::Api::V2::ResourceController
|
|
6
|
+
before_action :require_spree_current_user
|
|
7
|
+
before_action :load_saved_guest, only: %i[show update destroy]
|
|
8
|
+
|
|
9
|
+
def collection
|
|
10
|
+
spree_current_user.saved_guests.order(created_at: :desc)
|
|
11
|
+
.page(params[:page])
|
|
12
|
+
.per(params[:per_page])
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def create
|
|
16
|
+
saved_guest = spree_current_user.saved_guests.new(saved_guest_params)
|
|
17
|
+
|
|
18
|
+
if saved_guest.save
|
|
19
|
+
render_serialized_payload(201) { serialize_resource(saved_guest) }
|
|
20
|
+
else
|
|
21
|
+
render_error_payload(saved_guest.errors.full_messages.to_sentence, 422)
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def update
|
|
26
|
+
if @saved_guest.update(saved_guest_params)
|
|
27
|
+
render_serialized_payload { serialize_resource(@saved_guest) }
|
|
28
|
+
else
|
|
29
|
+
render_error_payload(@saved_guest.errors.full_messages.to_sentence, 400)
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def destroy
|
|
34
|
+
@saved_guest.destroy
|
|
35
|
+
head :no_content
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
private
|
|
39
|
+
|
|
40
|
+
def model_class
|
|
41
|
+
SpreeCmCommissioner::SavedGuest
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def collection_serializer
|
|
45
|
+
resource_serializer
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def resource_serializer
|
|
49
|
+
SpreeCmCommissioner::V2::Storefront::SavedGuestSerializer
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def load_saved_guest
|
|
53
|
+
@saved_guest = spree_current_user.saved_guests.find(params[:id])
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def saved_guest_params
|
|
57
|
+
params.require(:saved_guest).permit(
|
|
58
|
+
:first_name,
|
|
59
|
+
:last_name,
|
|
60
|
+
:dob,
|
|
61
|
+
:age,
|
|
62
|
+
:gender,
|
|
63
|
+
:email,
|
|
64
|
+
:country_code,
|
|
65
|
+
:phone_number,
|
|
66
|
+
:intel_phone_number,
|
|
67
|
+
:nationality_id,
|
|
68
|
+
:occupation_id,
|
|
69
|
+
:nationality_group,
|
|
70
|
+
:age_group
|
|
71
|
+
)
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
end
|
|
@@ -14,8 +14,7 @@ module Spree
|
|
|
14
14
|
tenant_id: nil,
|
|
15
15
|
remote_ip: request.remote_ip,
|
|
16
16
|
waiting_guest_firebase_doc_id: params[:waiting_guest_firebase_doc_id],
|
|
17
|
-
page_path: params[:page_path]
|
|
18
|
-
device_attributes: permitted_device_attributes
|
|
17
|
+
page_path: params[:page_path]
|
|
19
18
|
)
|
|
20
19
|
|
|
21
20
|
if context.success?
|
|
@@ -28,12 +27,6 @@ module Spree
|
|
|
28
27
|
def resource_serializer
|
|
29
28
|
SpreeCmCommissioner::V2::Storefront::WaitingRoomSessionSerializer
|
|
30
29
|
end
|
|
31
|
-
|
|
32
|
-
private
|
|
33
|
-
|
|
34
|
-
def permitted_device_attributes
|
|
35
|
-
params.permit(*SpreeCmCommissioner::WaitingRoomSessionCreator::PERMITTED_DEVICE_ATTRIBUTES)
|
|
36
|
-
end
|
|
37
30
|
end
|
|
38
31
|
end
|
|
39
32
|
end
|
|
@@ -30,25 +30,28 @@ module Spree
|
|
|
30
30
|
def create
|
|
31
31
|
spree_authorize! :update, spree_current_order, order_token
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
resource = scope.new(guest_params.except(:guest_dynamic_fields_attributes))
|
|
34
34
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
35
|
+
ActiveRecord::Base.transaction do
|
|
36
|
+
resource.save!
|
|
37
|
+
run_dynamic_fields(resource)
|
|
38
|
+
resource.save_and_move_to_next_stage
|
|
39
39
|
end
|
|
40
|
+
|
|
41
|
+
render_serialized_payload(201) { serialize_resource(resource) }
|
|
40
42
|
end
|
|
41
43
|
|
|
42
44
|
def update
|
|
43
45
|
spree_authorize! :update, spree_current_order, order_token
|
|
44
46
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
render_error_payload(result.error || result.value&.errors, 422)
|
|
47
|
+
ActiveRecord::Base.transaction do
|
|
48
|
+
run_dynamic_fields(resource) if guest_params[:guest_dynamic_fields_attributes]
|
|
49
|
+
resource.assign_attributes(guest_params.except(:guest_dynamic_fields_attributes))
|
|
50
|
+
resource.save!
|
|
51
|
+
resource.save_and_move_to_next_stage
|
|
51
52
|
end
|
|
53
|
+
|
|
54
|
+
render_serialized_payload { serialize_resource(resource) }
|
|
52
55
|
end
|
|
53
56
|
|
|
54
57
|
private
|
|
@@ -96,6 +99,13 @@ module Spree
|
|
|
96
99
|
)
|
|
97
100
|
end
|
|
98
101
|
|
|
102
|
+
def run_dynamic_fields(resource)
|
|
103
|
+
SpreeCmCommissioner::GuestDynamicFieldsManager.call(
|
|
104
|
+
resource: resource,
|
|
105
|
+
dynamic_fields_attributes: guest_params[:guest_dynamic_fields_attributes]
|
|
106
|
+
)
|
|
107
|
+
end
|
|
108
|
+
|
|
99
109
|
def handle_record_invalid(exception)
|
|
100
110
|
render_error_payload(exception.record.errors, 422)
|
|
101
111
|
end
|