From 72d88e25ff62589ae177dcf72e9e2532f1e4f57c Mon Sep 17 00:00:00 2001 From: Hugo Peixoto Date: Sun, 26 Jun 2022 10:44:30 +0100 Subject: [PATCH] Add member preferences --- app/controllers/members_controller.rb | 2 +- app/helpers/application_helper.rb | 8 ++++++++ app/views/members/edit.html.erb | 8 ++++++++ app/views/members/new.html.erb | 2 ++ app/views/members/show.html.erb | 3 +++ config/locales/pt.yml | 5 +++++ db/migrate/20220625224650_add_preferences_to_members.rb | 8 ++++++++ db/schema.rb | 4 +++- 8 files changed, 38 insertions(+), 2 deletions(-) create mode 100644 db/migrate/20220625224650_add_preferences_to_members.rb diff --git a/app/controllers/members_controller.rb b/app/controllers/members_controller.rb index 00282d0..e90ac85 100644 --- a/app/controllers/members_controller.rb +++ b/app/controllers/members_controller.rb @@ -66,7 +66,7 @@ class MembersController < ApplicationController # Only allow a list of trusted parameters through. def member_params - params.fetch(:member, {}).permit(:display_name, :email, :identification_number, :category, :address, :joined_on, :expires_on) + params.fetch(:member, {}).permit(:display_name, :email, :identification_number, :category, :address, :joined_on, :expires_on, :wants_mailing_list, :prefers_postal) end def sort_params diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index c4c7516..5ab5c71 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -6,4 +6,12 @@ module ApplicationHelper def notification_status(status) t("notifications.status.#{status}") end + + def bool_option(value) + if value + t('option.positive') + else + t('option.negative') + end + end end diff --git a/app/views/members/edit.html.erb b/app/views/members/edit.html.erb index c850d4c..7250e70 100644 --- a/app/views/members/edit.html.erb +++ b/app/views/members/edit.html.erb @@ -34,6 +34,14 @@ <%= form.text_area :address %> + + + <%= form.check_box :wants_mailing_list %> + + + + <%= form.check_box :prefers_postal %> + <%= t('members.edit.edit_dates_warning') %> diff --git a/app/views/members/new.html.erb b/app/views/members/new.html.erb index 80c2601..cb0280b 100644 --- a/app/views/members/new.html.erb +++ b/app/views/members/new.html.erb @@ -19,6 +19,8 @@ <%= form.select :category, %w{student retired unemployed employed} %> <%= form.text_field :identification_number %> <%= form.text_area :address %> + <%= form.check_box :wants_mailing_list %> + <%= form.check_box :prefers_postal %>
diff --git a/app/views/members/show.html.erb b/app/views/members/show.html.erb index 5b09eda..08f0ad0 100644 --- a/app/views/members/show.html.erb +++ b/app/views/members/show.html.erb @@ -8,6 +8,9 @@ <%= t('members.attributes.category') %><%= @member.category %> <%= t('members.attributes.identification_number') %><%= @member.identification_number %> <%= t('members.attributes.address') %><%= simple_format @member.address %> + <%= t('members.attributes.wants_mailing_list') %><%= bool_option @member.wants_mailing_list %> + <%= t('members.attributes.prefers_postal') %><%= bool_option @member.prefers_postal %> + <%= t('members.attributes.address') %><%= simple_format @member.address %> <%= t('members.attributes.joined_on') %><%= @member.joined_on %> <%= t('members.attributes.expires_on') %><%= @member.expires_on %> <%= t('members.attributes.status') %><%= @member.status %> diff --git a/config/locales/pt.yml b/config/locales/pt.yml index 04fd018..f4f2107 100644 --- a/config/locales/pt.yml +++ b/config/locales/pt.yml @@ -1,4 +1,7 @@ pt: + option: + positive: "Sim" + negative: "Não" navigation: members: "Lista de membros" members: @@ -46,6 +49,8 @@ pt: category: "Categoria" identification_number: "N.º de identificação" address: "Endereço postal" + wants_mailing_list: "Inscrição na lista de correio" + prefers_postal: "Prefere comunicação postal" status: any: "Qualquer" active: "Activo" diff --git a/db/migrate/20220625224650_add_preferences_to_members.rb b/db/migrate/20220625224650_add_preferences_to_members.rb new file mode 100644 index 0000000..5d1a491 --- /dev/null +++ b/db/migrate/20220625224650_add_preferences_to_members.rb @@ -0,0 +1,8 @@ +class AddPreferencesToMembers < ActiveRecord::Migration[7.0] + def change + change_table :members do |t| + t.boolean :wants_mailing_list, null: false, default: false + t.boolean :prefers_postal, null: false, default: false + end + end +end diff --git a/db/schema.rb b/db/schema.rb index e66b68e..652f0eb 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema[7.0].define(version: 2022_06_25_210821) do +ActiveRecord::Schema[7.0].define(version: 2022_06_25_224650) do # These are extensions that must be enabled in order to support this database enable_extension "pgcrypto" enable_extension "plpgsql" @@ -41,6 +41,8 @@ ActiveRecord::Schema[7.0].define(version: 2022_06_25_210821) do t.string "regular_ifthenpay_link" t.string "reduced_ifthenpay_link" t.boolean "excluded", default: false + t.boolean "wants_mailing_list", default: false, null: false + t.boolean "prefers_postal", default: false, null: false t.index ["email"], name: "index_members_on_email", unique: true t.index ["number"], name: "index_members_on_number", unique: true end