trabajo-afectivo/app/controllers/first_steps_controller.rb

261 lines
6.3 KiB
Ruby
Raw Normal View History

# Copyright (C) 2012-2014 Zammad Foundation, http://zammad-foundation.org/
class FirstStepsController < ApplicationController
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
if Channel.where(area: 'Twitter::Account').count > 0
twitter_active = true
end
facebook_active = false
if Channel.where(area: 'Facebook::Account').count > 0
facebook_active = true
end
email_active = false
if Channel.where(area: 'Email::Account').count > 0
email_active = true
end
text_module_active = false
if TextModule.count > 0
text_module_active = true
end
macro_active = false
if Macro.count > 1
macro_active = true
end
if current_user.role?('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/Colleges 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 Overviews',
checked: false,
location: '#manage/overviews',
},
{
name: 'Create Text Modues',
checked: text_module_active,
location: '#manage/text_modules',
},
{
name: 'Create Macros',
checked: macro_active,
location: '#manage/macros',
},
],
},
{
name: 'Additionals 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
result = NotificationFactory.template(
template: 'test_ticket',
locale: agent.preferences[:locale] || 'en-us',
objects: {
agent: agent,
customer: customer,
},
raw: true,
)
UserInfo.current_user_id = customer.id
ticket = Ticket.create(
group_id: Group.find_by(active: true).id,
customer_id: customer.id,
owner_id: User.find_by(login: '-').id,
title: result[:subject],
state_id: Ticket::State.find_by(name: 'new').id,
priority_id: Ticket::Priority.find_by(name: '2 normal').id,
)
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],
content_type: 'text/html',
internal: false,
)
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,
}
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.role?(%w(Agent Admin))
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
if Group.where(active: true).count > 1
test_ticket_active = false
end
return result if test_ticket_active
result.each {|item|
items = []
item[:items].each {|local_item|
next if local_item[:name] == 'Create a Test Ticket'
items.push local_item
}
item[:items] = items
}
result
end
end