trabajo-afectivo/app/models/report.rb

361 lines
9.1 KiB
Ruby
Raw Normal View History

2015-10-20 08:48:43 +00:00
class Report
def self.enabled?
2017-11-23 08:09:44 +00:00
Setting.get('es_url').present?
end
2015-10-20 08:48:43 +00:00
def self.config
config = {}
config[:metric] = {}
config[:metric][:count] = {
name: 'count',
display: 'Ticket Count',
default: true,
prio: 10_000,
}
backend = [
{
name: 'created',
display: 'Created',
selected: true,
dataDownload: true,
2015-10-29 02:33:36 +00:00
adapter: Report::TicketGenericTime,
params: { field: 'created_at' },
condition: {
'state' => {
'operator' => 'is not',
'value' => 'merged'
}
}
2015-10-20 08:48:43 +00:00
},
{
name: 'closed',
display: 'Closed',
selected: true,
dataDownload: true,
2015-10-29 02:33:36 +00:00
adapter: Report::TicketGenericTime,
params: { field: 'close_at' },
condition: {
'state' => {
'operator' => 'is not',
'value' => 'merged'
}
}
2015-10-20 08:48:43 +00:00
},
{
name: 'backlog',
display: 'Backlog',
selected: true,
dataDownload: false,
2015-10-29 09:07:45 +00:00
adapter: Report::TicketBacklog,
condition: {
'state' => {
'operator' => 'is not',
'value' => 'merged'
}
}
2015-10-20 08:48:43 +00:00
},
{
name: 'first_solution',
display: 'First Solution',
2015-10-29 02:33:36 +00:00
selected: false,
2015-10-20 08:48:43 +00:00
dataDownload: true,
2015-10-29 02:33:36 +00:00
adapter: Report::TicketFirstSolution,
condition: {
'ticket_state.name' => {
'operator' => 'is not',
'value' => 'merged'
}
}
2015-10-20 08:48:43 +00:00
},
{
2015-10-29 02:33:36 +00:00
name: 'reopened',
2017-02-03 14:43:23 +00:00
display: 'Reopened',
2015-10-20 08:48:43 +00:00
selected: false,
dataDownload: true,
2015-10-29 02:33:36 +00:00
adapter: Report::TicketReopened,
condition: {
'ticket_state.name' => {
'operator' => 'is not',
'value' => 'merged'
}
}
2015-10-20 08:48:43 +00:00
},
{
name: 'movedin',
display: 'Moved in',
selected: false,
dataDownload: true,
2015-10-29 02:33:36 +00:00
adapter: Report::TicketMoved,
params: { type: 'in' },
condition: {
'ticket_state.name' => {
'operator' => 'is not',
'value' => 'merged'
}
}
2015-10-20 08:48:43 +00:00
},
{
name: 'movedout',
display: 'Moved out',
selected: false,
dataDownload: true,
2015-10-29 02:33:36 +00:00
adapter: Report::TicketMoved,
params: { type: 'out' },
condition: {
'ticket_state.name' => {
'operator' => 'is not',
'value' => 'merged'
}
}
2015-10-29 02:33:36 +00:00
},
2015-10-20 08:48:43 +00:00
]
config[:metric][:count][:backend] = backend
config[:metric][:create_channels] = {
name: 'create_channels',
display: 'Create Channels',
prio: 9000,
}
backend = [
{
name: 'phone_in',
display: 'Phone (in)',
selected: true,
dataDownload: true,
2015-10-29 02:33:36 +00:00
adapter: Report::TicketGenericTime,
params: {
field: 'created_at',
selector: {
'create_article_type_id' => {
'operator' => 'is',
'value' => Ticket::Article::Type.lookup(name: 'phone').id,
},
'create_article_sender_id' => {
'operator' => 'is',
'value' => Ticket::Article::Sender.lookup(name: 'Customer').id,
},
},
},
2015-10-20 08:48:43 +00:00
},
{
name: 'phone_out',
display: 'Phone (out)',
selected: true,
dataDownload: true,
2015-10-29 02:33:36 +00:00
adapter: Report::TicketGenericTime,
params: {
field: 'created_at',
selector: {
'create_article_type_id' => {
'operator' => 'is',
'value' => Ticket::Article::Type.lookup(name: 'phone').id,
},
'create_article_sender_id' => {
'operator' => 'is',
'value' => Ticket::Article::Sender.lookup(name: 'Agent').id,
},
}
},
2015-10-20 08:48:43 +00:00
},
{
name: 'email_in',
display: 'Email (in)',
selected: true,
dataDownload: true,
2015-10-29 02:33:36 +00:00
adapter: Report::TicketGenericTime,
params: {
field: 'created_at',
selector: {
'create_article_type_id' => {
'operator' => 'is',
'value' => Ticket::Article::Type.lookup(name: 'email').id,
},
'create_article_sender_id' => {
'operator' => 'is',
'value' => Ticket::Article::Sender.lookup(name: 'Customer').id,
},
},
},
2015-10-20 08:48:43 +00:00
},
{
name: 'email_out',
display: 'Email (out)',
selected: true,
dataDownload: true,
2015-10-29 02:33:36 +00:00
adapter: Report::TicketGenericTime,
params: {
field: 'created_at',
selector: {
'create_article_type_id' => {
'operator' => 'is',
'value' => Ticket::Article::Type.lookup(name: 'email').id,
},
'create_article_sender_id' => {
'operator' => 'is',
'value' => Ticket::Article::Sender.lookup(name: 'Agent').id,
},
},
},
2015-10-20 08:48:43 +00:00
},
{
name: 'web_in',
display: 'Web (in)',
selected: true,
dataDownload: true,
2015-10-29 09:07:45 +00:00
adapter: Report::TicketGenericTime,
params: {
field: 'created_at',
selector: {
'create_article_type_id' => {
'operator' => 'is',
'value' => Ticket::Article::Type.lookup(name: 'web').id,
},
'create_article_sender_id' => {
'operator' => 'is',
'value' => Ticket::Article::Sender.lookup(name: 'Customer').id,
},
},
},
2015-10-20 08:48:43 +00:00
},
{
name: 'twitter_in',
display: 'Twitter (in)',
selected: true,
dataDownload: true,
2015-10-29 09:07:45 +00:00
adapter: Report::TicketGenericTime,
params: {
field: 'created_at',
selector: {
'create_article_type_id' => {
'operator' => 'is',
'value' => Ticket::Article::Type.lookup(name: 'twitter status').id,
},
'create_article_sender_id' => {
'operator' => 'is',
'value' => Ticket::Article::Sender.lookup(name: 'Customer').id,
},
},
},
},
{
name: 'twitter_out',
display: 'Twitter (out)',
selected: true,
dataDownload: true,
adapter: Report::TicketGenericTime,
params: {
field: 'created_at',
selector: {
'create_article_type_id' => {
'operator' => 'is',
'value' => Ticket::Article::Type.lookup(name: 'twitter status').id,
},
'create_article_sender_id' => {
'operator' => 'is',
'value' => Ticket::Article::Sender.lookup(name: 'Agent').id,
},
},
},
2015-10-20 08:48:43 +00:00
},
]
config[:metric][:create_channels][:backend] = backend
config[:metric][:communication] = {
name: 'communication',
display: 'Communication',
prio: 7000,
}
backend = [
{
name: 'phone_in',
display: 'Phone (in)',
selected: true,
2015-10-20 12:58:04 +00:00
dataDownload: false,
2015-10-29 09:07:45 +00:00
adapter: Report::ArticleByTypeSender,
params: {
type: 'phone',
sender: 'Customer',
},
2015-10-20 08:48:43 +00:00
},
{
name: 'phone_out',
display: 'Phone (out)',
selected: true,
2015-10-20 12:58:04 +00:00
dataDownload: false,
2015-10-29 09:07:45 +00:00
adapter: Report::ArticleByTypeSender,
params: {
type: 'phone',
sender: 'Agent',
},
2015-10-20 08:48:43 +00:00
},
{
name: 'email_in',
display: 'Email (in)',
selected: true,
2015-10-20 12:58:04 +00:00
dataDownload: false,
2015-10-29 09:07:45 +00:00
adapter: Report::ArticleByTypeSender,
params: {
type: 'email',
sender: 'Customer',
},
2015-10-20 08:48:43 +00:00
},
{
name: 'email_out',
display: 'Email (out)',
selected: true,
2015-10-20 12:58:04 +00:00
dataDownload: false,
2015-10-29 09:07:45 +00:00
adapter: Report::ArticleByTypeSender,
params: {
type: 'email',
sender: 'Agent',
},
2015-10-20 08:48:43 +00:00
},
{
name: 'web_in',
display: 'Web (in)',
selected: true,
2015-10-20 12:58:04 +00:00
dataDownload: false,
2015-10-29 09:07:45 +00:00
adapter: Report::ArticleByTypeSender,
params: {
type: 'web',
sender: 'Customer',
},
2015-10-20 08:48:43 +00:00
},
{
name: 'twitter_in',
display: 'Twitter (in)',
selected: true,
2015-10-20 12:58:04 +00:00
dataDownload: false,
2015-10-29 09:07:45 +00:00
adapter: Report::ArticleByTypeSender,
params: {
type: 'twitter status',
sender: 'Customer',
},
2015-10-20 08:48:43 +00:00
},
{
name: 'twitter_out',
display: 'Twitter (out)',
selected: true,
2015-10-20 12:58:04 +00:00
dataDownload: false,
2015-10-29 09:07:45 +00:00
adapter: Report::ArticleByTypeSender,
params: {
type: 'twitter status',
sender: 'Agent',
},
2015-10-20 08:48:43 +00:00
},
]
config[:metric][:communication][:backend] = backend
2015-10-29 18:20:22 +00:00
config[:metric].each do |metric_key, metric_value|
metric_value[:backend].each do |metric_backend|
2015-10-20 08:48:43 +00:00
metric_backend[:name] = "#{metric_key}::#{metric_backend[:name]}"
end
end
2015-10-20 08:48:43 +00:00
config
end
end