50 lines
1.2 KiB
Ruby
50 lines
1.2 KiB
Ruby
class Netig
|
|
hash_branch "noyau" do |r|
|
|
require_core_member!(r)
|
|
|
|
@page_title = "Noyau — NETig"
|
|
@page_description = "Espace de gestion de l'association NETig."
|
|
@canonical_url = "https://netig.net/noyau"
|
|
|
|
r.is do
|
|
r.get do
|
|
view "noyau"
|
|
end
|
|
end
|
|
|
|
r.on "members" do
|
|
r.is do
|
|
r.get do
|
|
@page_title = "Adhérents — Noyau — NETig"
|
|
|
|
@members = DB[:members]
|
|
.join(:accounts, id: :account_id)
|
|
.select_all(:members)
|
|
.select_append(Sequel[:accounts][:email].as(:email))
|
|
.order(Sequel[:members][:id])
|
|
.all
|
|
|
|
memberships_by_member = DB[:memberships]
|
|
.order(Sequel.desc(:requested_at), Sequel.desc(:id))
|
|
.all
|
|
.group_by { |membership| membership[:member_id] }
|
|
|
|
@members.each do |member|
|
|
memberships = memberships_by_member.fetch(member[:id], [])
|
|
|
|
membership = memberships.find do |item|
|
|
%w[pending accepted].include?(item[:status])
|
|
end
|
|
|
|
membership ||= memberships.first
|
|
|
|
member[:membership_status] = membership && membership[:status]
|
|
end
|
|
|
|
view "noyau/members"
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|