@@ -11,9 +11,15 @@ def index
1111 check_missing_params ( "rollup" , "sensor_key||sensor_id" ) # sensor_key or sensor_id
1212 return unless check_date_param_format ( "from" )
1313 return unless check_date_param_format ( "to" )
14- render json : Kairos . query ( params )
14+ data = Kairos . query ( params )
15+ if params [ "localtimes" ] == "1"
16+ render json : convert_to_local_times ( data )
17+ else
18+ render json : data
19+ end
1520 end
1621
22+
1723 def create
1824 check_missing_params ( "data" )
1925 @device = Device . includes ( :components ) . find ( params [ :id ] )
@@ -36,13 +42,12 @@ def create
3642 end
3743
3844 def legacy_create
39-
4045 if request . headers [ 'X-SmartCitizenData' ]
4146 storer = RawStorer . new
4247 JSON . parse ( request . headers [ 'X-SmartCitizenData' ] ) . each do |raw_reading |
4348 mac = request . headers [ 'X-SmartCitizenMacADDR' ]
4449 version = request . headers [ 'X-SmartCitizenVersion' ]
45- ip = ( request . headers [ 'X-SmartCitizenIP' ] || request . remote_ip )
50+ ip = request . headers [ 'X-SmartCitizenIP' ] || request . remote_ip
4651 storer . store ( raw_reading , mac , version , ip )
4752 end
4853 end
@@ -65,5 +70,18 @@ def csv_archive
6570 end
6671 end
6772
73+
74+ private
75+
76+ def convert_to_local_times ( data )
77+ tz = current_user &.time_zone || ActiveSupport ::TimeZone [ "Etc/UTC" ]
78+ from = tz . at ( data [ "from" ] )
79+ to = tz . at ( data [ "to" ] )
80+ readings = data [ "readings" ] . map { |reading |
81+ [ tz . at ( reading [ 0 ] ) , reading [ 1 ] ]
82+ }
83+ data . merge ( { from : from , to : to , readings : readings } )
84+ end
85+
6886 end
6987end
0 commit comments