diff --git a/app/controllers/admin/stats_controller.rb b/app/controllers/admin/stats_controller.rb
deleted file mode 100644
index a6ba21b8..00000000
--- a/app/controllers/admin/stats_controller.rb
+++ /dev/null
@@ -1,232 +0,0 @@
-module Admin
- class StatsController < Admin::BaseController
- load_and_authorize_resource
- load_and_authorize_resource :conference, find_by: :short_title
-
- def index
- @registrations = @conference.registrations.includes(:user)
- @registrations = @registrations.order('registrations.created_at ASC')
- @registered = @conference.registrations.count
- @attendees = @conference.registrations.where('attended = ?', true).count
- @pre_registered = @conference.registrations
- @pre_registered = @pre_registered.where('created_at < ?', @conference.start_date).count
- @pre_registered_attended = @conference.registrations.where('created_at < ? AND attended = ?',
- @conference.start_date, true).count
-
- @registered_with_partner = @conference.registrations.where('attending_with_partner = ?',
- true).count
- @attended_with_partner = @conference.registrations.where(
- 'attending_with_partner = ? AND attended = ?', true, true).count
-
- @handicapped_access = @conference.registrations.where(handicapped_access_required: true).count
- @handicapped_access_attended = @conference.registrations.where(handicapped_access_required:
- true)
- @handicapped_access_attended = @handicapped_access_attended.where(attended: true).count
- @suggested_hotel_stay = @conference.registrations.where('using_affiliated_lodging = ?',
- true).count
-
- @events = @conference.events
- # Events charts
- @machine_states = [['confirmed'], ['cancelled'], ['rejected'], ['withdrawn'],
- ['new', 'review'], ['unconfirmed', 'accepted']]
- # Types distribution per state
- @type_state = {}
- @machine_states.each do |state|
- @type_state[state[0]] = var_state_func(@conference.event_types, 'event_type', state)
- end
-
- # Tracks distribution per state
- @no_track_all = @events.where(track_id: nil)
- @no_track_new = @events.where(track_id: nil).where(state: ['new', 'review'])
- @no_track_unconfirmed = @events.where(track_id: nil).where(state: 'unconfirmed')
- @no_track_confirmed = @events.where(track_id: nil).where(state: 'confirmed')
- @track_state = {}
- @machine_states.each do |state|
- @track_state[state[0]] = var_state_func(@conference.tracks, 'track', state)
- end
-
- # Events_time chart
- if @events.count > 0
- start_date = @events.minimum('created_at').strftime('%Y-%m-%d')
- end_date = @events.maximum('created_at').strftime('%Y-%m-%d')
- unless start_date.nil? || end_date.nil?
- @events_time = var_time(start_date, end_date, @events, 'created_at')
- end
- end
-
- # Code for the table in events
- @mystates = []
- @mytypes = []
- @eventstats = {}
- @totallength = 0
- # Get totals per state
- @events.state_machine.states.map.each do |mystate|
- length = 0
- events_mystate = @events.where('state' => mystate.name)
- if events_mystate.count > 0
- @mystates << mystate
- events_mystate.each do |myevent|
- length += myevent.event_type.length
- end
- @eventstats["#{mystate.name}"] = { 'count' => events_mystate.count, 'length' => length }
- end
- end
-
- @conference.event_types.each do |mytype|
- events_mytype = @events.where('event_type_id' => mytype.id)
- if events_mytype.count > 0
- @mytypes << mytype
- end
- end
- @mytypes.each do |mytype|
- @mystates.each do |mystate|
- events_mytype = @events.where('event_type_id' => mytype.id)
- events_mytype_mystate = events_mytype.where('state' => mystate.name)
- typelength = 0
- if events_mytype_mystate.count > 0
- events_mytype_mystate.each do |myevent|
- typelength += myevent.event_type.length
- @totallength += myevent.event_type.length
- end
- if @eventstats[mytype.title].nil?
- @eventstats[mytype.title] = { 'count' => events_mytype.count,
- 'length' => events_mytype.count * mytype.length }
- end
-
- tmp = { "#{mystate.name}" => { 'type_state_count' => events_mytype_mystate.count,
- 'type_state_length' => typelength } }
- @eventstats[mytype.title].merge!(tmp)
- end
- end
- end
- @eventstats['totallength'] = @totallength
-
- # SPEAKERS stats
- @speakers = User.joins(:events).where('events.conference_id = ? AND events.state LIKE ?',
- @conference.id, 'confirmed').uniq
- @speaker_fields_user = %w(name email affiliation)
- @speaker_fields_reg = %w(arrival departure)
- # TICKETS stats
- @supporter_levels = @conference.supporter_levels
- @tickets = @conference.registrations.joins(supporter_registration: :supporter_level)
- @tickets = @tickets.where('supporter_levels.title NOT LIKE ? ', '%Free%')
-
- @tickets_time = []
-
- if @conference.registration_start_date && @conference.end_date && @registered > 0 && @supporter_levels
- start_date = @conference.registration_start_date
- end_date = @conference.end_date
- levels = []
- @conference.supporter_levels.each do |level|
- @tickets_time << { 'key' => level.title, 'values' => [] }
- levels << ["#{level.title}"]
- end
-
- (start_date..end_date).each do |day|
- if @tickets.where('supporter_registrations.created_at LIKE ?', "%#{day}%").where(
- 'supporter_levels.title' => levels).count != 0
- @conference.supporter_levels.each do |level|
-
- day_ticket_count = @tickets.where('supporter_registrations.created_at LIKE ?
- AND supporter_levels.title LIKE ?',
- "%#{day}%", "%#{level.title}%").count
-
- index = @tickets_time.index { |v| v['key'] == "#{level.title}" }
- @tickets_time[index]['values'] << { 'label' => "#{day}", 'value' => day_ticket_count }
- end
- end
- end
- end
- @tickets_distribution = []
- @tickets_time.each do |ticket|
- value = ticket['values'].map { |x| x['value'] }.sum
- percent = (value.to_f / @tickets.count * 100).round(2)
- @tickets_distribution << { 'status' => ticket['key'],
- 'value' => value, 'percent' => percent }
- end
-
- # OTHER_INFO chart / To be 'Questions'
- @other_info = [
- { 'status' => 'with partner (registered)', 'value' => @registered_with_partner },
- { 'status' => 'with partner (attended)', 'value' => @attended_with_partner },
- { 'status' => 'handicapped (registered)', 'value' => @handicapped_access },
- { 'status' => 'handicapped (attended)', 'value' => @handicapped_access_attended },
- { 'status' => 'stay at suggested hotel', 'value' => @suggested_hotel_stay }
- ]
-
- # REGISTRATIONS, registered_time
- if @conference.registration_start_date && @conference.end_date && @registered > 0
- start_date = @conference.registration_start_date
- end_date = @conference.end_date
- @registered_time = var_time(start_date, end_date, @registrations, 'created_at')
- end
-
- respond_to do |format|
- format.html
- format.json { render json: @tickets_time.to_json }
- end
- end
- # FUNCTIONS
- def var_time(start_date, end_date, var, field)
- result = []
- (start_date..end_date).each do |day|
- day_var_count = var.where("#{field} LIKE ?", "%#{day}%").count
- if day_var_count != 0
- result << { 'status' => "#{day}", 'value' => day_var_count }
- end
- end
- result
- end
-
- def var_state_func(vars, field, mystate)
- result = []
-
- vars.each do |myvar|
- # Find events per track and state
- value = @conference.events.where("#{field}_id" => myvar.id).where(state: mystate).count
- # Find all events in that state
- total = @conference.events.where(state: mystate).count
- status = "#{myvar.name}"
-
- percent = 0 # rubocop:disable Lint/UselessAssignment
- if value != 0
- percent = (value.to_f / total * 100).round(2)
- result << { 'status' => status, 'value' => value, 'percent' => percent }
- end
- end
- # Get no of events for which the field is not set (So that pie shows half piece for 50%)
- sum = result.inject(0) { |s, hash| s + hash['value'] }
- value = total - sum
- if sum != 0 && value != 0
- percent = (value.to_f / total * 100).round(2)
- result << { 'status' => "no #{field} set", 'value' => value, 'percent' => percent }
- end
-
- result
- end
-
- def speaker_reg(speaker)
- speaker.registrations.where('conference_id = ? AND user_id = ?',
- @conference.id, speaker.id).first
- end
-
- def speaker_diet(reg)
- @conference.dietary_choices.find(reg.dietary_choice_id)
- end
-
- def diet_count(diet)
- @conference.registrations.where('dietary_choice_id = ?', diet)
- end
-
- def social_event_count(event)
- @conference.registrations.joins(:social_events).where(
- 'registrations_social_events.social_event_id = ?', event).count
- end
-
- helper_method :speaker_reg
- helper_method :speaker_diet
- helper_method :diet_count
- helper_method :social_event_count
- end
-end
-
diff --git a/app/views/admin/stats/_events.html.haml b/app/views/admin/stats/_events.html.haml
deleted file mode 100644
index 04c07c4b..00000000
--- a/app/views/admin/stats/_events.html.haml
+++ /dev/null
@@ -1,41 +0,0 @@
--if @events.count > 0
- %h2{:style => "text-align: center"}
- = "Events (#{@events.count})"
-
- .row-fluid
- %h3
- %u Types per event state
- - if !@conference.event_types.empty?
- = render :partial => "events_types"
- - else
- %h4
- %i There are no tracks defined for this conference!
-
- .row-fluid
- %h3
- %u Tracks per event state
- - if @no_track_all.count > 0
- %i= " (#{pluralize(@no_track_all.count, 'event')} not assigned to a track)"
- - if !@conference.tracks.empty?
- = render :partial => "events_tracks"
- - else
- %h4
- %i There are no tracks defined for this conference!
-
- .row-fluid
- .span12
- %h3 Proposal Submissions over time
- .row-fluid
- .span12#events_time
- = render :partial => "events_time"
-
- .row-fluid
- .span12
- %br
- %h3 Overview of all events
- .row-fluid
- .span12#events_table
- = render :partial => "events_table"
-
-- else
- %h5 There are no submitted events yet.
diff --git a/app/views/admin/stats/_events_table.html.haml b/app/views/admin/stats/_events_table.html.haml
deleted file mode 100644
index 0477f18a..00000000
--- a/app/views/admin/stats/_events_table.html.haml
+++ /dev/null
@@ -1,34 +0,0 @@
-%table.table.table-bordered.table-striped
- %thead
- %th
- - @mystates.each do |state|
- %th{:colspan => 2, :style => "text-align:center"}
- State "#{state.name}"
- %th{:colspan => 2, :style => "text-align:center"}
- Total
- %br
- No & Time
-
- %tr
- %td
- %b Total
- - @mystates.each do |mystate|
- %td
- %b
- = @eventstats["#{mystate.name}"]["count"]
- %td
- %b
- #{@eventstats["#{mystate.name}"]["length"] / 60} h #{@eventstats["#{mystate.name}"]["length"] - @eventstats["#{mystate.name}"]["length"] / 60 * 60} m
- %td
- %b= @events.count
- %td
- %b= show_time(@eventstats["totallength"])
-
- - @mytypes.each do |mytype|
- %tr
- %td= "#{mytype.title} (#{show_time(mytype.length)})"
- - @mystates.each do |mystate|
- %td= @eventstats["#{mytype.title}"]["#{mystate.name}"]["type_state_count"] unless @eventstats["#{mytype.title}"]["#{mystate.name}"] == nil
- %td= show_time(@eventstats["#{mytype.title}"]["#{mystate.name}"]["type_state_length"]) unless @eventstats["#{mytype.title}"]["#{mystate.name}"] == nil
- %td= @eventstats["#{mytype.title}"]["count"]
- %td= show_time(@eventstats["#{mytype.title}"]["length"])
diff --git a/app/views/admin/stats/_events_time.html b/app/views/admin/stats/_events_time.html
deleted file mode 100644
index 25f18d6b..00000000
--- a/app/views/admin/stats/_events_time.html
+++ /dev/null
@@ -1,71 +0,0 @@
-
\ No newline at end of file
diff --git a/app/views/admin/stats/_events_tracks.html.haml b/app/views/admin/stats/_events_tracks.html.haml
deleted file mode 100644
index 6ecef217..00000000
--- a/app/views/admin/stats/_events_tracks.html.haml
+++ /dev/null
@@ -1,35 +0,0 @@
-.row-fluid
- - if !@track_state['new'].empty?
- .span4
- %h4 New Submissions
- - if @no_track_new.count > 0
- %h5= "#{pluralize(@no_track_new.count, 'event')} not assigned to a track"
- - else
- %h5
- .row-fluid
- .span12#events_tracks_new
- = render :partial => "events_tracks_new"
-
- - if !@track_state['unconfirmed'].empty?
- .span4
- %h4 Accepted (Unconfirmed)
- - if @no_track_unconfirmed.count > 0
- %h5= "#{pluralize(@no_track_unconfirmed.count, 'event')} not assigned to a track"
- - else
- %h5 All events assigned to track!
-
- .row-fluid
- .span12#events_tracks_unconfirmed
- = render :partial => "events_tracks_unconfirmed"
-
- - if !@track_state['confirmed'].empty?
- .span4
- %h4 Accepted (Confirmed)
- - if @no_track_confirmed.count > 0
- %h5= "#{pluralize(@no_track_confirmed.count, 'event')} not assigned to a track"
- - else
- %h5 All events assigned to track!
-
- .row-fluid
- .span12#events_tracks_confirmed
- = render :partial => "events_tracks_confirmed"
diff --git a/app/views/admin/stats/_events_tracks_confirmed.html b/app/views/admin/stats/_events_tracks_confirmed.html
deleted file mode 100644
index d031ed30..00000000
--- a/app/views/admin/stats/_events_tracks_confirmed.html
+++ /dev/null
@@ -1,79 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/app/views/admin/stats/_events_tracks_new.html b/app/views/admin/stats/_events_tracks_new.html
deleted file mode 100644
index d8d4e81c..00000000
--- a/app/views/admin/stats/_events_tracks_new.html
+++ /dev/null
@@ -1,79 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/app/views/admin/stats/_events_tracks_unconfirmed.html b/app/views/admin/stats/_events_tracks_unconfirmed.html
deleted file mode 100644
index 1af6b1ad..00000000
--- a/app/views/admin/stats/_events_tracks_unconfirmed.html
+++ /dev/null
@@ -1,79 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/app/views/admin/stats/_events_types.html.haml b/app/views/admin/stats/_events_types.html.haml
deleted file mode 100644
index 3d6ac9fd..00000000
--- a/app/views/admin/stats/_events_types.html.haml
+++ /dev/null
@@ -1,19 +0,0 @@
-.row-fluid
- - if !@type_state['new'].empty?
- .span4
- %h4 New Submissions: #{@type_state['new'].map{|x| x["value"]}.sum}
- .row-fluid
- .span12#events_types_new
- = render :partial => "events_types_new"
- - if !@type_state['unconfirmed'].empty?
- .span4
- %h4 Accepted (Unconfirmed): #{@type_state['unconfirmed'].map{|x| x["value"]}.sum}
- .row-fluid
- .span12#events_types_unconfirmed
- = render :partial => "events_types_unconfirmed"
- - if !@type_state['confirmed'].empty?
- .span4
- %h4 Accepted (Confirmed): #{@type_state['confirmed'].map{|x| x["value"]}.sum}
- .row-fluid
- .span12#events_types_confirmed
- = render :partial => "events_types_confirmed"
\ No newline at end of file
diff --git a/app/views/admin/stats/_events_types_confirmed.html b/app/views/admin/stats/_events_types_confirmed.html
deleted file mode 100644
index 247e8a14..00000000
--- a/app/views/admin/stats/_events_types_confirmed.html
+++ /dev/null
@@ -1,78 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/app/views/admin/stats/_events_types_new.html b/app/views/admin/stats/_events_types_new.html
deleted file mode 100644
index fc560371..00000000
--- a/app/views/admin/stats/_events_types_new.html
+++ /dev/null
@@ -1,78 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/app/views/admin/stats/_events_types_unconfirmed.html b/app/views/admin/stats/_events_types_unconfirmed.html
deleted file mode 100644
index 4335eab0..00000000
--- a/app/views/admin/stats/_events_types_unconfirmed.html
+++ /dev/null
@@ -1,78 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/app/views/admin/stats/_other_info.html b/app/views/admin/stats/_other_info.html
deleted file mode 100644
index 33dd56eb..00000000
--- a/app/views/admin/stats/_other_info.html
+++ /dev/null
@@ -1,70 +0,0 @@
-
\ No newline at end of file
diff --git a/app/views/admin/stats/_preregistered_onsite.html b/app/views/admin/stats/_preregistered_onsite.html
deleted file mode 100644
index f8b9038e..00000000
--- a/app/views/admin/stats/_preregistered_onsite.html
+++ /dev/null
@@ -1,85 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/app/views/admin/stats/_registered_attended.html b/app/views/admin/stats/_registered_attended.html
deleted file mode 100644
index 67c9006c..00000000
--- a/app/views/admin/stats/_registered_attended.html
+++ /dev/null
@@ -1,85 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/app/views/admin/stats/_registered_time.html b/app/views/admin/stats/_registered_time.html
deleted file mode 100644
index e3de08e0..00000000
--- a/app/views/admin/stats/_registered_time.html
+++ /dev/null
@@ -1,71 +0,0 @@
-
\ No newline at end of file
diff --git a/app/views/admin/stats/_registrations.html.haml b/app/views/admin/stats/_registrations.html.haml
deleted file mode 100644
index d57b2620..00000000
--- a/app/views/admin/stats/_registrations.html.haml
+++ /dev/null
@@ -1,41 +0,0 @@
-.row
- .col-md-4
- - if @registered > 0
- - if @attendees > 0
- %h4{:style => "text-indent: 25px"}= "Registrations - Attendees (#{(@attendees.to_f / @registered * 100).round }%)"
- - else
- %h4{:style => "text-indent: 25px"}= "Registrations - Attendees"
- .row-fluid
- .span12#registrations_attendees
- = render :partial => "registrations_attendees"
- - else
- %h5 There are no registrations yet.
-
- .col-md-4
- - if @registered > 0
- %h4{:style => "text-indent: 10px"}= "Attendance of pre-registered"
- .row-fluid
- .span12#registered_attended
- = render :partial => "registered_attended"
-
- .col-md-4
- - if @registered > 0
- %h4{:style => "text-indent: 25px"}= "% of pre-registered"
- .row-fluid
- .span12#preregistered_onsite
- = render :partial => "preregistered_onsite"
-
-.row
- .col-md-6
- - if @registered > 0
- %h4= "Other Info"
- .row-fluid
- .span12#other_info
- = render :partial => "other_info"
-
- .col-md-6
- - if @registered > 0
- %h4{:style => "text-indent: 98px"}= "Registrations over time"
- .row-fluid
- .span12#registered_time
- = render :partial => "registered_time"
diff --git a/app/views/admin/stats/_registrations_attendees.html b/app/views/admin/stats/_registrations_attendees.html
deleted file mode 100644
index 89079236..00000000
--- a/app/views/admin/stats/_registrations_attendees.html
+++ /dev/null
@@ -1,77 +0,0 @@
-
\ No newline at end of file
diff --git a/app/views/admin/stats/_speakers.html.haml b/app/views/admin/stats/_speakers.html.haml
deleted file mode 100644
index 1525126c..00000000
--- a/app/views/admin/stats/_speakers.html.haml
+++ /dev/null
@@ -1,37 +0,0 @@
-- count =0
-%h3
- Speakers (#{@speakers.length})
-%table.table.table-striped.table-bordered.table-hover#speakertable
- %thead
- %th
- ID
- - (@speaker_fields_user + @speaker_fields_reg).each do |field|
- %th
- = field.capitalize
- - @speakers.each do |speaker|
- %tr
- %td
- = count +=1
- - @speaker_fields_user.each do |field|
- %td
- = speaker.send(field.to_sym)
- - @speaker_fields_reg.each do |field|
- %td
- - reg = speaker_reg(speaker)
- - if !reg.nil?
- - if field == "diet"
- - if reg.dietary_choice_id
- = speaker_diet(reg).title
- %br
- = reg.other_dietary_choice
- - elsif field == 'arrival' || field == 'departure'
- = getdatetime(reg, field)
- - else
- = reg.send(field.to_sym)
-
-:javascript
- $(document).ready(function(){
- $('#speakertable').dataTable({
- "bPaginate": false
- });
- });
\ No newline at end of file
diff --git a/app/views/admin/stats/_tickets.html.haml b/app/views/admin/stats/_tickets.html.haml
deleted file mode 100644
index f9e25c39..00000000
--- a/app/views/admin/stats/_tickets.html.haml
+++ /dev/null
@@ -1,22 +0,0 @@
-- if @tickets.length > 0
- .row-fluid
- .span12
- %h2
- = "Non-Free Tickets (#{@tickets.count})"
- .row-fluid
- .span4
- %h4 Ticket distribution
- .row-fluid
- .span12#tickets_distribution
- = render :partial => "tickets_distribution"
- .row-fluid
- .span10
- %h4 Ticket sales over time
- .row-fluid
- .span12#tickets_time
- = render :partial => "tickets_time"
-- else
- - if @conference.use_supporter_levels
- %h5 No tickets have been bought yet.
- - else
- %h5 There are no tickets set for this conference.
\ No newline at end of file
diff --git a/app/views/admin/stats/_tickets_distribution.html b/app/views/admin/stats/_tickets_distribution.html
deleted file mode 100644
index b12163d1..00000000
--- a/app/views/admin/stats/_tickets_distribution.html
+++ /dev/null
@@ -1,79 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/app/views/admin/stats/_tickets_time.html b/app/views/admin/stats/_tickets_time.html
deleted file mode 100644
index 6e0b8d44..00000000
--- a/app/views/admin/stats/_tickets_time.html
+++ /dev/null
@@ -1 +0,0 @@
-(Not yet implemented)
\ No newline at end of file
diff --git a/app/views/admin/stats/index.html.haml b/app/views/admin/stats/index.html.haml
deleted file mode 100644
index a18f9642..00000000
--- a/app/views/admin/stats/index.html.haml
+++ /dev/null
@@ -1,27 +0,0 @@
-.row
- .col-md-12
- %ul.nav.nav-tabs#myTab
- %li.active
- %a{:href=>"#registrations", "data-toggle"=>"tab"} Registrations
- %li
- %a{:href=>"#events", "data-toggle"=>"tab"} Events
- %li
- %a{:href=>"#speakers", "data-toggle"=>"tab"} Speakers
- %li
- %a{:href=>"#tickets", "data-toggle"=>"tab"} Tickets
-
- .tab-content
- .tab-pane.active#registrations
- = render :partial => 'registrations'
- .tab-pane#events
- = render :partial => 'events'
- .tab-pane#speakers
- = render :partial => 'speakers'
- .tab-pane#tickets
- = render :partial => 'tickets'
-
-:javascript
- $('#myTab a').click(function (e) {
- e.preventDefault();
- $(this).tab('show');
- })