decidim-conferences 0.15.1 → 0.16.0
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/app/assets/config/admin/decidim_conferences_manifest.js +1 -0
- data/app/assets/images/decidim/conferences/conference.svg +2 -5
- data/app/cells/decidim/conferences/linked_participatory_spaces_cell.rb +3 -0
- data/app/cells/decidim/conferences/{join_conference_button/show.erb → registration_type/join_conference.erb} +6 -7
- data/app/cells/decidim/conferences/{join_conference_button → registration_type}/registration_confirm.erb +2 -2
- data/app/cells/decidim/conferences/registration_type/show.erb +16 -0
- data/app/cells/decidim/conferences/registration_type_cell.rb +51 -0
- data/app/commands/decidim/conferences/admin/confirm_conference_registration.rb +75 -0
- data/app/commands/decidim/conferences/admin/create_conference.rb +1 -1
- data/app/commands/decidim/conferences/admin/create_registration_type.rb +77 -0
- data/app/commands/decidim/conferences/admin/destroy_registration_type.rb +56 -0
- data/app/commands/decidim/conferences/admin/invite_user_to_join_conference.rb +3 -2
- data/app/commands/decidim/conferences/admin/publish_registration_type.rb +36 -0
- data/app/commands/decidim/conferences/admin/send_conference_diplomas.rb +48 -0
- data/app/commands/decidim/conferences/admin/unpublish_registration_type.rb +36 -0
- data/app/commands/decidim/conferences/admin/update_conference.rb +2 -2
- data/app/commands/decidim/conferences/admin/update_diploma.rb +47 -0
- data/app/commands/decidim/conferences/admin/update_partner.rb +1 -1
- data/app/commands/decidim/conferences/admin/update_registration_type.rb +74 -0
- data/app/commands/decidim/conferences/join_conference.rb +21 -9
- data/app/commands/decidim/conferences/leave_conference.rb +5 -3
- data/app/controllers/decidim/conferences/admin/conference_registrations_controller.rb +21 -0
- data/app/controllers/decidim/conferences/admin/conferences_controller.rb +0 -9
- data/app/controllers/decidim/conferences/admin/diplomas_controller.rb +62 -0
- data/app/controllers/decidim/conferences/admin/registration_type_publications_controller.rb +53 -0
- data/app/controllers/decidim/conferences/admin/registration_types_controller.rb +84 -0
- data/app/controllers/decidim/conferences/application_controller.rb +2 -0
- data/app/controllers/decidim/conferences/conference_registrations_controller.rb +6 -2
- data/app/controllers/decidim/conferences/conferences_controller.rb +4 -0
- data/app/controllers/decidim/conferences/registration_types_controller.rb +39 -0
- data/app/events/decidim/conferences/conference_registration_notification_event.rb +21 -0
- data/app/forms/decidim/conferences/admin/conference_form.rb +5 -2
- data/app/forms/decidim/conferences/admin/conference_registration_invite_form.rb +15 -0
- data/app/forms/decidim/conferences/admin/diploma_form.rb +24 -0
- data/app/forms/decidim/conferences/admin/registration_type_form.rb +44 -0
- data/app/helpers/decidim/conferences/conference_helper.rb +15 -0
- data/app/jobs/decidim/conferences/admin/send_conference_diploma_job.rb +20 -0
- data/app/jobs/decidim/conferences/upcoming_conference_notification_job.rb +1 -1
- data/app/mailers/decidim/conferences/admin/invite_join_conference_mailer.rb +2 -1
- data/app/mailers/decidim/conferences/admin/send_conference_diploma_mailer.rb +48 -0
- data/app/mailers/decidim/conferences/conference_registration_mailer.rb +16 -1
- data/app/models/decidim/conference.rb +12 -0
- data/app/models/decidim/conference_meeting.rb +2 -0
- data/app/models/decidim/conferences/conference_invite.rb +1 -0
- data/app/models/decidim/conferences/conference_meeting_registration_type.rb +10 -0
- data/app/models/decidim/conferences/conference_registration.rb +11 -0
- data/app/models/decidim/conferences/registration_type.rb +25 -0
- data/app/permissions/decidim/conferences/permissions.rb +19 -12
- data/app/presenters/decidim/conference_speaker_presenter.rb +4 -0
- data/app/presenters/decidim/conferences/admin_log/conference_registration_presenter.rb +43 -0
- data/app/presenters/decidim/conferences/admin_log/conferences_presenter.rb +4 -2
- data/app/presenters/decidim/conferences/admin_log/partner_presenter.rb +1 -1
- data/app/presenters/decidim/conferences/admin_log/registration_type_presenter.rb +45 -0
- data/app/serializers/decidim/conferences/conference_registration_serializer.rb +4 -0
- data/app/serializers/decidim/conferences/data_portability_conference_invite_serializer.rb +4 -0
- data/app/serializers/decidim/conferences/data_portability_conference_registration_serializer.rb +4 -0
- data/app/uploaders/decidim/conferences/diploma_uploader.rb +12 -0
- data/app/views/decidim/conferences/admin/conference_invites/_form.html.erb +8 -0
- data/app/views/decidim/conferences/admin/conference_invites/index.html.erb +4 -0
- data/app/views/decidim/conferences/admin/conference_registrations/index.html.erb +16 -0
- data/app/views/decidim/conferences/admin/conferences/edit.html.erb +0 -4
- data/app/views/decidim/conferences/admin/diplomas/_form.html.erb +31 -0
- data/app/views/decidim/conferences/admin/diplomas/edit.html.erb +7 -0
- data/app/views/decidim/conferences/admin/invite_join_conference_mailer/invite.html.erb +2 -2
- data/app/views/decidim/conferences/admin/registration_types/_form.html.erb +30 -0
- data/app/views/decidim/conferences/admin/registration_types/edit.html.erb +7 -0
- data/app/views/decidim/conferences/admin/registration_types/index.html.erb +65 -0
- data/app/views/decidim/conferences/admin/registration_types/new.html.erb +7 -0
- data/app/views/decidim/conferences/admin/send_conference_diploma_mailer/diploma.html.erb +1 -0
- data/app/views/decidim/conferences/admin/send_conference_diploma_mailer/diploma_user.html.erb +24 -0
- data/app/views/decidim/conferences/conference_program/_program_meeting.html.erb +1 -2
- data/app/views/decidim/conferences/conference_registration_mailer/confirmation.html.erb +9 -1
- data/app/views/decidim/conferences/conference_registration_mailer/pending_validation.html.erb +11 -0
- data/app/views/decidim/conferences/conferences/index.html.erb +2 -2
- data/app/views/decidim/conferences/conferences/show.html.erb +10 -24
- data/app/views/decidim/conferences/registration_types/index.html.erb +30 -0
- data/app/views/decidim/conferences/shared/_conference_user_login.html.erb +14 -0
- data/app/views/layouts/decidim/_conference_hero.html.erb +5 -3
- data/app/views/layouts/decidim/_conferences_nav.html.erb +45 -89
- data/app/views/layouts/decidim/admin/conference.html.erb +26 -8
- data/app/views/layouts/decidim/diploma.html.erb +11 -0
- data/config/initializers/wicked_pdf.rb +23 -0
- data/config/locales/ca.yml +125 -19
- data/config/locales/de.yml +127 -21
- data/config/locales/en.yml +126 -23
- data/config/locales/es-PY.yml +125 -19
- data/config/locales/es.yml +125 -19
- data/config/locales/eu.yml +127 -21
- data/config/locales/fi-pl.yml +570 -0
- data/config/locales/fi.yml +145 -39
- data/config/locales/fr.yml +127 -21
- data/config/locales/gl.yml +126 -20
- data/config/locales/hu.yml +127 -21
- data/config/locales/id-ID.yml +563 -0
- data/config/locales/it.yml +127 -21
- data/config/locales/nl.yml +126 -20
- data/config/locales/pl.yml +127 -24
- data/config/locales/pt-BR.yml +125 -19
- data/config/locales/pt.yml +126 -20
- data/config/locales/sv.yml +164 -58
- data/config/locales/tr-TR.yml +567 -0
- data/db/migrate/20181023142325_add_conference_registration_types.rb +21 -0
- data/db/migrate/20181030090202_add_reference_registration_type_to_conference_registration.rb +9 -0
- data/db/migrate/20181030153614_add_registration_type_to_conference_invite.rb +8 -0
- data/db/migrate/20181106092826_add_diploma_fields_to_conference.rb +11 -0
- data/db/migrate/20181123124424_make_price_optional_conference_registration_type.rb +7 -0
- data/lib/decidim/conferences/admin_engine.rb +16 -2
- data/lib/decidim/conferences/engine.rb +8 -4
- data/lib/decidim/conferences/participatory_space.rb +11 -0
- data/lib/decidim/conferences/test/factories.rb +36 -0
- data/lib/decidim/conferences/version.rb +1 -1
- metadata +94 -22
- data/app/cells/decidim/conferences/join_conference_button_cell.rb +0 -42
- data/app/views/decidim/conferences/conferences/_conferences_sidebar.html.erb +0 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ddc7fa34e2b4e2c992da97804172fe9475eacda9bcbe53177305aa3a704f942c
|
4
|
+
data.tar.gz: ce3e59d39e71aef52043e06029ebaf2c647ee9884efae26bc2a74d0dbfea125f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e8468192f591655efbbad30949b26d4f470f25b67687fc9de707eba4f53153a3d4ea5fd85b33cb0695cf439d0a3ae80209c83e895c9c3f1a9e81c7068e669706
|
7
|
+
data.tar.gz: e0fa55a79b3043b793c5184dd7dca4425626effd210f076f8056595eb1b33f4dd9c95be2ae19a44cf1d9c23de03d7bdfccc0588b6c37b2bc11f8e9a83baa9e11
|
@@ -1,6 +1,3 @@
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0
|
2
|
-
<path d="
|
3
|
-
<ellipse ry="5.504777" rx="5.5598245" cy="17.971844" cx="18" />
|
4
|
-
<path d="M883.8,543.84a18,18,0,1,1,18-18A18,18,0,0,1,883.8,543.84Zm0-34a16,16,0,1,0,16,16A16,16,0,0,0,883.8,509.83Z" transform="translate(-865.8 -507.83)" />
|
5
|
-
<path d="m 6.3078227,-25.154474 a 9.3338938,9.0435648 0 0 1 -8.7369752,9.025052 9.3338938,9.0435648 0 0 1 -9.8544645,-7.870717 9.3338938,9.0435648 0 0 1 7.4765554,-10.031744" transform="matrix(-0.78352169,0.62136443,-0.62136443,-0.78352169,0,0)" class="stroked-shape" />
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 8 8">
|
2
|
+
<path d="M2.91-.03a1 1 0 0 0-.13.03 1 1 0 0 0-.78 1v2a1 1 0 1 0 2 0v-2a1 1 0 0 0-1.09-1.03zm-2.56 2.03a.5.5 0 0 0-.34.5v.5c0 1.48 1.09 2.69 2.5 2.94v1.06h-.5c-.55 0-1 .45-1 1h4.01c0-.55-.45-1-1-1h-.5v-1.06c1.41-.24 2.5-1.46 2.5-2.94v-.5a.5.5 0 1 0-1 0v.5c0 1.11-.89 2-2 2-1.11 0-2-.89-2-2v-.5a.5.5 0 0 0-.59-.5.5.5 0 0 0-.06 0z" transform="translate(1)"/>
|
6
3
|
</svg>
|
@@ -19,18 +19,21 @@ module Decidim
|
|
19
19
|
end
|
20
20
|
|
21
21
|
def conference_participatory_processes
|
22
|
+
return unless Decidim.participatory_space_manifests.map(&:name).include?(:participatory_processes)
|
22
23
|
processes = model.linked_participatory_space_resources(:participatory_processes, "included_participatory_processes")
|
23
24
|
return unless processes.any?
|
24
25
|
processes
|
25
26
|
end
|
26
27
|
|
27
28
|
def conference_assemblies
|
29
|
+
return unless Decidim.participatory_space_manifests.map(&:name).include?(:assemblies)
|
28
30
|
assemblies = model.linked_participatory_space_resources(:assemblies, "included_assemblies")
|
29
31
|
return unless assemblies.any?
|
30
32
|
assemblies
|
31
33
|
end
|
32
34
|
|
33
35
|
def conference_consultations
|
36
|
+
return unless Decidim.participatory_space_manifests.map(&:name).include?(:consultations)
|
34
37
|
consultations = model.linked_participatory_space_resources(:consultations, "included_consultations")
|
35
38
|
return unless consultations.any?
|
36
39
|
consultations
|
@@ -1,9 +1,10 @@
|
|
1
|
-
<% if
|
2
|
-
<% if
|
1
|
+
<% if conference.registrations_enabled? %>
|
2
|
+
<% if conference.has_registration_for_user_and_registration_type?(current_user, model) %>
|
3
3
|
<% if allowed? %>
|
4
|
-
<%= button_to
|
4
|
+
<%= button_to conference_registration_type_conference_registration_path(conference, model),
|
5
5
|
method: :delete,
|
6
6
|
class: "#{button_classes} secondary light",
|
7
|
+
style: "margin-bottom: 0;",
|
7
8
|
data: { disable: true } do %>
|
8
9
|
<%= icon("check", class: "icon--small") %>
|
9
10
|
<%= t("going", scope: "decidim.conferences.conference.show") %>
|
@@ -14,12 +15,10 @@
|
|
14
15
|
<% if allowed? %>
|
15
16
|
<%= button_to i18n_join_text, "",
|
16
17
|
class: button_classes,
|
17
|
-
disabled: !
|
18
|
+
disabled: !conference.has_available_slots? || conference.has_registration_for?(current_user),
|
19
|
+
style: "margin-bottom: 0;",
|
18
20
|
onclick: "event.preventDefault()",
|
19
21
|
data: { open: current_user.present? ? "conference-registration-confirm-#{model.id}" : "loginModal" } %>
|
20
22
|
<% end %>
|
21
23
|
<% end %>
|
22
|
-
<% if shows_remaining_slots? %>
|
23
|
-
<span><%= t("remaining_slots", scope: "decidim.conferences.conference.show", count: model.remaining_slots) %></span>
|
24
|
-
<% end %>
|
25
24
|
<% end %>
|
@@ -1,12 +1,12 @@
|
|
1
1
|
<div class="reveal" data-reveal id="conference-registration-confirm-<%= model.id %>">
|
2
2
|
<div class="row">
|
3
3
|
<div class="columns medium-10 medium-offset-1 help-text">
|
4
|
-
<%= decidim_sanitize translated_attribute(
|
4
|
+
<%= decidim_sanitize translated_attribute(conference.registration_terms) %>
|
5
5
|
</div>
|
6
6
|
</div>
|
7
7
|
<div class="row">
|
8
8
|
<div class="columns medium-8 medium-offset-2">
|
9
|
-
<%= button_to t("confirm", scope: "decidim.conferences.conference.registration_confirm"),
|
9
|
+
<%= button_to t("confirm", scope: "decidim.conferences.conference.registration_confirm"), conference_registration_type_conference_registration_path(conference, model), class: "button expanded", data: { disable: true } %>
|
10
10
|
</div>
|
11
11
|
</div>
|
12
12
|
<div class="text-center">
|
@@ -0,0 +1,16 @@
|
|
1
|
+
<div class="conference-registration card__block" id="registration-type-<%= model.id %>">
|
2
|
+
<div class="row flex--cc">
|
3
|
+
<div class="columns medium-8">
|
4
|
+
<div class="registration__text">
|
5
|
+
<strong><%= title %></strong>
|
6
|
+
<span> <%= description %></span>
|
7
|
+
</div>
|
8
|
+
</div>
|
9
|
+
<div class="columns medium-4">
|
10
|
+
<div class="registration__buttons">
|
11
|
+
<button type="button" class="small-5 small"><strong><%= price %></strong></button>
|
12
|
+
<%= render :join_conference %>
|
13
|
+
</div>
|
14
|
+
</div>
|
15
|
+
</div>
|
16
|
+
</div>
|
@@ -0,0 +1,51 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module Conferences
|
5
|
+
# This cell renders the media link card for an instance of a RegistrationType
|
6
|
+
class RegistrationTypeCell < Decidim::ViewModel
|
7
|
+
include ActionView::Helpers::NumberHelper
|
8
|
+
include Decidim::SanitizeHelper
|
9
|
+
include Decidim::Conferences::Engine.routes.url_helpers
|
10
|
+
include Decidim::LayoutHelper
|
11
|
+
|
12
|
+
def show
|
13
|
+
render
|
14
|
+
end
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
delegate :current_user, to: :controller, prefix: false
|
19
|
+
|
20
|
+
def title
|
21
|
+
translated_attribute model.title
|
22
|
+
end
|
23
|
+
|
24
|
+
def description
|
25
|
+
translated_attribute model.description
|
26
|
+
end
|
27
|
+
|
28
|
+
def price
|
29
|
+
return I18n.t("free", scope: "decidim.conferences.conference.show") if model.price.blank?
|
30
|
+
number_to_currency(model.price, locale: I18n.locale, unit: Decidim.currency_unit)
|
31
|
+
end
|
32
|
+
|
33
|
+
def allowed?
|
34
|
+
options[:allowed]
|
35
|
+
end
|
36
|
+
|
37
|
+
def button_classes
|
38
|
+
"button button--sc small"
|
39
|
+
end
|
40
|
+
|
41
|
+
def conference
|
42
|
+
model.conference
|
43
|
+
end
|
44
|
+
|
45
|
+
def i18n_join_text
|
46
|
+
return I18n.t("registration", scope: "decidim.conferences.conference.show") if conference.has_available_slots?
|
47
|
+
I18n.t("no_slots_available", scope: "decidim.conferences.conference.show")
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,75 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module Conferences
|
5
|
+
module Admin
|
6
|
+
# This command is executed when the user joins a conference.
|
7
|
+
class ConfirmConferenceRegistration < Rectify::Command
|
8
|
+
# Initializes a JoinConference Command.
|
9
|
+
#
|
10
|
+
# conference_registration - The registration to be confirmed
|
11
|
+
def initialize(conference_registration, current_user)
|
12
|
+
@conference_registration = conference_registration
|
13
|
+
@current_user = current_user
|
14
|
+
end
|
15
|
+
|
16
|
+
# Creates a conference registration if the conference has registrations enabled
|
17
|
+
# and there are available slots.
|
18
|
+
#
|
19
|
+
# Broadcasts :ok if successful, :invalid otherwise.
|
20
|
+
def call
|
21
|
+
@conference_registration.with_lock do
|
22
|
+
return broadcast(:invalid) unless can_join_conference?
|
23
|
+
confirm_registration
|
24
|
+
send_email_confirmation
|
25
|
+
send_notification_confirmation
|
26
|
+
end
|
27
|
+
broadcast(:ok)
|
28
|
+
end
|
29
|
+
|
30
|
+
private
|
31
|
+
|
32
|
+
attr_reader :conference, :user
|
33
|
+
|
34
|
+
def confirm_registration
|
35
|
+
extra_info = {
|
36
|
+
resource: {
|
37
|
+
title: @conference_registration.conference.title
|
38
|
+
}
|
39
|
+
}
|
40
|
+
|
41
|
+
Decidim.traceability.perform_action!(
|
42
|
+
"confirm",
|
43
|
+
@conference_registration,
|
44
|
+
@current_user,
|
45
|
+
extra_info
|
46
|
+
) do
|
47
|
+
@conference_registration.update!(confirmed_at: Time.current)
|
48
|
+
@conference_registration
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
def can_join_conference?
|
53
|
+
@conference_registration.conference.registrations_enabled? && @conference_registration.conference.has_available_slots?
|
54
|
+
end
|
55
|
+
|
56
|
+
def send_email_confirmation
|
57
|
+
Decidim::Conferences::ConferenceRegistrationMailer.confirmation(
|
58
|
+
@conference_registration.user,
|
59
|
+
@conference_registration.conference,
|
60
|
+
@conference_registration.registration_type
|
61
|
+
).deliver_later
|
62
|
+
end
|
63
|
+
|
64
|
+
def send_notification_confirmation
|
65
|
+
Decidim::EventsManager.publish(
|
66
|
+
event: "decidim.events.conferences.conference_registration_confirmed",
|
67
|
+
event_class: Decidim::Conferences::ConferenceRegistrationNotificationEvent,
|
68
|
+
resource: @conference_registration.conference,
|
69
|
+
affected_users: [@conference_registration.user]
|
70
|
+
)
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
@@ -86,7 +86,7 @@ module Decidim
|
|
86
86
|
event: "decidim.events.conferences.registrations_enabled",
|
87
87
|
event_class: Decidim::Conferences::ConferenceRegistrationsEnabledEvent,
|
88
88
|
resource: conference,
|
89
|
-
|
89
|
+
followers: conference.followers
|
90
90
|
)
|
91
91
|
end
|
92
92
|
|
@@ -0,0 +1,77 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module Conferences
|
5
|
+
module Admin
|
6
|
+
# A command with all the business logic when creating a new registration type
|
7
|
+
# in the system.
|
8
|
+
class CreateRegistrationType < Rectify::Command
|
9
|
+
# Public: Initializes the command.
|
10
|
+
#
|
11
|
+
# form - A form object with the params.
|
12
|
+
# current_user - The current user hwo do the action of create
|
13
|
+
# conference - The Conference that will hold the speaker
|
14
|
+
def initialize(form, current_user, conference)
|
15
|
+
@form = form
|
16
|
+
@current_user = current_user
|
17
|
+
@conference = conference
|
18
|
+
end
|
19
|
+
|
20
|
+
# Executes the command. Broadcasts these events:
|
21
|
+
#
|
22
|
+
# - :ok when everything is valid.
|
23
|
+
# - :invalid if the form wasn't valid and we couldn't proceed.
|
24
|
+
#
|
25
|
+
# Returns nothing.
|
26
|
+
def call
|
27
|
+
return broadcast(:invalid) if form.invalid?
|
28
|
+
|
29
|
+
transaction do
|
30
|
+
create_registration_type!
|
31
|
+
link_meetings(@registration_type)
|
32
|
+
end
|
33
|
+
|
34
|
+
broadcast(:ok)
|
35
|
+
end
|
36
|
+
|
37
|
+
private
|
38
|
+
|
39
|
+
attr_reader :form, :conference, :current_user
|
40
|
+
|
41
|
+
def create_registration_type!
|
42
|
+
log_info = {
|
43
|
+
resource: {
|
44
|
+
title: form.title
|
45
|
+
},
|
46
|
+
participatory_space: {
|
47
|
+
title: conference.title
|
48
|
+
}
|
49
|
+
}
|
50
|
+
|
51
|
+
@registration_type = Decidim.traceability.create!(
|
52
|
+
Decidim::Conferences::RegistrationType,
|
53
|
+
form.current_user,
|
54
|
+
form.attributes.slice(
|
55
|
+
:title,
|
56
|
+
:description,
|
57
|
+
:price,
|
58
|
+
:weight
|
59
|
+
).merge(
|
60
|
+
conference: conference
|
61
|
+
),
|
62
|
+
log_info
|
63
|
+
)
|
64
|
+
end
|
65
|
+
|
66
|
+
def conference_meetings(registration_type)
|
67
|
+
meeting_components = registration_type.conference.components.where(manifest_name: "meetings")
|
68
|
+
Decidim::ConferenceMeeting.where(component: meeting_components).where(id: @form.attributes[:conference_meeting_ids])
|
69
|
+
end
|
70
|
+
|
71
|
+
def link_meetings(registration_type)
|
72
|
+
registration_type.conference_meetings = conference_meetings(registration_type)
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module Conferences
|
5
|
+
module Admin
|
6
|
+
# A command with all the business logic when destroying a conference
|
7
|
+
# registration type in the system.
|
8
|
+
class DestroyRegistrationType < Rectify::Command
|
9
|
+
# Public: Initializes the command.
|
10
|
+
#
|
11
|
+
# registration_type - the Partner to destroy
|
12
|
+
# current_user - the user performing this action
|
13
|
+
def initialize(registration_type, current_user)
|
14
|
+
@registration_type = registration_type
|
15
|
+
@current_user = current_user
|
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
|
+
destroy_registration_type!
|
26
|
+
broadcast(:ok)
|
27
|
+
end
|
28
|
+
|
29
|
+
private
|
30
|
+
|
31
|
+
attr_reader :registration_type, :current_user
|
32
|
+
|
33
|
+
def destroy_registration_type!
|
34
|
+
log_info = {
|
35
|
+
resource: {
|
36
|
+
title: registration_type.title
|
37
|
+
},
|
38
|
+
participatory_space: {
|
39
|
+
title: registration_type.conference.title
|
40
|
+
}
|
41
|
+
}
|
42
|
+
|
43
|
+
Decidim.traceability.perform_action!(
|
44
|
+
"delete",
|
45
|
+
registration_type,
|
46
|
+
current_user,
|
47
|
+
log_info
|
48
|
+
) do
|
49
|
+
registration_type.destroy!
|
50
|
+
registration_type
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
@@ -59,6 +59,7 @@ module Decidim
|
|
59
59
|
{
|
60
60
|
user: user,
|
61
61
|
conference: conference,
|
62
|
+
registration_type: form.registration_type,
|
62
63
|
sent_at: Time.current
|
63
64
|
},
|
64
65
|
log_info
|
@@ -74,11 +75,11 @@ module Decidim
|
|
74
75
|
if user.invited_to_sign_up?
|
75
76
|
invite_user_to_sign_up
|
76
77
|
else
|
77
|
-
InviteJoinConferenceMailer.invite(user, conference, invited_by).deliver_later
|
78
|
+
InviteJoinConferenceMailer.invite(user, conference, form.registration_type, invited_by).deliver_later
|
78
79
|
end
|
79
80
|
else
|
80
81
|
user.name = form.name
|
81
|
-
user.nickname =
|
82
|
+
user.nickname = UserBaseEntity.nicknamize(user.name, organization: user.organization)
|
82
83
|
invite_user_to_sign_up
|
83
84
|
create_invitation!
|
84
85
|
end
|
@@ -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 published from the admin panel.
|
7
|
+
class PublishRegistrationType < Rectify::Command
|
8
|
+
# Public: Initializes the command.
|
9
|
+
#
|
10
|
+
# registration_type - The registration_type to publish.
|
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: Publishes the Component.
|
18
|
+
#
|
19
|
+
# Broadcasts :ok if published, :invalid otherwise.
|
20
|
+
def call
|
21
|
+
return broadcast(:invalid) if registration_type.nil? || registration_type.published?
|
22
|
+
|
23
|
+
Decidim.traceability.perform_action!(:publish, registration_type, current_user) do
|
24
|
+
registration_type.publish!
|
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
|
@@ -0,0 +1,48 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module Conferences
|
5
|
+
module Admin
|
6
|
+
# A command with all the business logic to send diplomas to registered conference users.
|
7
|
+
#
|
8
|
+
class SendConferenceDiplomas < Rectify::Command
|
9
|
+
# Public: Initializes the command.
|
10
|
+
#
|
11
|
+
# conference - The conference which the user is invited to.
|
12
|
+
def initialize(conference, current_user)
|
13
|
+
@conference = conference
|
14
|
+
@current_user = current_user
|
15
|
+
end
|
16
|
+
|
17
|
+
# Executes the command. Broadcasts these events:
|
18
|
+
#
|
19
|
+
# - :ok when everything is valid.
|
20
|
+
# - :invalid if the form wasn't valid and we couldn't proceed.
|
21
|
+
#
|
22
|
+
# Returns nothing.
|
23
|
+
def call
|
24
|
+
return broadcast(:invalid) if conference.diploma_sent?
|
25
|
+
|
26
|
+
send_diplomas
|
27
|
+
broadcast(:ok)
|
28
|
+
end
|
29
|
+
|
30
|
+
private
|
31
|
+
|
32
|
+
attr_reader :current_user, :conference
|
33
|
+
|
34
|
+
def send_diplomas
|
35
|
+
Decidim.traceability.perform_action!(
|
36
|
+
:send_conference_diplomas,
|
37
|
+
conference,
|
38
|
+
current_user
|
39
|
+
) do
|
40
|
+
SendConferenceDiplomaJob.perform_later(conference)
|
41
|
+
conference.diploma_sent_at = Time.current
|
42
|
+
conference.save!
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|