# Copyright (C) 2012-2016 Zammad Foundation, http://zammad-foundation.org/ class FirstStepsController < ApplicationController prepend_before_action :authentication_check def index 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.positive? twitter_active = true end facebook_active = false if Channel.where(area: 'Facebook::Account').count.positive? facebook_active = true end email_active = false if Channel.where(area: 'Email::Account').count.positive? email_active = true end text_module_active = false 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, 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', }, ], }, ] 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, location: '#', class: 'js-testTicket', }, { name: 'Invite customers to create issues in Zammad', checked: invite_customers, location: '#', class: 'js-inviteCustomer', }, ], }, ] check_availability(result) render json: result end 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::Mailer.template( template: 'test_ticket', locale: agent.preferences[:locale] || Setting.get('locale_default') || '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, name: 'Users').id, customer_id: customer.id, title: result[:subject], ) 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.permissions?(['admin', 'ticket.agent']) 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, name: 'Users').count.zero? test_ticket_active = false end return result if test_ticket_active result.each do |item| items = [] item[:items].each do |local_item| next if local_item[:name] == 'Create a Test Ticket' items.push local_item end item[:items] = items end result end end