Compare commits
2 Commits
dccad36474
...
d6bd26c76f
Author | SHA1 | Date | |
---|---|---|---|
d6bd26c76f | |||
dcc6d1a991 |
Binary file not shown.
Before Width: | Height: | Size: 13 KiB |
@ -15,13 +15,10 @@ main {
|
||||
|
||||
.banner {
|
||||
width: 100%;
|
||||
height: 30px;
|
||||
padding: 15px;
|
||||
background-image: url(logo.svg);
|
||||
background-size: auto 30px;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
background-color: #041952;
|
||||
}
|
||||
|
||||
footer {
|
||||
|
@ -28,6 +28,7 @@ class MembersController < ApplicationController
|
||||
@member = Member.new(member_params.merge(number: (Member.maximum(:number) || 0) + 1))
|
||||
|
||||
if @member.save
|
||||
@member.generate_missing_ifthenpay_links!
|
||||
@member.reset_status!
|
||||
NotificationMailer.with(member: @member).registration.deliver_now!
|
||||
|
||||
|
@ -1,34 +1,9 @@
|
||||
module Config
|
||||
def self.organization_full_name
|
||||
"ANSOL - Associação Nacional para o Software Livre"
|
||||
class <<self
|
||||
if ENV.fetch("BRANDING") == "d3"
|
||||
include Config::D3
|
||||
else
|
||||
include Config::Ansol
|
||||
end
|
||||
|
||||
def self.organization_website
|
||||
"https://ansol.org"
|
||||
end
|
||||
|
||||
def self.regular_payment_value
|
||||
30
|
||||
end
|
||||
|
||||
def self.reduced_payment_value
|
||||
6
|
||||
end
|
||||
|
||||
def self.ifthenpay_payment_title
|
||||
"Quotas ANSOL"
|
||||
end
|
||||
|
||||
def self.payment_iban
|
||||
"PT50 0035 2178 00027478430 14"
|
||||
end
|
||||
|
||||
def self.payment_proof_email
|
||||
"direccao@ansol.org"
|
||||
end
|
||||
|
||||
def self.reduced_payment_description
|
||||
"Caso queiras usufruir da quota reduzida de 6.00€ para estudantes, pessoas
|
||||
desempregadas ou reformadas, envia-nos um comprovativo desse estatuto."
|
||||
end
|
||||
end
|
||||
|
60
app/lib/config/ansol.rb
Normal file
60
app/lib/config/ansol.rb
Normal file
@ -0,0 +1,60 @@
|
||||
module Config
|
||||
module Ansol
|
||||
def organization_short_name
|
||||
"ANSOL"
|
||||
end
|
||||
|
||||
def organization_full_name
|
||||
"ANSOL - Associação Nacional para o Software Livre"
|
||||
end
|
||||
|
||||
def organization_website
|
||||
"https://ansol.org"
|
||||
end
|
||||
|
||||
def regular_payment_value
|
||||
30
|
||||
end
|
||||
|
||||
def reduced_payment_value
|
||||
6
|
||||
end
|
||||
|
||||
def full_rights_vesting_period
|
||||
6.months
|
||||
end
|
||||
|
||||
def payment_pending_grace_period
|
||||
90.days
|
||||
end
|
||||
|
||||
def ifthenpay_payment_title
|
||||
"Quotas ANSOL"
|
||||
end
|
||||
|
||||
def payment_iban
|
||||
"PT50 0035 2178 00027478430 14"
|
||||
end
|
||||
|
||||
def payment_proof_email
|
||||
"direccao@ansol.org"
|
||||
end
|
||||
|
||||
def reduced_payment_description
|
||||
"Caso queiras usufruir da quota reduzida de 6.00€ para estudantes, pessoas
|
||||
desempregadas ou reformadas, envia-nos um comprovativo desse estatuto."
|
||||
end
|
||||
|
||||
def header_color
|
||||
"white"
|
||||
end
|
||||
|
||||
def header_background_color
|
||||
"#041952"
|
||||
end
|
||||
|
||||
def organization_logo_url
|
||||
"https://#{ENV['BASE_HOST']}/logo.png"
|
||||
end
|
||||
end
|
||||
end
|
60
app/lib/config/d3.rb
Normal file
60
app/lib/config/d3.rb
Normal file
@ -0,0 +1,60 @@
|
||||
module Config
|
||||
module D3
|
||||
def organization_short_name
|
||||
"D3"
|
||||
end
|
||||
|
||||
def organization_full_name
|
||||
"Associação D3 - Defesa dos Direitos Digitais"
|
||||
end
|
||||
|
||||
def organization_website
|
||||
"https://direitosdigitais.pt"
|
||||
end
|
||||
|
||||
def regular_payment_value
|
||||
32
|
||||
end
|
||||
|
||||
def reduced_payment_value
|
||||
16
|
||||
end
|
||||
|
||||
def full_rights_vesting_period
|
||||
1.year
|
||||
end
|
||||
|
||||
def payment_pending_grace_period
|
||||
120.days
|
||||
end
|
||||
|
||||
def ifthenpay_payment_title
|
||||
"Quotas D3"
|
||||
end
|
||||
|
||||
def payment_iban
|
||||
"PT50 0033 0000 45508899562 05"
|
||||
end
|
||||
|
||||
def payment_proof_email
|
||||
"direccao@direitosdigitais.pt"
|
||||
end
|
||||
|
||||
def reduced_payment_description
|
||||
"Caso queiras usufruir da quota reduzida de 6.00€ para estudantes, pessoas
|
||||
desempregadas ou reformadas, envia-nos um comprovativo desse estatuto."
|
||||
end
|
||||
|
||||
def header_color
|
||||
"#60f163"
|
||||
end
|
||||
|
||||
def header_background_color
|
||||
"#424242"
|
||||
end
|
||||
|
||||
def organization_logo_url
|
||||
"https://direitosdigitais.pt/templates/g5_hydrogen/custom/images/d3/d3-logo/logo-d3-transparente.png"
|
||||
end
|
||||
end
|
||||
end
|
@ -1,58 +1,70 @@
|
||||
class NotificationMailer < ApplicationMailer
|
||||
# Subject can be set in your I18n file at config/locales/en.yml
|
||||
# with the following lookup:
|
||||
#
|
||||
# en.notification_mailer.expiration_in_60d.subject
|
||||
#
|
||||
default to: ->() { @member.email }
|
||||
|
||||
def expiration_in_60d
|
||||
set_notification
|
||||
mail to: @notification.member.email
|
||||
mail
|
||||
end
|
||||
|
||||
def expiration_in_30d
|
||||
set_notification
|
||||
mail to: @notification.member.email
|
||||
mail
|
||||
end
|
||||
|
||||
def expired
|
||||
set_notification
|
||||
mail to: @notification.member.email
|
||||
mail
|
||||
end
|
||||
|
||||
def expired_30d_ago
|
||||
set_notification
|
||||
mail to: @notification.member.email
|
||||
mail
|
||||
end
|
||||
|
||||
def expired_60d_ago
|
||||
set_notification
|
||||
mail to: @notification.member.email
|
||||
mail
|
||||
end
|
||||
|
||||
def cancelled
|
||||
set_notification
|
||||
mail to: @notification.member.email
|
||||
mail
|
||||
end
|
||||
|
||||
def registration
|
||||
@member = params[:member]
|
||||
@payment = @member.create_payment
|
||||
mail to: @member.email
|
||||
set_member
|
||||
mail
|
||||
end
|
||||
|
||||
def first_payment_confirmation
|
||||
@contribution = params[:contribution]
|
||||
mail to: @contribution.member.email
|
||||
set_contribution
|
||||
mail
|
||||
end
|
||||
|
||||
def payment_renewal_confirmation
|
||||
@contribution = params[:contribution]
|
||||
mail to: @contribution.member.email
|
||||
set_contribution
|
||||
mail
|
||||
end
|
||||
|
||||
private
|
||||
def set_notification
|
||||
@notification = params[:notification]
|
||||
@member = @notification.member
|
||||
@payment = @notification.member.create_payment
|
||||
end
|
||||
|
||||
def set_contribution
|
||||
@contribution = params[:contribution]
|
||||
@member = @contribution.member
|
||||
end
|
||||
|
||||
def set_member
|
||||
@member = params[:member]
|
||||
@payment = @member.create_payment
|
||||
end
|
||||
|
||||
def default_i18n_subject
|
||||
mailer_scope = self.class.mailer_name.tr("/", ".")
|
||||
I18n.t(:subject, scope: [mailer_scope, action_name], organization_short_name: Config.organization_short_name)
|
||||
end
|
||||
end
|
||||
|
@ -14,11 +14,11 @@ class Member < ApplicationRecord
|
||||
end
|
||||
|
||||
def cancelled_on
|
||||
expires_on + 90.days
|
||||
expires_on + Config.payment_pending_grace_period
|
||||
end
|
||||
|
||||
def obtains_full_rights_on
|
||||
joined_on + 6.months
|
||||
joined_on + Config.full_rights_vesting_period
|
||||
end
|
||||
|
||||
def reset_status!
|
||||
@ -26,6 +26,7 @@ class Member < ApplicationRecord
|
||||
end
|
||||
|
||||
def employed?
|
||||
# normal is deprecated, here for retrocompatibility reasons
|
||||
category == "normal" || category == "employed"
|
||||
end
|
||||
|
||||
@ -111,7 +112,7 @@ class Member < ApplicationRecord
|
||||
{ to_be_sent_on: expires_on + 0.days, template: "expired" },
|
||||
{ to_be_sent_on: expires_on + 30.days, template: "expired_30d_ago" },
|
||||
{ to_be_sent_on: expires_on + 60.days, template: "expired_60d_ago" },
|
||||
{ to_be_sent_on: expires_on + 90.days, template: "cancelled" },
|
||||
{ to_be_sent_on: expires_on + Config.payment_pending_grace_period, template: "cancelled" },
|
||||
].reject do |n|
|
||||
n[:to_be_sent_on].before?(from) || dates.include?(n[:to_be_sent_on])
|
||||
end.each do |n|
|
||||
|
@ -11,7 +11,9 @@
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class='banner'></div>
|
||||
<div class='banner' style="background-color: <%= Config.header_background_color %>;">
|
||||
<img src="<%= Config.organization_logo_url %>" style="margin: 0px auto; max-width: 400px; display: block; color: <%= Config.header_color %>" alt="<%= Config.organization_full_name %>" />
|
||||
</div>
|
||||
<% if signed_in? %>
|
||||
<nav>
|
||||
<ul>
|
||||
|
@ -9,8 +9,8 @@
|
||||
|
||||
<body>
|
||||
<div style="max-width: 600px;">
|
||||
<div style="background-color: #041952; padding: 20px">
|
||||
<img src="<%= image_url("ansol-logo-white.png") %>" style="margin: 0px auto; max-width: 400px; display: block; color: white" alt="ANSOL" />
|
||||
<div style="background-color: <%= Config.header_background_color %>; padding: 20px; text-align: center;">
|
||||
<img src="<%= Config.organization_logo_url %>" style="margin: 0px auto; max-width: 400px; display: block; color: <%= Config.header_color %>" alt="<%= Config.organization_full_name %>" />
|
||||
</div>
|
||||
|
||||
<%= yield %>
|
||||
|
@ -1,4 +1,4 @@
|
||||
<p>
|
||||
Saudações livres,<br>
|
||||
Direcção da ANSOL
|
||||
Direcção da <%= Config.organization_short_name %>
|
||||
</p>
|
||||
|
@ -1,2 +1,2 @@
|
||||
Saudações livres,
|
||||
Direcção da ANSOL
|
||||
Direcção da <%= Config.organization_short_name %>
|
||||
|
3
app/views/notification_mailer/_greetings.html.erb
Normal file
3
app/views/notification_mailer/_greetings.html.erb
Normal file
@ -0,0 +1,3 @@
|
||||
<p>
|
||||
<%= t('notification_mailer.greetings', display_name: member.display_name) %>
|
||||
</p>
|
1
app/views/notification_mailer/_greetings.text.erb
Normal file
1
app/views/notification_mailer/_greetings.text.erb
Normal file
@ -0,0 +1 @@
|
||||
<%= t('notification_mailer.greetings', display_name: member.display_name) %>
|
@ -1,10 +1,8 @@
|
||||
<p>
|
||||
<%= t('notification_mailer.greetings', display_name: @notification.member.display_name) %>
|
||||
</p>
|
||||
<%= render partial: "greetings", locals: { member: @member } %>
|
||||
|
||||
<p>
|
||||
Como não recebemos o pagamento anual das quotas da ANSOL, a tua inscrição foi
|
||||
cancelada.
|
||||
Como não recebemos o pagamento anual das quotas da <%= Config.organization_short_name %>,
|
||||
a tua inscrição foi cancelada.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
@ -24,7 +22,4 @@
|
||||
rápido possível.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Saudações livres,<br>
|
||||
Direcção da ANSOL
|
||||
</p>
|
||||
<%= render partial: "cheers" %>
|
||||
|
@ -1,7 +1,7 @@
|
||||
<%= t('notification_mailer.greetings', display_name: @notification.member.display_name) %>
|
||||
<%= render partial: "greetings", locals: { member: @member } %>
|
||||
|
||||
Como não recebemos o pagamento anual das quotas da ANSOL, a tua inscrição foi
|
||||
cancelada.
|
||||
Como não recebemos o pagamento anual das quotas da <%= Config.organization_short_name %>,
|
||||
a tua inscrição foi cancelada.
|
||||
|
||||
Vamos revogar em breve os teus acessos à infraestrutura da associação exclusiva
|
||||
para membros (nextcloud, mailing list, sala de Matrix, etc).
|
||||
@ -13,5 +13,4 @@ Caso consideres que estás a receber esta mensagem indevidamente, contacta-nos
|
||||
através do endereço direccao@ansol.org para resolvermos a situação o mais
|
||||
rápido possível.
|
||||
|
||||
Saudações livres,
|
||||
Direcção da ANSOL
|
||||
<%= render partial: "cheers" %>
|
||||
|
@ -1,4 +1,4 @@
|
||||
<p><%= t('notification_mailer.greetings', display_name: @notification.member.display_name) %></p>
|
||||
<%= render partial: "greetings", locals: { member: @member } %>
|
||||
|
||||
<p>
|
||||
A tua inscrição como membro da ANSOL expira em 30 dias.
|
||||
|
@ -1,4 +1,4 @@
|
||||
<%= t('notification_mailer.greetings', display_name: @notification.member.display_name) %>
|
||||
<%= render partial: "greetings", locals: { member: @member } %>
|
||||
|
||||
A tua inscrição como membro da ANSOL expira em 30 dias.
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
<p><%= t('notification_mailer.greetings', display_name: @notification.member.display_name) %></p>
|
||||
<%= render partial: "greetings", locals: { member: @member } %>
|
||||
|
||||
<p>
|
||||
A tua inscrição como membro da ANSOL expira em 60 dias.
|
||||
|
@ -1,4 +1,4 @@
|
||||
<%= t('notification_mailer.greetings', display_name: @notification.member.display_name) %>
|
||||
<%= render partial: "greetings", locals: { member: @member } %>
|
||||
|
||||
A tua inscrição como membro da ANSOL expira em 60 dias.
|
||||
|
||||
|
@ -1,6 +1,4 @@
|
||||
<p>
|
||||
<%= t('notification_mailer.greetings', display_name: @notification.member.display_name) %>
|
||||
</p>
|
||||
<%= render partial: "greetings", locals: { member: @member } %>
|
||||
|
||||
<p>
|
||||
A tua inscrição como membro da ANSOL vai ser cancelada dentro de 30 dias por
|
||||
|
@ -1,4 +1,4 @@
|
||||
<%= t('notification_mailer.greetings', display_name: @notification.member.display_name) %>
|
||||
<%= render partial: "greetings", locals: { member: @member } %>
|
||||
|
||||
A tua inscrição como membro da ANSOL expirou hoje e não recebemos a tua
|
||||
contribuição anual.
|
||||
|
@ -1,6 +1,4 @@
|
||||
<p>
|
||||
<%= t('notification_mailer.greetings', display_name: @notification.member.display_name) %>
|
||||
</p>
|
||||
<%= render partial: "greetings", locals: { member: @member } %>
|
||||
|
||||
<p>
|
||||
A tua inscrição como membro da ANSOL expirou há um mês e ainda não recebemos
|
||||
|
@ -1,4 +1,4 @@
|
||||
<%= t('notification_mailer.greetings', display_name: @notification.member.display_name) %>
|
||||
<%= render partial: "greetings", locals: { member: @member } %>
|
||||
|
||||
A tua inscrição como membro da ANSOL expirou há um mês e ainda não recebemos
|
||||
a tua contribuição anual.
|
||||
|
@ -1,6 +1,4 @@
|
||||
<p>
|
||||
<%= t('notification_mailer.greetings', display_name: @notification.member.display_name) %>
|
||||
</p>
|
||||
<%= render partial: "greetings", locals: { member: @member } %>
|
||||
|
||||
<p>
|
||||
A tua inscrição como membro da ANSOL vai ser cancelada dentro de 30 dias por
|
||||
|
@ -1,4 +1,4 @@
|
||||
<%= t('notification_mailer.greetings', display_name: @notification.member.display_name) %>
|
||||
<%= render partial: "greetings", locals: { member: @member } %>
|
||||
|
||||
A tua inscrição como membro da ANSOL expirou há 60 dias e ainda não recebemos
|
||||
a tua contribuição anual.
|
||||
|
@ -1,4 +1,4 @@
|
||||
<p><%= t('notification_mailer.greetings', display_name: @contribution.member.display_name) %></p>
|
||||
<%= render partial: "greetings", locals: { member: @member } %>
|
||||
|
||||
<p>
|
||||
Bem-vinde à ANSOL! Confirmamos que recebemos o teu pagamento, e tua inscrição
|
||||
|
@ -1,4 +1,4 @@
|
||||
<%= t('notification_mailer.greetings', display_name: @contribution.member.display_name) %>
|
||||
<%= render partial: "greetings", locals: { member: @member } %>
|
||||
|
||||
Bem-vinde à ANSOL! Confirmamos que recebemos o teu pagamento, e tua inscrição
|
||||
está válida até <%= @contribution.member.expires_on %>.
|
||||
|
@ -1,4 +1,4 @@
|
||||
<p><%= t('notification_mailer.greetings', display_name: @contribution.member.display_name) %></p>
|
||||
<%= render partial: "greetings", locals: { member: @member } %>
|
||||
|
||||
<p>
|
||||
Recebemos o teu pagamento. Obrigado por continuares a apoiar a ANSOL. A tua
|
||||
|
@ -1,4 +1,4 @@
|
||||
<%= t('notification_mailer.greetings', display_name: @contribution.member.display_name) %>
|
||||
<%= render partial: "greetings", locals: { member: @member } %>
|
||||
|
||||
Recebemos o teu pagamento. Obrigado por continuares a apoiar a ANSOL. A tua
|
||||
inscrição foi renovada e está válida até <%= @contribution.member.expires_on %>.
|
||||
|
@ -1,4 +1,4 @@
|
||||
<p><%= t('notification_mailer.greetings', display_name: @member.display_name) %></p>
|
||||
<%= render partial: "greetings", locals: { member: @member } %>
|
||||
|
||||
<p>
|
||||
Obrigado pelo interesse em fazer parte da ANSOL. A tua candidatura foi
|
||||
|
@ -1,4 +1,4 @@
|
||||
<%= t('notification_mailer.greetings', display_name: @member.display_name) %>
|
||||
<%= render partial: "greetings", locals: { member: @member } %>
|
||||
|
||||
Obrigado pelo interesse em fazer parte da ANSOL. A tua candidatura foi aprovada
|
||||
pela direcção.
|
||||
|
@ -1,4 +1,7 @@
|
||||
en:
|
||||
option:
|
||||
positive: Yes
|
||||
negative: No
|
||||
navigation:
|
||||
members: "Member list"
|
||||
board: "Board"
|
||||
@ -68,21 +71,21 @@ en:
|
||||
notification_mailer:
|
||||
payment_cta: "Pay now"
|
||||
expiration_in_60d:
|
||||
subject: "ANSOL - Pagamento anual de quotas"
|
||||
title: "Pagamento anual de quotas"
|
||||
subject: "%{organization_short_name} - Yearly membership renewal"
|
||||
expiration_in_30d:
|
||||
subject: "ANSOL - Prazo para pagamento de quotas vence em 30 dias"
|
||||
subject: "%{organization_short_name} - Your membership expires in 30 days"
|
||||
expired:
|
||||
subject: "ANSOL - Pagamento de quotas pendente"
|
||||
subject: "%{organization_short_name} - Membership payment pending"
|
||||
expired_30d_ago:
|
||||
subject: "ANSOL - Pagamento de quotas em atraso"
|
||||
subject: "%{organization_short_name} - Membership payment expired"
|
||||
expired_60d_ago:
|
||||
subject: "ANSOL - Suspensão de inscrição iminente"
|
||||
subject: "%{organization_short_name} - Your membership is about to be suspended"
|
||||
first_payment_confirmation:
|
||||
subject: "ANSOL - Payment received: Welcome!"
|
||||
subject: "%{organization_short_name} - Payment received: Welcome!"
|
||||
payment_renewal_confirmation:
|
||||
subject: "ANSOL - Payment received"
|
||||
subject: "%{organization_short_name} - Payment received"
|
||||
registration:
|
||||
subject: "ANSOL - Registration approved: Payment required"
|
||||
subject: "%{organization_short_name} - Registration approved: Payment required"
|
||||
cancelled:
|
||||
subject: "ANSOL - Inscrição cancelada"
|
||||
subject: "%{organization_short_name} - Membership suspended"
|
||||
greetings: "Dear %{display_name}"
|
||||
|
@ -105,23 +105,23 @@ pt:
|
||||
notification_mailer:
|
||||
payment_cta: "Pagar quotas"
|
||||
expiration_in_60d:
|
||||
subject: "ANSOL - Pagamento anual de quotas"
|
||||
subject: "%{organization_short_name} - Pagamento anual de quotas"
|
||||
expiration_in_30d:
|
||||
subject: "ANSOL - Inscrição expira em 30 dias"
|
||||
subject: "%{organization_short_name} - Inscrição expira em 30 dias"
|
||||
expired:
|
||||
subject: "ANSOL - Pagamento de quotas pendente"
|
||||
subject: "%{organization_short_name} - Pagamento de quotas pendente"
|
||||
expired_30d_ago:
|
||||
subject: "ANSOL - Pagamento de quotas em atraso"
|
||||
subject: "%{organization_short_name} - Pagamento de quotas em atraso"
|
||||
expired_60d_ago:
|
||||
subject: "ANSOL - Suspensão de inscrição iminente"
|
||||
subject: "%{organization_short_name} - Suspensão de inscrição iminente"
|
||||
first_payment_confirmation:
|
||||
subject: "ANSOL - Pagamento recebido: Mensagem de boas vindas"
|
||||
subject: "%{organization_short_name} - Pagamento recebido: Mensagem de boas vindas"
|
||||
payment_renewal_confirmation:
|
||||
subject: "ANSOL - Pagamento de quotas recebido"
|
||||
subject: "%{organization_short_name} - Pagamento de quotas recebido"
|
||||
registration:
|
||||
subject: "ANSOL - Inscrição aprovada: Pagamento inicial de quotas"
|
||||
subject: "%{organization_short_name} - Inscrição aprovada: Pagamento inicial de quotas"
|
||||
cancelled:
|
||||
subject: "ANSOL - Inscrição cancelada"
|
||||
subject: "%{organization_short_name} - Inscrição cancelada"
|
||||
greetings: "Car(a/o/e) %{display_name}"
|
||||
sessions:
|
||||
new:
|
||||
|
BIN
public/logo.png
Normal file
BIN
public/logo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 5.1 KiB |
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 2.0 KiB |
Loading…
Reference in New Issue
Block a user