decidim-conferences 0.15.1 → 0.16.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (115) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/config/admin/decidim_conferences_manifest.js +1 -0
  3. data/app/assets/images/decidim/conferences/conference.svg +2 -5
  4. data/app/cells/decidim/conferences/linked_participatory_spaces_cell.rb +3 -0
  5. data/app/cells/decidim/conferences/{join_conference_button/show.erb → registration_type/join_conference.erb} +6 -7
  6. data/app/cells/decidim/conferences/{join_conference_button → registration_type}/registration_confirm.erb +2 -2
  7. data/app/cells/decidim/conferences/registration_type/show.erb +16 -0
  8. data/app/cells/decidim/conferences/registration_type_cell.rb +51 -0
  9. data/app/commands/decidim/conferences/admin/confirm_conference_registration.rb +75 -0
  10. data/app/commands/decidim/conferences/admin/create_conference.rb +1 -1
  11. data/app/commands/decidim/conferences/admin/create_registration_type.rb +77 -0
  12. data/app/commands/decidim/conferences/admin/destroy_registration_type.rb +56 -0
  13. data/app/commands/decidim/conferences/admin/invite_user_to_join_conference.rb +3 -2
  14. data/app/commands/decidim/conferences/admin/publish_registration_type.rb +36 -0
  15. data/app/commands/decidim/conferences/admin/send_conference_diplomas.rb +48 -0
  16. data/app/commands/decidim/conferences/admin/unpublish_registration_type.rb +36 -0
  17. data/app/commands/decidim/conferences/admin/update_conference.rb +2 -2
  18. data/app/commands/decidim/conferences/admin/update_diploma.rb +47 -0
  19. data/app/commands/decidim/conferences/admin/update_partner.rb +1 -1
  20. data/app/commands/decidim/conferences/admin/update_registration_type.rb +74 -0
  21. data/app/commands/decidim/conferences/join_conference.rb +21 -9
  22. data/app/commands/decidim/conferences/leave_conference.rb +5 -3
  23. data/app/controllers/decidim/conferences/admin/conference_registrations_controller.rb +21 -0
  24. data/app/controllers/decidim/conferences/admin/conferences_controller.rb +0 -9
  25. data/app/controllers/decidim/conferences/admin/diplomas_controller.rb +62 -0
  26. data/app/controllers/decidim/conferences/admin/registration_type_publications_controller.rb +53 -0
  27. data/app/controllers/decidim/conferences/admin/registration_types_controller.rb +84 -0
  28. data/app/controllers/decidim/conferences/application_controller.rb +2 -0
  29. data/app/controllers/decidim/conferences/conference_registrations_controller.rb +6 -2
  30. data/app/controllers/decidim/conferences/conferences_controller.rb +4 -0
  31. data/app/controllers/decidim/conferences/registration_types_controller.rb +39 -0
  32. data/app/events/decidim/conferences/conference_registration_notification_event.rb +21 -0
  33. data/app/forms/decidim/conferences/admin/conference_form.rb +5 -2
  34. data/app/forms/decidim/conferences/admin/conference_registration_invite_form.rb +15 -0
  35. data/app/forms/decidim/conferences/admin/diploma_form.rb +24 -0
  36. data/app/forms/decidim/conferences/admin/registration_type_form.rb +44 -0
  37. data/app/helpers/decidim/conferences/conference_helper.rb +15 -0
  38. data/app/jobs/decidim/conferences/admin/send_conference_diploma_job.rb +20 -0
  39. data/app/jobs/decidim/conferences/upcoming_conference_notification_job.rb +1 -1
  40. data/app/mailers/decidim/conferences/admin/invite_join_conference_mailer.rb +2 -1
  41. data/app/mailers/decidim/conferences/admin/send_conference_diploma_mailer.rb +48 -0
  42. data/app/mailers/decidim/conferences/conference_registration_mailer.rb +16 -1
  43. data/app/models/decidim/conference.rb +12 -0
  44. data/app/models/decidim/conference_meeting.rb +2 -0
  45. data/app/models/decidim/conferences/conference_invite.rb +1 -0
  46. data/app/models/decidim/conferences/conference_meeting_registration_type.rb +10 -0
  47. data/app/models/decidim/conferences/conference_registration.rb +11 -0
  48. data/app/models/decidim/conferences/registration_type.rb +25 -0
  49. data/app/permissions/decidim/conferences/permissions.rb +19 -12
  50. data/app/presenters/decidim/conference_speaker_presenter.rb +4 -0
  51. data/app/presenters/decidim/conferences/admin_log/conference_registration_presenter.rb +43 -0
  52. data/app/presenters/decidim/conferences/admin_log/conferences_presenter.rb +4 -2
  53. data/app/presenters/decidim/conferences/admin_log/partner_presenter.rb +1 -1
  54. data/app/presenters/decidim/conferences/admin_log/registration_type_presenter.rb +45 -0
  55. data/app/serializers/decidim/conferences/conference_registration_serializer.rb +4 -0
  56. data/app/serializers/decidim/conferences/data_portability_conference_invite_serializer.rb +4 -0
  57. data/app/serializers/decidim/conferences/data_portability_conference_registration_serializer.rb +4 -0
  58. data/app/uploaders/decidim/conferences/diploma_uploader.rb +12 -0
  59. data/app/views/decidim/conferences/admin/conference_invites/_form.html.erb +8 -0
  60. data/app/views/decidim/conferences/admin/conference_invites/index.html.erb +4 -0
  61. data/app/views/decidim/conferences/admin/conference_registrations/index.html.erb +16 -0
  62. data/app/views/decidim/conferences/admin/conferences/edit.html.erb +0 -4
  63. data/app/views/decidim/conferences/admin/diplomas/_form.html.erb +31 -0
  64. data/app/views/decidim/conferences/admin/diplomas/edit.html.erb +7 -0
  65. data/app/views/decidim/conferences/admin/invite_join_conference_mailer/invite.html.erb +2 -2
  66. data/app/views/decidim/conferences/admin/registration_types/_form.html.erb +30 -0
  67. data/app/views/decidim/conferences/admin/registration_types/edit.html.erb +7 -0
  68. data/app/views/decidim/conferences/admin/registration_types/index.html.erb +65 -0
  69. data/app/views/decidim/conferences/admin/registration_types/new.html.erb +7 -0
  70. data/app/views/decidim/conferences/admin/send_conference_diploma_mailer/diploma.html.erb +1 -0
  71. data/app/views/decidim/conferences/admin/send_conference_diploma_mailer/diploma_user.html.erb +24 -0
  72. data/app/views/decidim/conferences/conference_program/_program_meeting.html.erb +1 -2
  73. data/app/views/decidim/conferences/conference_registration_mailer/confirmation.html.erb +9 -1
  74. data/app/views/decidim/conferences/conference_registration_mailer/pending_validation.html.erb +11 -0
  75. data/app/views/decidim/conferences/conferences/index.html.erb +2 -2
  76. data/app/views/decidim/conferences/conferences/show.html.erb +10 -24
  77. data/app/views/decidim/conferences/registration_types/index.html.erb +30 -0
  78. data/app/views/decidim/conferences/shared/_conference_user_login.html.erb +14 -0
  79. data/app/views/layouts/decidim/_conference_hero.html.erb +5 -3
  80. data/app/views/layouts/decidim/_conferences_nav.html.erb +45 -89
  81. data/app/views/layouts/decidim/admin/conference.html.erb +26 -8
  82. data/app/views/layouts/decidim/diploma.html.erb +11 -0
  83. data/config/initializers/wicked_pdf.rb +23 -0
  84. data/config/locales/ca.yml +125 -19
  85. data/config/locales/de.yml +127 -21
  86. data/config/locales/en.yml +126 -23
  87. data/config/locales/es-PY.yml +125 -19
  88. data/config/locales/es.yml +125 -19
  89. data/config/locales/eu.yml +127 -21
  90. data/config/locales/fi-pl.yml +570 -0
  91. data/config/locales/fi.yml +145 -39
  92. data/config/locales/fr.yml +127 -21
  93. data/config/locales/gl.yml +126 -20
  94. data/config/locales/hu.yml +127 -21
  95. data/config/locales/id-ID.yml +563 -0
  96. data/config/locales/it.yml +127 -21
  97. data/config/locales/nl.yml +126 -20
  98. data/config/locales/pl.yml +127 -24
  99. data/config/locales/pt-BR.yml +125 -19
  100. data/config/locales/pt.yml +126 -20
  101. data/config/locales/sv.yml +164 -58
  102. data/config/locales/tr-TR.yml +567 -0
  103. data/db/migrate/20181023142325_add_conference_registration_types.rb +21 -0
  104. data/db/migrate/20181030090202_add_reference_registration_type_to_conference_registration.rb +9 -0
  105. data/db/migrate/20181030153614_add_registration_type_to_conference_invite.rb +8 -0
  106. data/db/migrate/20181106092826_add_diploma_fields_to_conference.rb +11 -0
  107. data/db/migrate/20181123124424_make_price_optional_conference_registration_type.rb +7 -0
  108. data/lib/decidim/conferences/admin_engine.rb +16 -2
  109. data/lib/decidim/conferences/engine.rb +8 -4
  110. data/lib/decidim/conferences/participatory_space.rb +11 -0
  111. data/lib/decidim/conferences/test/factories.rb +36 -0
  112. data/lib/decidim/conferences/version.rb +1 -1
  113. metadata +94 -22
  114. data/app/cells/decidim/conferences/join_conference_button_cell.rb +0 -42
  115. data/app/views/decidim/conferences/conferences/_conferences_sidebar.html.erb +0 -11
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module Conferences
5
+ module Admin
6
+ # This command gets called when a registration type is unpublished from the admin panel.
7
+ class UnpublishRegistrationType < Rectify::Command
8
+ # Public: Initializes the command.
9
+ #
10
+ # registration_type - The registration_type to unpublish.
11
+ # current_user - the user performing the action
12
+ def initialize(registration_type, current_user)
13
+ @registration_type = registration_type
14
+ @current_user = current_user
15
+ end
16
+
17
+ # Public: Unpublishes the RegistrationType.
18
+ #
19
+ # Broadcasts :ok if unpublished, :invalid otherwise.
20
+ def call
21
+ return broadcast(:invalid) if registration_type.nil? || !registration_type.published?
22
+
23
+ Decidim.traceability.perform_action!(:unpublish, registration_type, current_user) do
24
+ registration_type.unpublish!
25
+ end
26
+
27
+ broadcast(:ok)
28
+ end
29
+
30
+ private
31
+
32
+ attr_reader :registration_type, :current_user
33
+ end
34
+ end
35
+ end
36
+ end
@@ -94,7 +94,7 @@ module Decidim
94
94
  event: "decidim.events.conferences.registrations_enabled",
95
95
  event_class: Decidim::Conferences::ConferenceRegistrationsEnabledEvent,
96
96
  resource: @conference,
97
- recipient_ids: @conference.followers.pluck(:id)
97
+ followers: @conference.followers
98
98
  )
99
99
  end
100
100
 
@@ -107,7 +107,7 @@ module Decidim
107
107
  event: "decidim.events.conferences.conference_updated",
108
108
  event_class: Decidim::Conferences::UpdateConferenceEvent,
109
109
  resource: @conference,
110
- recipient_ids: @conference.followers.pluck(:id)
110
+ followers: @conference.followers
111
111
  )
112
112
  end
113
113
 
@@ -0,0 +1,47 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module Conferences
5
+ module Admin
6
+ # This command is executed when the user updates the conference diploma configuration.
7
+ class UpdateDiploma < Rectify::Command
8
+ # Initializes a UpdateDiploma Command.
9
+ #
10
+ # form - The form from which to get the data.
11
+ # conference - The current instance of the conference to be updated.
12
+ def initialize(form, conference)
13
+ @form = form
14
+ @conference = conference
15
+ end
16
+
17
+ # Updates the conference if valid.
18
+ #
19
+ # Broadcasts :ok if successful, :invalid otherwise.
20
+ def call
21
+ @conference.with_lock do
22
+ return broadcast(:invalid) if form.invalid?
23
+ update_conference_diploma
24
+ Decidim.traceability.perform_action!(:update_diploma, @conference, form.current_user) do
25
+ @conference
26
+ end
27
+ end
28
+
29
+ broadcast(:ok)
30
+ end
31
+
32
+ private
33
+
34
+ attr_reader :form, :conference
35
+
36
+ def update_conference_diploma
37
+ @conference.main_logo = @form.main_logo
38
+ @conference.signature = @form.signature
39
+ @conference.signature_name = @form.signature_name
40
+ @conference.sign_date = @form.sign_date
41
+
42
+ @conference.save!
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
@@ -4,7 +4,7 @@ module Decidim
4
4
  module Conferences
5
5
  module Admin
6
6
  # A command with all the business logic when updating a conference
7
- # speaker in the system.
7
+ # partner in the system.
8
8
  class UpdatePartner < Rectify::Command
9
9
  # Public: Initializes the command.
10
10
  #
@@ -0,0 +1,74 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module Conferences
5
+ module Admin
6
+ # A command with all the business logic when updating a conference
7
+ # registration type in the system.
8
+ class UpdateRegistrationType < Rectify::Command
9
+ # Public: Initializes the command.
10
+ #
11
+ # form - A form object with the params.
12
+ # registration_type - The RegistrationType to update
13
+ def initialize(form, registration_type)
14
+ @form = form
15
+ @registration_type = registration_type
16
+ end
17
+
18
+ # Executes the command. Broadcasts these events:
19
+ #
20
+ # - :ok when everything is valid.
21
+ # - :invalid if the form wasn't valid and we couldn't proceed.
22
+ #
23
+ # Returns nothing.
24
+ def call
25
+ return broadcast(:invalid) if form.invalid?
26
+ return broadcast(:invalid) unless registration_type
27
+
28
+ transaction do
29
+ update_registration_type!
30
+ link_meetings(@registration_type)
31
+ end
32
+
33
+ broadcast(:ok)
34
+ end
35
+
36
+ private
37
+
38
+ attr_reader :form, :registration_type
39
+
40
+ def update_registration_type!
41
+ log_info = {
42
+ resource: {
43
+ title: registration_type.title
44
+ },
45
+ participatory_space: {
46
+ title: registration_type.conference.title
47
+ }
48
+ }
49
+
50
+ Decidim.traceability.update!(
51
+ registration_type,
52
+ form.current_user,
53
+ form.attributes.slice(
54
+ :title,
55
+ :description,
56
+ :price,
57
+ :weight
58
+ ),
59
+ log_info
60
+ )
61
+ end
62
+
63
+ def conference_meetings(registration_type)
64
+ meeting_components = registration_type.conference.components.where(manifest_name: "meetings")
65
+ Decidim::ConferenceMeeting.where(component: meeting_components).where(id: @form.attributes[:conference_meeting_ids])
66
+ end
67
+
68
+ def link_meetings(registration_type)
69
+ registration_type.conference_meetings = conference_meetings(registration_type)
70
+ end
71
+ end
72
+ end
73
+ end
74
+ end
@@ -7,9 +7,11 @@ module Decidim
7
7
  # Initializes a JoinConference Command.
8
8
  #
9
9
  # conference - The current instance of the conference to be joined.
10
+ # registration_type - The registration type selected to attend the conference
10
11
  # user - The user joining the conference.
11
- def initialize(conference, user)
12
+ def initialize(conference, registration_type, user)
12
13
  @conference = conference
14
+ @registration_type = registration_type
13
15
  @user = user
14
16
  end
15
17
 
@@ -23,8 +25,9 @@ module Decidim
23
25
  create_registration
24
26
  create_meetings_registrations
25
27
  accept_invitation
26
- send_email_confirmation
27
- send_notification
28
+ send_email_pending_validation
29
+ send_notification_pending_validation
30
+ notify_admin_over_percentage
28
31
  end
29
32
  broadcast(:ok)
30
33
  end
@@ -38,12 +41,12 @@ module Decidim
38
41
  end
39
42
 
40
43
  def create_registration
41
- Decidim::Conferences::ConferenceRegistration.create!(conference: conference, user: user)
44
+ Decidim::Conferences::ConferenceRegistration.create!(conference: conference, user: user, registration_type: @registration_type)
42
45
  end
43
46
 
44
47
  def create_meetings_registrations
45
48
  published_meeting_components = Decidim::Component.where(participatory_space: conference).where(manifest_name: "meetings").published
46
- meetings = Decidim::Meetings::Meeting.where(component: published_meeting_components)
49
+ meetings = Decidim::Meetings::Meeting.where(component: published_meeting_components).where(id: @registration_type.conference_meetings.pluck(:id))
47
50
 
48
51
  meetings.each do |meeting|
49
52
  Decidim::Meetings::Registration.create!(meeting: meeting, user: user)
@@ -54,15 +57,24 @@ module Decidim
54
57
  conference.registrations_enabled? && conference.has_available_slots?
55
58
  end
56
59
 
57
- def send_email_confirmation
58
- Decidim::Conferences::ConferenceRegistrationMailer.confirmation(user, conference).deliver_later
60
+ def send_email_pending_validation
61
+ Decidim::Conferences::ConferenceRegistrationMailer.pending_validation(user, conference, @registration_type).deliver_later
62
+ end
63
+
64
+ def send_notification_pending_validation
65
+ Decidim::EventsManager.publish(
66
+ event: "decidim.events.conferences.conference_registration_validation_pending",
67
+ event_class: Decidim::Conferences::ConferenceRegistrationNotificationEvent,
68
+ resource: @conference,
69
+ affected_users: [@user]
70
+ )
59
71
  end
60
72
 
61
73
  def participatory_space_admins
62
74
  @conference.admins
63
75
  end
64
76
 
65
- def send_notification
77
+ def notify_admin_over_percentage
66
78
  return send_notification_over(0.5) if occupied_slots_over?(0.5)
67
79
  return send_notification_over(0.8) if occupied_slots_over?(0.8)
68
80
  send_notification_over(1.0) if occupied_slots_over?(1.0)
@@ -73,7 +85,7 @@ module Decidim
73
85
  event: "decidim.events.conferences.conference_registrations_over_percentage",
74
86
  event_class: Decidim::Conferences::ConferenceRegistrationsOverPercentageEvent,
75
87
  resource: @conference,
76
- recipient_ids: participatory_space_admins.pluck(:id),
88
+ followers: participatory_space_admins,
77
89
  extra: {
78
90
  percentage: percentage
79
91
  }
@@ -7,9 +7,11 @@ module Decidim
7
7
  # Initializes a LeaveConference Command.
8
8
  #
9
9
  # conference - The current instance of the conference to be left.
10
+ # registration_type - The registration type selected to attend the conference
10
11
  # user - The user leaving the conference.
11
- def initialize(conference, user)
12
+ def initialize(conference, registration_type, user)
12
13
  @conference = conference
14
+ @registration_type = registration_type
13
15
  @user = user
14
16
  end
15
17
 
@@ -30,7 +32,7 @@ module Decidim
30
32
  private
31
33
 
32
34
  def registration
33
- @registration ||= Decidim::Conferences::ConferenceRegistration.find_by(conference: @conference, user: @user)
35
+ @registration ||= Decidim::Conferences::ConferenceRegistration.find_by(conference: @conference, user: @user, registration_type: @registration_type)
34
36
  end
35
37
 
36
38
  def destroy_registration
@@ -39,7 +41,7 @@ module Decidim
39
41
 
40
42
  def meetings_registrations
41
43
  published_meeting_components = Decidim::Component.where(participatory_space: @conference).where(manifest_name: "meetings").published
42
- meetings = Decidim::Meetings::Meeting.where(component: published_meeting_components)
44
+ meetings = Decidim::Meetings::Meeting.where(component: published_meeting_components).where(id: @registration_type.conference_meetings.pluck(:id))
43
45
 
44
46
  @meetings_registrations ||= Decidim::Meetings::Registration.where(meeting: meetings, user: @user)
45
47
  end
@@ -28,11 +28,32 @@ module Decidim
28
28
  end
29
29
  end
30
30
 
31
+ def confirm
32
+ enforce_permission_to :confirm, :conference_registration, conference_registration: conference_registration
33
+
34
+ ConfirmConferenceRegistration.call(conference_registration, current_user) do
35
+ on(:ok) do
36
+ flash[:notice] = I18n.t("conference_registration.confirm.success", scope: "decidim.admin")
37
+ end
38
+
39
+ on(:invalid) do
40
+ flash[:alert] = I18n.t("conference_registration.confirm.error", scope: "decidim.admin")
41
+ end
42
+
43
+ redirect_back(fallback_location: conference_conference_registrations_path)
44
+ end
45
+ end
46
+
31
47
  private
32
48
 
33
49
  def conference
34
50
  @conference ||= Decidim::Conference.find_by(slug: params[:conference_slug])
35
51
  end
52
+
53
+ def conference_registration
54
+ return if params[:id].blank?
55
+ @conference_registration ||= conference.conference_registrations.find_by(id: params[:id])
56
+ end
36
57
  end
37
58
  end
38
59
  end
@@ -62,15 +62,6 @@ module Decidim
62
62
  end
63
63
  end
64
64
 
65
- def destroy
66
- enforce_permission_to :destroy, :conference, conference: current_conference
67
- current_conference.destroy!
68
-
69
- flash[:notice] = I18n.t("conferences.destroy.success", scope: "decidim.admin")
70
-
71
- redirect_to conferences_path
72
- end
73
-
74
65
  def copy
75
66
  enforce_permission_to :create, :conference
76
67
  end
@@ -0,0 +1,62 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module Conferences
5
+ module Admin
6
+ # This controller allows an admin to manage Conference Diploma configuration
7
+ class DiplomasController < Decidim::Conferences::Admin::ApplicationController
8
+ include Concerns::ConferenceAdmin
9
+
10
+ def edit
11
+ enforce_permission_to :update, :conference, conference: current_conference
12
+
13
+ @form = form(DiplomaForm).from_model(current_conference)
14
+ end
15
+
16
+ def update
17
+ enforce_permission_to :update, :conference, conference: current_conference
18
+
19
+ @form = form(DiplomaForm).from_params(diploma_params).with_context(conference: current_conference)
20
+
21
+ UpdateDiploma.call(@form, current_conference) do
22
+ on(:ok) do
23
+ flash[:notice] = I18n.t("conferences.update.success", scope: "decidim.admin")
24
+ redirect_to edit_conference_diploma_path(current_conference)
25
+ end
26
+
27
+ on(:invalid) do
28
+ flash.now[:alert] = I18n.t("conferences.update.error", scope: "decidim.admin")
29
+ render :edit
30
+ end
31
+ end
32
+ end
33
+
34
+ def send_diplomas
35
+ enforce_permission_to :send_diplomas, :conference, conference: current_conference
36
+
37
+ SendConferenceDiplomas.call(current_conference, current_user) do
38
+ on(:ok) do
39
+ flash[:notice] = I18n.t("send_diploma.success", scope: "decidim.conferences.admin")
40
+ redirect_to edit_conference_diploma_path(current_conference)
41
+ end
42
+
43
+ on(:invalid) do
44
+ flash[:alert] = I18n.t("send_diploma.error", scope: "decidim.conferences.admin")
45
+ redirect_to edit_conference_diploma_path(current_conference)
46
+ end
47
+ end
48
+ end
49
+
50
+ private
51
+
52
+ def diploma_params
53
+ {
54
+ id: params[:slug],
55
+ signature: current_conference.signature,
56
+ main_logo: current_conference.main_logo
57
+ }.merge(params[:conference].to_unsafe_h)
58
+ end
59
+ end
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,53 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module Conferences
5
+ module Admin
6
+ # Controller that allows managing registration type publications.
7
+ #
8
+ class RegistrationTypePublicationsController < Decidim::Conferences::Admin::ApplicationController
9
+ include Concerns::ConferenceAdmin
10
+
11
+ def create
12
+ @registration_type = collection.find(params[:registration_type_id])
13
+ enforce_permission_to :publish, :registration_type, registration_type: @registration_type
14
+
15
+ PublishRegistrationType.call(@registration_type, current_user) do
16
+ on(:ok) do
17
+ flash[:notice] = I18n.t("registration_type_publications.create.success", scope: "decidim.admin")
18
+ end
19
+
20
+ on(:invalid) do
21
+ flash[:alert] = I18n.t("registration_type_publications.create.error", scope: "decidim.admin")
22
+ end
23
+
24
+ redirect_back(fallback_location: conference_registration_types_path(current_conference))
25
+ end
26
+ end
27
+
28
+ def destroy
29
+ @registration_type = collection.find(params[:registration_type_id])
30
+ enforce_permission_to :unpublish, :registration_type, registration_type: @registration_type
31
+
32
+ UnpublishRegistrationType.call(@registration_type, current_user) do
33
+ on(:ok) do
34
+ flash[:notice] = I18n.t("registration_type_publications.destroy.success", scope: "decidim.admin")
35
+ end
36
+
37
+ on(:invalid) do
38
+ flash[:alert] = I18n.t("registration_type_publications.destroy.error", scope: "decidim.admin")
39
+ end
40
+
41
+ redirect_back(fallback_location: conference_registration_types_path(current_conference))
42
+ end
43
+ end
44
+
45
+ private
46
+
47
+ def collection
48
+ @collection ||= Decidim::Conferences::RegistrationType.where(conference: current_conference)
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end