@@ -8,17 +8,7 @@ def user_list
88               includes ( :user ) . 
99               order ( "members.member_uid" ) 
1010
11-     respond_to  do  |format |
12-       format . html 
13-       format . csv  do 
14-         report  =  Report ::Csv ::Member . new ( current_organization ,  @members ) 
15-         send_data  report . run ,  filename : report . name ,  type : report . mime_type 
16-       end 
17-       format . pdf  do 
18-         report  =  Report ::Pdf ::Member . new ( current_organization ,  @members ) 
19-         send_data  report . run ,  filename : report . name ,  type : report . mime_type 
20-       end 
21-     end 
11+     report_responder ( 'Member' ,  current_organization ,  @members ) 
2212  end 
2313
2414  def  post_list 
@@ -32,16 +22,27 @@ def post_list
3222             to_a . 
3323             sort_by  {  |category ,  _ | category . try ( :name ) . to_s  } 
3424
25+     report_responder ( 'Post' ,  current_organization ,  @posts ,  @post_type ) 
26+   end 
27+ 
28+   def  transfer_list 
29+     @transfers  =  current_organization . all_transfers_with_accounts 
30+ 
31+     report_responder ( 'Transfer' ,  current_organization ,  @transfers ) 
32+   end 
33+ 
34+   private 
35+ 
36+   def  report_responder ( report_class ,  *args ) 
3537    respond_to  do  |format |
3638      format . html 
37-       format . csv  do 
38-         report  =  Report ::Csv ::Post . new ( current_organization ,  @posts ,  @post_type ) 
39-         send_data  report . run ,  filename : report . name ,  type : report . mime_type 
40-       end 
41-       format . pdf  do 
42-         report  =  Report ::Pdf ::Post . new ( current_organization ,  @posts ,  @post_type ) 
43-         send_data  report . run ,  filename : report . name ,  type : report . mime_type 
44-       end 
39+       format . csv  {  download_report ( "Report::Csv::#{ report_class }  ,  *args )  } 
40+       format . pdf  {  download_report ( "Report::Pdf::#{ report_class }  ,  *args )  } 
4541    end 
4642  end 
43+ 
44+   def  download_report ( report_class ,  *args ) 
45+     report  =  report_class . constantize . new ( *args ) 
46+     send_data  report . run ,  filename : report . name ,  type : report . mime_type 
47+   end 
4748end 
0 commit comments