#!/usr/bin/env ruby require "dotenv/load" if ENV.fetch("RACK_ENV", "development") == "development" require_relative "../lib/database" abort "Usage: ruby bin/add-core-member EMAIL" unless ARGV.one? email = ARGV.first.strip.downcase abort "Email manquant." if email.empty? begin DB.transaction do verified_status_id = DB[:account_statuses] .where(name: "Verified") .get(:id) raise "Statut Verified introuvable." unless verified_status_id account = DB[:accounts] .where(Sequel.function(:lower, :email) => email) .first raise "Compte introuvable : #{email}" unless account raise "Email non vérifié : #{email}" unless account[:status_id] == verified_status_id member = DB[:members].where(account_id: account[:id]).first raise "Fiche membre introuvable." unless member raise "Une personne physique est requise." unless member[:kind] == "individual" raise "Ce membre appartient déjà au Noyau." if member[:core_member] membership = DB[:memberships] .where(member_id: member[:id], status: "accepted") .first raise "Ce membre doit avoir une adhésion acceptée." unless membership updated = DB[:members] .where(id: member[:id], core_member: false) .update(core_member: true) raise "Impossible d'ajouter ce membre au Noyau." unless updated == 1 end rescue StandardError => e abort "Erreur : #{e.message}" end puts "#{email} a été ajouté au Noyau."