From c2533c0590f5a5f7a6df2ab268ee2ce5ecf8c851 Mon Sep 17 00:00:00 2001 From: Sylvain Date: Tue, 6 Sep 2016 17:17:15 +0200 Subject: [PATCH] add custom aggs for machine & trainings stats: available bookings --- .../controllers/admin/statistics.coffee.erb | 1 - .../templates/admin/statistics/index.html.erb | 2 +- config/locales/app.admin.en.yml | 2 ++ config/locales/app.admin.fr.yml | 2 ++ ...160906145713_insert_custom_aggregations.rb | 29 +++++++++++++++++++ db/schema.rb | 2 +- 6 files changed, 35 insertions(+), 3 deletions(-) create mode 100644 db/migrate/20160906145713_insert_custom_aggregations.rb diff --git a/app/assets/javascripts/controllers/admin/statistics.coffee.erb b/app/assets/javascripts/controllers/admin/statistics.coffee.erb index 9306a96d3..53d289217 100644 --- a/app/assets/javascripts/controllers/admin/statistics.coffee.erb +++ b/app/assets/javascripts/controllers/admin/statistics.coffee.erb @@ -359,7 +359,6 @@ Application.Controllers.controller "StatisticsController", ["$scope", "$state", - ## # Run the elasticSearch query to retreive the /stats/type aggregations # @param index {String} elasticSearch document type (account|event|machine|project|subscription|training) diff --git a/app/assets/templates/admin/statistics/index.html.erb b/app/assets/templates/admin/statistics/index.html.erb index 075fb6800..b6d78f68b 100644 --- a/app/assets/templates/admin/statistics/index.html.erb +++ b/app/assets/templates/admin/statistics/index.html.erb @@ -235,7 +235,7 @@
  • {{ 'revenue_' | translate }} {{sumCA | currency}}
  • {{ 'average_age' | translate }} {{averageAge}} {{ 'years_old' | translate }}
  • {{ 'total' | translate }} {{type.active.label}} : {{sumStat}}
  • -
  • {{ custom.field | translate }} : {{customAggs[custom.field]}}
  • +
  • {{ custom.field | translate }} {{customAggs[custom.field]}}
  • diff --git a/config/locales/app.admin.en.yml b/config/locales/app.admin.en.yml index beddf08fe..f28ab7444 100644 --- a/config/locales/app.admin.en.yml +++ b/config/locales/app.admin.en.yml @@ -445,6 +445,8 @@ en: average_age: "Average age:" years_old: "Years old" total: "Total" + available_hours: "Hours available for booking:" + available_tickets: "Tickets available for booking:" gender: "Gender" age: "Age" revenue: "Revenue" diff --git a/config/locales/app.admin.fr.yml b/config/locales/app.admin.fr.yml index 1c01a5e86..061c9abbd 100644 --- a/config/locales/app.admin.fr.yml +++ b/config/locales/app.admin.fr.yml @@ -445,6 +445,8 @@ fr: average_age: "Âge moyen :" years_old: "ans" total: "Total" + available_hours: "Heures disponibles à la réservation :" + available_tickets: "Places disponibles à la reservation :" gender: "Genre" age: "Âge" revenue: "Chiffre d'affaires" diff --git a/db/migrate/20160906145713_insert_custom_aggregations.rb b/db/migrate/20160906145713_insert_custom_aggregations.rb new file mode 100644 index 000000000..90c95e456 --- /dev/null +++ b/db/migrate/20160906145713_insert_custom_aggregations.rb @@ -0,0 +1,29 @@ +class InsertCustomAggregations < ActiveRecord::Migration + def change + # available reservations hours for machines + machine = StatisticIndex.find_by_es_type_key('machine') + machine_hours = StatisticType.find_by(key: 'hour', statistic_index_id: machine.id) + + available_hours = StatisticCustomAggregation.new({ + statistic_type_id: machine_hours.id, + es_index: 'fablab', + es_type: 'availabilities', + field: 'available_hours', + query: '{"size":0, "aggregations":{"%{aggs_name}":{"sum":{"field":"hours_duration"}}}, "query":{"bool":{"must":[{"range":{"start_at":{"gte":"%{start_date}", "lte":"%{end_date}"}}}, {"match":{"available_type":"machines"}}]}}}' + }) + available_hours.save! + + # available training tickets + training = StatisticIndex.find_by_es_type_key('training') + training_bookings = StatisticType.find_by(key: 'booking', statistic_index_id: training.id) + + available_tickets = StatisticCustomAggregation.new({ + statistic_type_id: training_bookings.id, + es_index: 'fablab', + es_type: 'availabilities', + field: 'available_tickets', + query: '{"size":0, "aggregations":{"%{aggs_name}":{"sum":{"field":"nb_total_places"}}}, "query":{"bool":{"must":[{"range":{"start_at":{"gte":"%{start_date}", "lte":"%{end_date}"}}}, {"match":{"available_type":"training"}}]}}}' + }) + available_tickets.save! + end +end diff --git a/db/schema.rb b/db/schema.rb index 04fed69b0..0201d2bdf 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20160906094847) do +ActiveRecord::Schema.define(version: 20160906145713) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql"