This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class PingWidgetsController < ApplicationController | |
skip_before_filter :verify_authenticity_token, only: [:cors_set_access_control_headers, :cors_preflight_check] | |
before_filter :cors_preflight_check | |
after_filter :cors_set_access_control_headers | |
def settings | |
headers['Access-Control-Allow-Origin'] = '*' | |
if params.has_key?(:uuid) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Texthub::Application.routes.draw do | |
mount_roboto | |
mount Api, at: '/api' | |
authenticated :user do | |
root to: 'home#index', as: 'authenticated_root' | |
end | |
root 'home#homepage' | |
devise_for :admin_users, ActiveAdmin::Devise.config | |
ActiveAdmin.routes(self) | |
devise_for :users, controllers: { invitations: 'users/invitations', registrations: 'registrations', sessions: 'sessions' } |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# new api | |
class Api < Grape::API | |
version 'v1' | |
format :json | |
use Rack::Timeout | |
rescue_from Rack::Timeout::RequestTimeoutError do |e| | |
NewRelic::Agent.instance.error_collector.notice_error e, | |
uri: env["api.endpoint"].request.path, | |
referer: env["api.endpoint"].request.referer, |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def calculate_messages_per_day | |
if self.messages.any? | |
messages_per_day = self.messages.where('created_at > ?', self.created_at).group("DATE(created_at AT TIME ZONE '-08:00')").count.map do |day, amount| | |
{ day: day.to_s, v: amount } | |
end | |
end | |
end | |
def calculate_messages_per_day_per_user | |
if self.messages.any? |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def trying | |
res = Message.connection.execute("SELECT COUNT(*) AS amount, user_id, DATE(created_at AT TIME ZONE '-08:00') AS day FROM messages WHERE company_id = #{self.id} GROUP BY user_id, DATE(created_at AT TIME ZONE '-08:00');") | |
messages_per_day_per_user = {} | |
res.each do |row| | |
user_id = row["user_id"] | |
messages_per_day_per_user[user_id] ||= [] | |
day = row["day"].to_s | |
amount = row["amount"].to_i | |
messages_per_day_per_user[user_id] << { day: day, amount: amount } | |
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class AddCreatedAtIndexOnMessage < ActiveRecord::Migration | |
def up | |
execute "CREATE INDEX index_messages_on_day ON messages USING btree (DATE(created_at AT TIME ZONE '-08:00'));" | |
end | |
def down | |
execute "DROP INDEX index_messages_on_day;" | |
end | |
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def trying | |
res = Message.connection.execute("SELECT COUNT(*) AS amount, user_id, DATE(created_at AT TIME ZONE '-08:00') AS day FROM messages WHERE company_id = #{self.id} GROUP BY DATE(created_at AT TIME ZONE '-08:00'), user_id;") | |
messages_per_day_per_user = {} | |
res.each do |row| | |
user_id = row["user_id"] | |
messages_per_day_per_user[user_id] ||= [] | |
day = row["day"].to_s | |
amount = row["amount"].to_i | |
messages_per_day_per_user[user_id] << { day: day, amount: amount } | |
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def calculate_response_time | |
Message.connection.execute(" | |
SELECT AVG(q3.response_time) AS average, DATE(created_at AT TIME ZONE '-08:00') AS day FROM | |
(SELECT q2.* FROM | |
(SELECT q1.*, q1.created_at - LEAD(created_at) OVER (PARTITION BY customer_id ORDER BY created_at) AS response_time FROM | |
(SELECT m.*, LEAD(direction) OVER (PARTITION BY customer_id ORDER BY created_at) AS next_direction FROM messages m | |
WHERE company_id = 2 AND via_api = false AND mass_message_id IS NULL) AS q1 | |
WHERE q1.direction <> q1.next_direction AND q1.next_direction IS NOT NULL) AS q2 | |
WHERE q2.direction = 'received') AS q3 | |
GROUP BY DATE(created_at AT TIME ZONE '-08:00') |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{"average"=>"-30 days -24:07:39.67514", "day"=>"2014-04-09"} | |
{"average"=>nil, "day"=>"2014-04-10"} | |
{"average"=>"-18 days -11:59:25.252155", "day"=>"2014-04-11"} | |
{"average"=>"-52 days -20:15:16.493404", "day"=>"2014-04-12"} | |
{"average"=>"-1 days -13:53:25.881951", "day"=>"2014-04-13"} | |
{"average"=>"-21 days -26:31:47.568003", "day"=>"2014-04-14"} | |
{"average"=>"-20 days -09:51:19.84725", "day"=>"2014-04-15"} | |
{"average"=>"-25 days -25:40:46.853917", "day"=>"2014-04-16"} | |
{"average"=>"-23 days -23:41:32.584254", "day"=>"2014-04-17"} | |
{"average"=>"-23 days -13:32:31.002631", "day"=>"2014-04-18"} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{"average"=>"-03:29:36.622436", "day"=>"2014-10-25"} | |
{"average"=>"-19:18:16.957437", "day"=>"2015-01-11"} | |
{"average"=>"-7 days -07:39:57.416137", "day"=>"2014-09-20"} | |
{"average"=>"-12:27:04.902307", "day"=>"2014-11-13"} | |
{"average"=>"-2 days -26:33:49.611325", "day"=>"2014-09-22"} | |
{"average"=>"-4 days -26:24:29.228502", "day"=>"2014-09-21"} | |
{"average"=>"-12:29:43.323986", "day"=>"2014-10-17"} | |
{"average"=>"-21:08:21.888295", "day"=>"2014-10-04"} | |
{"average"=>"-7 days -23:22:35.682252", "day"=>"2014-09-13"} | |
{"average"=>"-6 days -10:23:57.00454", "day"=>"2014-09-01"} |