From 7e87f2caf7a98f8c1b1e14c6ac8598932a6f87c4 Mon Sep 17 00:00:00 2001 From: Yusuke Nakamura Date: Tue, 16 Jul 2024 21:58:37 +0900 Subject: [PATCH 1/4] Revert "Bye tito related code & configure" This reverts commit 8b0ef0185459846c4f65dc7067ed31c7c3dac9f8. --- ...sure_sponsorship_tito_discount_code_job.rb | 73 +++++++++++++++++++ app/jobs/process_sponsorship_edit_job.rb | 3 + app/jobs/sponsorship_welcome_job.rb | 2 + config/environments/development.rb | 2 + config/environments/production.rb | 2 + 5 files changed, 82 insertions(+) create mode 100644 app/jobs/ensure_sponsorship_tito_discount_code_job.rb diff --git a/app/jobs/ensure_sponsorship_tito_discount_code_job.rb b/app/jobs/ensure_sponsorship_tito_discount_code_job.rb new file mode 100644 index 0000000..628e4e0 --- /dev/null +++ b/app/jobs/ensure_sponsorship_tito_discount_code_job.rb @@ -0,0 +1,73 @@ +class EnsureSponsorshipTitoDiscountCodeJob < ApplicationJob + def perform(sponsorship, kind, ignore_quantity: false) + return unless Rails.application.config.x.tito.token + @kind = kind + @sponsorship = sponsorship + @conference = @sponsorship.conference + return unless @conference.tito_slug.present? + + @discount_code = @sponsorship.tito_discount_codes.where(kind: kind).first + + if @discount_code + return if @discount_code.quantity == quantity && !ignore_quantity + tito.update_discount_code(@conference.tito_slug, @discount_code.tito_discount_code_id, **discount_code_attributes) + @discount_code.update!(quantity: quantity) + else + return if quantity < 1 + tito_discount_code = tito.create_discount_code(@conference.tito_slug, **discount_code_attributes) + TitoDiscountCode.create!( + sponsorship: @sponsorship, + kind: @kind, + code: code, + quantity: quantity, + tito_discount_code_id: tito_discount_code.fetch(:discount_code).fetch(:id), + ) + end + end + + def code + "#{code_prefix}_#{@sponsorship.id}_#{@sponsorship.ticket_key[0,12]}" + end + + def discount_code_attributes + { + code: code, + type: 'PercentOffDiscountCode', + value: '100.0', + only_show_attached: true, + reveal_secret: true, + quantity: quantity, + release_ids: quantity > 0 ? [release_id] : nil, + description_for_organizer: "sponsorship=#{@sponsorship.id}, domain=#{@sponsorship.organization&.domain}, plan=#{@sponsorship.plan&.name}", + } + end + + def quantity + { + 'attendee' => @sponsorship.total_number_of_attendees, + 'booth_staff' => @sponsorship.total_number_of_booth_staff, + }.fetch(@kind) + end + + def code_prefix + { + 'attendee' => 'sa', + 'booth_staff' => 'sb', + }.fetch(@kind) + end + + def release_slug + { + 'attendee' => 'sponsor', + 'booth_staff' => 'booth-staff', + }.fetch(@kind) + end + + def release_id + @release_id ||= tito.get_release(@conference.tito_slug, release_slug).fetch(:release).fetch(:id) + end + + def tito + @tito ||= TitoApi.new + end +end diff --git a/app/jobs/process_sponsorship_edit_job.rb b/app/jobs/process_sponsorship_edit_job.rb index 2f22483..3c7c098 100644 --- a/app/jobs/process_sponsorship_edit_job.rb +++ b/app/jobs/process_sponsorship_edit_job.rb @@ -12,5 +12,8 @@ def perform(edit) ) # GenerateSponsorsYamlFileJob.perform_now(@conference) + + EnsureSponsorshipTitoDiscountCodeJob.perform_now(@sponsorship, 'attendee') + EnsureSponsorshipTitoDiscountCodeJob.perform_now(@sponsorship, 'booth_staff') end end diff --git a/app/jobs/sponsorship_welcome_job.rb b/app/jobs/sponsorship_welcome_job.rb index 99cc633..58b91f5 100644 --- a/app/jobs/sponsorship_welcome_job.rb +++ b/app/jobs/sponsorship_welcome_job.rb @@ -14,5 +14,7 @@ def perform(sponsorship) SlackWebhookJob.perform_now( { text: ":tamago: *New sponsorship* (#{sponsorship.plan_name || '*OTHER*'}): #{sponsorship.name} <#{conference_sponsorship_url(sponsorship.conference, sponsorship)}|Open>" }, ) + + EnsureSponsorshipTitoDiscountCodeJob.perform_later(sponsorship, 'attendee') end end diff --git a/config/environments/development.rb b/config/environments/development.rb index 9e947ab..19015ff 100644 --- a/config/environments/development.rb +++ b/config/environments/development.rb @@ -104,4 +104,6 @@ config.x.mailgun.api_key = ENV['MAILGUN_API_KEY'] config.x.sentry.dsn = ENV['SENTRY_DSN'] + + config.x.tito.token = ENV['TITO_API_TOKEN'] end diff --git a/config/environments/production.rb b/config/environments/production.rb index 3b3bcca..f539c55 100644 --- a/config/environments/production.rb +++ b/config/environments/production.rb @@ -14,6 +14,8 @@ config.x.github.app_id = ENV.fetch('GITHUB_APP_ID') config.x.github.private_key = OpenSSL::PKey::RSA.new(ENV.fetch('GITHUB_CLIENT_PRIVATE_KEY').unpack1('m*'), '') + config.x.tito.token = ENV.fetch('TITO_API_TOKEN') + config.x.slack.webhook_urls = { default: ENV.fetch('SLACK_WEBHOOK_URL'), feed: ENV.fetch('SLACK_WEBHOOK_URL_FOR_FEED', ENV.fetch('SLACK_WEBHOOK_URL')), From 0b8fcb483a44b73383281a88305d948ad25d3e4c Mon Sep 17 00:00:00 2001 From: Yusuke Nakamura Date: Tue, 16 Jul 2024 21:59:13 +0900 Subject: [PATCH 2/4] Remove whitespace --- app/jobs/ensure_sponsorship_tito_discount_code_job.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/jobs/ensure_sponsorship_tito_discount_code_job.rb b/app/jobs/ensure_sponsorship_tito_discount_code_job.rb index 628e4e0..4c4f1a4 100644 --- a/app/jobs/ensure_sponsorship_tito_discount_code_job.rb +++ b/app/jobs/ensure_sponsorship_tito_discount_code_job.rb @@ -24,7 +24,7 @@ def perform(sponsorship, kind, ignore_quantity: false) ) end end - + def code "#{code_prefix}_#{@sponsorship.id}_#{@sponsorship.ticket_key[0,12]}" end From 112f22301b8ccc18f91a8a4613dd040f49e740be Mon Sep 17 00:00:00 2001 From: Yusuke Nakamura Date: Tue, 16 Jul 2024 22:25:54 +0900 Subject: [PATCH 3/4] We have no attendee tickets for sponsors --- app/jobs/process_sponsorship_edit_job.rb | 2 +- app/jobs/sponsorship_welcome_job.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/jobs/process_sponsorship_edit_job.rb b/app/jobs/process_sponsorship_edit_job.rb index 3c7c098..4300ed0 100644 --- a/app/jobs/process_sponsorship_edit_job.rb +++ b/app/jobs/process_sponsorship_edit_job.rb @@ -13,7 +13,7 @@ def perform(edit) # GenerateSponsorsYamlFileJob.perform_now(@conference) - EnsureSponsorshipTitoDiscountCodeJob.perform_now(@sponsorship, 'attendee') + # EnsureSponsorshipTitoDiscountCodeJob.perform_now(@sponsorship, 'attendee') EnsureSponsorshipTitoDiscountCodeJob.perform_now(@sponsorship, 'booth_staff') end end diff --git a/app/jobs/sponsorship_welcome_job.rb b/app/jobs/sponsorship_welcome_job.rb index 58b91f5..2bb1b36 100644 --- a/app/jobs/sponsorship_welcome_job.rb +++ b/app/jobs/sponsorship_welcome_job.rb @@ -15,6 +15,6 @@ def perform(sponsorship) { text: ":tamago: *New sponsorship* (#{sponsorship.plan_name || '*OTHER*'}): #{sponsorship.name} <#{conference_sponsorship_url(sponsorship.conference, sponsorship)}|Open>" }, ) - EnsureSponsorshipTitoDiscountCodeJob.perform_later(sponsorship, 'attendee') + # EnsureSponsorshipTitoDiscountCodeJob.perform_later(sponsorship, 'attendee') end end From 6fb27486070fef29ac74127fccf19e45ae106265 Mon Sep 17 00:00:00 2001 From: Yusuke Nakamura Date: Tue, 16 Jul 2024 22:27:19 +0900 Subject: [PATCH 4/4] Temporary comment out --- app/jobs/process_sponsorship_edit_job.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/jobs/process_sponsorship_edit_job.rb b/app/jobs/process_sponsorship_edit_job.rb index 4300ed0..fdbf535 100644 --- a/app/jobs/process_sponsorship_edit_job.rb +++ b/app/jobs/process_sponsorship_edit_job.rb @@ -14,6 +14,6 @@ def perform(edit) # GenerateSponsorsYamlFileJob.perform_now(@conference) # EnsureSponsorshipTitoDiscountCodeJob.perform_now(@sponsorship, 'attendee') - EnsureSponsorshipTitoDiscountCodeJob.perform_now(@sponsorship, 'booth_staff') + # EnsureSponsorshipTitoDiscountCodeJob.perform_now(@sponsorship, 'booth_staff') end end