trabajo-afectivo/app/controllers/first_steps_controller.rb

261 lines
6.5 KiB
Ruby
Raw Normal View History

2016-10-19 03:11:36 +00:00
# Copyright (C) 2012-2016 Zammad Foundation, http://zammad-foundation.org/
class FirstStepsController < ApplicationController
prepend_before_action :authentication_check
def index
2016-02-29 23:52:51 +00:00
return if !access?
invite_agents = false
#if User.of_role('Agent').count > 2
# invite_agents = true
#end
invite_customers = false
#if User.of_role('Customer').count > 2
# invite_customers = true
#end
chat_active = false
if Setting.get('chat')
chat_active = true
end
from_active = false
if Setting.get('form_ticket_create')
from_active = true
end
twitter_active = false
2016-10-24 21:59:18 +00:00
if Channel.where(area: 'Twitter::Account').count.positive?
twitter_active = true
end
facebook_active = false
2016-10-24 21:59:18 +00:00
if Channel.where(area: 'Facebook::Account').count.positive?
facebook_active = true
end
email_active = false
2016-10-24 21:59:18 +00:00
if Channel.where(area: 'Email::Account').count.positive?
email_active = true
end
text_module_active = false
2016-10-24 21:59:18 +00:00
if TextModule.count.positive?
text_module_active = true
end
macro_active = false
if Macro.count > 1
macro_active = true
end
if current_user.permissions?('admin')
result = [
{
name: 'Configuration',
items: [
{
name: 'Branding',
checked: true,
location: '#settings/branding',
},
{
name: 'Your Email Configuration',
checked: email_active,
location: '#channels/email',
},
{
name: 'Invite agents/colleagues to help working on tickets',
checked: invite_agents,
location: '#',
class: 'js-inviteAgent',
},
{
name: 'Invite customers to create issues in Zammad',
checked: invite_customers,
location: '#',
class: 'js-inviteCustomer',
},
],
},
{
name: 'How to use it',
items: [
{
name: 'Intro',
checked: true,
location: '#clues',
},
{
name: 'Create a Test Ticket',
checked: false,
2016-02-29 23:52:51 +00:00
location: '#',
class: 'js-testTicket',
},
{
name: 'Create Text Modules',
checked: text_module_active,
location: '#manage/text_modules',
},
{
name: 'Create Macros',
checked: macro_active,
location: '#manage/macros',
},
#{
# name: 'Create Overviews',
# checked: false,
# location: '#manage/overviews',
#},
],
},
{
name: 'Additional Channels',
items: [
{
name: 'Twitter',
checked: twitter_active,
location: '#channels/twitter',
},
{
name: 'Facebook',
checked: facebook_active,
location: '#channels/facebook',
},
{
name: 'Chat',
checked: chat_active,
location: '#channels/chat',
},
{
name: 'Online Forms',
checked: from_active,
location: '#channels/form',
},
],
},
]
2016-02-29 23:52:51 +00:00
check_availability(result)
render json: result
return
end
result = [
{
name: 'How to use it',
items: [
{
name: 'Intro',
checked: true,
location: '#clues',
},
{
name: 'Create a Test Ticket',
checked: false,
2016-02-29 23:52:51 +00:00
location: '#',
class: 'js-testTicket',
},
{
name: 'Invite customers to create issues in Zammad',
checked: invite_customers,
location: '#',
class: 'js-inviteCustomer',
},
],
},
]
2016-02-29 23:52:51 +00:00
check_availability(result)
render json: result
end
2016-02-29 23:52:51 +00:00
def test_ticket
return if !access?
agent = current_user
customer = test_customer
from = "#{customer.fullname} <#{customer.email}>"
original_user_id = UserInfo.current_user_id
2016-04-13 23:40:37 +00:00
result = NotificationFactory::Mailer.template(
2016-02-29 23:52:51 +00:00
template: 'test_ticket',
locale: agent.preferences[:locale] || Setting.get('locale_default') || 'en-us',
2016-02-29 23:52:51 +00:00
objects: {
agent: agent,
2016-02-29 23:52:51 +00:00
customer: customer,
},
raw: true,
2016-02-29 23:52:51 +00:00
)
UserInfo.current_user_id = customer.id
2017-06-16 23:02:13 +00:00
ticket = Ticket.create!(
group_id: Group.find_by(active: true, name: 'Users').id,
2016-02-29 23:52:51 +00:00
customer_id: customer.id,
title: result[:subject],
2016-02-29 23:52:51 +00:00
)
2017-06-16 23:02:13 +00:00
article = Ticket::Article.create!(
ticket_id: ticket.id,
type_id: Ticket::Article::Type.find_by(name: 'phone').id,
sender_id: Ticket::Article::Sender.find_by(name: 'Customer').id,
from: from,
body: result[:body],
2016-02-29 23:52:51 +00:00
content_type: 'text/html',
internal: false,
2016-02-29 23:52:51 +00:00
)
UserInfo.current_user_id = original_user_id
overview = test_overview
assets = ticket.assets({})
assets = article.assets(assets)
assets = overview.assets(assets)
render json: {
overview_id: overview.id,
ticket_id: ticket.id,
assets: assets,
2016-02-29 23:52:51 +00:00
}
end
private
def test_overview
Overview.find_by(name: 'Unassigned & Open')
end
def test_customer
User.find_by(login: 'nicole.braun@zammad.org')
end
def access?
return true if current_user.permissions?(['admin', 'ticket.agent'])
2016-02-29 23:52:51 +00:00
render json: []
false
end
def check_availability(result)
test_ticket_active = true
overview = test_overview
if !overview
test_ticket_active = false
elsif overview.updated_by_id != 1
test_ticket_active = false
end
if !test_customer
test_ticket_active = false
end
2016-07-26 22:02:28 +00:00
if Group.where(active: true, name: 'Users').count.zero?
2016-02-29 23:52:51 +00:00
test_ticket_active = false
end
return result if test_ticket_active
result.each do |item|
2016-02-29 23:52:51 +00:00
items = []
item[:items].each do |local_item|
2016-02-29 23:52:51 +00:00
next if local_item[:name] == 'Create a Test Ticket'
2016-02-29 23:52:51 +00:00
items.push local_item
end
2016-02-29 23:52:51 +00:00
item[:items] = items
end
2016-02-29 23:52:51 +00:00
result
end
end