From beefcf6f836a57da3efbd20ca5b625c54f93ffbf Mon Sep 17 00:00:00 2001
From: Christian Proust <christian.proust@grenoble-inp.org>
Date: Wed, 29 Nov 2017 21:59:04 +0100
Subject: [PATCH] Implement the feature

---
 app/tasks/export.rb   | 37 +++++++++++++++++++++++++++----------
 lib/tasks/export.rake | 13 +++++++++++++
 2 files changed, 40 insertions(+), 10 deletions(-)

diff --git a/app/tasks/export.rb b/app/tasks/export.rb
index a4dd9947..7e84fc60 100644
--- a/app/tasks/export.rb
+++ b/app/tasks/export.rb
@@ -1,18 +1,19 @@
 class Export
 
   def self.members_list(export_file)
-    # Get the template for file list
-    template = File.read(File.join(
-      "#{Rails.root}", 'app', 'views', 'members', 'list.text.erb'))
+    _members_list(export_file, Member)
+  end
 
-    # Generate file content
-    @members = Member.all
-    result = ERB.new(template, nil,  '-').result(binding)
+  def self.vpn_members_list(export_file)
+    _members_list(export_file, Member.includes(:services).where(services: {
+      type: 'VpnService', active: true
+    }))
+  end
 
-    # Write file content
-    File.open(export_file, 'w') do |f|
-      f.write(result)
-    end 
+  def self.radio_members_list(export_file)
+    _members_list(export_file, Member.includes(:services).where(services: {
+      type: 'RadioService', active: true
+    }))
   end
 
   def self.tunnel_radius(export_path)
@@ -50,4 +51,20 @@ class Export
     digest = OpenSSL::Digest::SHA256.file(export_file)
     File.open(export_file + ".sha256", 'w') {|f| f.write(digest.to_s) } 
   end
+  
+  private
+  def self._members_list(export_file, members)
+    # Get the template for file list
+    template = File.read(File.join(
+      "#{Rails.root}", 'app', 'views', 'members', 'list.text.erb'))
+
+    # Generate file content
+    @members = members.uniq.order(:id)
+    result = ERB.new(template, nil,  '-').result(binding)
+
+    # Write file content
+    File.open(export_file, 'w') do |f|
+      f.write(result)
+    end 
+  end
 end
diff --git a/lib/tasks/export.rake b/lib/tasks/export.rake
index 40696556..896f965e 100644
--- a/lib/tasks/export.rake
+++ b/lib/tasks/export.rake
@@ -6,6 +6,19 @@ namespace :export do
     Export.members_list export_file
   end
 
+  desc "Export the radio members list"
+  task :radio_members_list, [:export_file] => :environment do |t, args|
+    export_file = args[:export_file].to_s
+    abort "Empty export file given" if export_file.empty?
+    Export.radio_members_list export_file
+  end
+
+  desc "Export the vpn members list"
+  task :vpn_members_list, [:export_file] => :environment do |t, args|
+    export_file = args[:export_file].to_s
+    abort "Empty export file given" if export_file.empty?
+    Export.vpn_members_list export_file
+  end
 
   desc "Generate the vpn data export for the radius"
   task :tunnel_radius, [:export_path] => :environment do |t, args|
-- 
GitLab