diff --git a/server/controllers/staff/edit.php b/server/controllers/staff/edit.php index ac7ab89f..6b7e0262 100755 --- a/server/controllers/staff/edit.php +++ b/server/controllers/staff/edit.php @@ -18,6 +18,7 @@ use Respect\Validation\Validator as DataValidator; * @apiParam {String} email The new email of the staff member. Optional. * @apiParam {String} password The new password of the staff member. Optional. * @apiParam {Number} level The new level of the staff member. Optional. + * @apiParam {Boolean} sendEmailOnNewTicket Indicates if it receives an email when a new ticket is created. * * @apiUse NO_PERMISSION * @apiUse INVALID_STAFF @@ -85,6 +86,10 @@ class EditStaffController extends Controller { if($fileUploader = $this->uploadFile(true)) { $this->staffInstance->profilePic = ($fileUploader instanceof FileUploader) ? $fileUploader->getFileName() : null; } + + if(Controller::request('sendEmailOnNewTicket') !== null && !Controller::request('staffId') ) { + $this->staffInstance->sendEmailOnNewTicket = Controller::request('sendEmailOnNewTicket'); + } $this->staffInstance->store(); } diff --git a/server/controllers/system/init-admin.php b/server/controllers/system/init-admin.php index 80f49609..1648fa0f 100755 --- a/server/controllers/system/init-admin.php +++ b/server/controllers/system/init-admin.php @@ -64,7 +64,8 @@ class InitAdminController extends Controller { 'profilePic' => '', 'level' => 3, 'sharedDepartmentList' => Department::getAll(), - 'sharedTicketList' => [] + 'sharedTicketList' => [], + 'sendEmailOnNewTicket' => 1 ]); foreach(Department::getAll() as $department) { diff --git a/server/controllers/ticket/create.php b/server/controllers/ticket/create.php index 1a28bb6b..cb080497 100755 --- a/server/controllers/ticket/create.php +++ b/server/controllers/ticket/create.php @@ -97,6 +97,13 @@ class CreateController extends Controller { if(!Controller::isUserSystemEnabled()) { $this->sendMail(); } + + $staffs = Staff::find('send_email_on_new_ticket = 1'); + foreach ($staffs as $staff) { + if($staff->sharedDepartmentList->includesId(Controller::request('departmentId'))) { + $this->sendMailStaff($staff->email); + } + } Log::createLog('CREATE_TICKET', $this->ticketNumber); Response::respondSuccess([ @@ -154,4 +161,17 @@ class CreateController extends Controller { $mailSender->send(); } + + private function sendMailStaff($email) { + $mailSender = new MailSender(); + + $mailSender->setTemplate(MailTemplate::TICKET_CREATED_STAFF, [ + 'to' => $email, + 'name' => $this->name, + 'ticketNumber' => $this->ticketNumber, + 'title' => $this->title + ]); + + $mailSender->send(); + } } diff --git a/server/data/InitialMails.php b/server/data/InitialMails.php index 2ef94d8f..cc64e735 100755 --- a/server/data/InitialMails.php +++ b/server/data/InitialMails.php @@ -380,7 +380,49 @@ class InitialMails { 'subject' => '#{{ticketNumber}} 票已关闭 - OpenSupports', 'body' => file_get_contents('data/mail-templates/ticket-closed-cn.html') ] + ], + 'TICKET_CREATED_STAFF' => [ + 'en' => [ + 'subject' => '#{{ticketNumber}} Ticket created - OpenSupports', + 'body' => file_get_contents('data/mail-templates/ticket-created-staff-en.html') + ], + 'es' => [ + 'subject' => '#{{ticketNumber}} Ticket creado - OpenSupports', + 'body' => file_get_contents('data/mail-templates/ticket-created-staff-es.html') + ], + 'de' => [ + 'subject' => '#{{ticketNumber}} Ticket erstellt - OpenSupports', + 'body' => file_get_contents('data/mail-templates/ticket-created-staff-de.html') + ], + 'fr' => [ + 'subject' => '#{{ticketNumber}} Ticket créé - OpenSupports', + 'body' => file_get_contents('data/mail-templates/ticket-created-staff-fr.html') + ], + 'in' => [ + 'subject' => '#{{ticketNumber}} tiket dibuat - OpenSupports', + 'body' => file_get_contents('data/mail-templates/ticket-created-staff-in.html') + ], + 'jp' => [ + 'subject' => '#{{ticketNumber}} チケットが作成されました - OpenSupports', + 'body' => file_get_contents('data/mail-templates/ticket-created-staff-jp.html') + ], + 'pt' => [ + 'subject' => '#{{ticketNumber}} Ticket criado - OpenSupports', + 'body' => file_get_contents('data/mail-templates/ticket-created-staff-pt.html') + ], + 'ru' => [ + 'subject' => '#{{ticketNumber}} Создан билет - OpenSupports', + 'body' => file_get_contents('data/mail-templates/ticket-created-staff-ru.html') + ], + 'tr' => [ + 'subject' => '#{{ticketNumber}} Bilet oluşturuldu - OpenSupports', + 'body' => file_get_contents('data/mail-templates/ticket-created-staff-tr.html') + ], + 'cn' => [ + 'subject' => '#{{ticketNumber}} 已创建票证 - OpenSupports', + 'body' => file_get_contents('data/mail-templates/ticket-created-staff-cn.html') ] + ] ]; } } \ No newline at end of file diff --git a/server/data/mail-templates/ticket-created-staff-cn.html b/server/data/mail-templates/ticket-created-staff-cn.html new file mode 100644 index 00000000..a9ac1fde --- /dev/null +++ b/server/data/mail-templates/ticket-created-staff-cn.html @@ -0,0 +1,378 @@ + + + + + + Support Center + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + +
+
+ + + + +
+ logo +
+
+ +
+
+
+
+ + + + + + + + + + +
+ Ticket created +
+ 用戶 {{name}}。 他創造了一個題為新票 {{title}}。 +
+ + + + +
+ + + + + + + +
+ 您可以通过其票号访问票证。 +
+ {{ticketNumber}} +
+
+
+
+
+
+ + + + +
+ OpenSupports
+ Open source ticket system
+ www.opensupports.com

+
+
+
+ + \ No newline at end of file diff --git a/server/data/mail-templates/ticket-created-staff-de.html b/server/data/mail-templates/ticket-created-staff-de.html new file mode 100644 index 00000000..697a050c --- /dev/null +++ b/server/data/mail-templates/ticket-created-staff-de.html @@ -0,0 +1,378 @@ + + + + + + Support Center + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + +
+
+ + + + +
+ logo +
+
+ +
+
+
+
+ + + + + + + + + + +
+ Ticket erstellt +
+ Der Benutzer {{name}} hat ein neues Ticket erstellt berechtigt {{title}}. +
+ + + + +
+ + + + + + + +
+ Sie können das Ticket nach der Fahrkartennummer erreichen. +
+ {{ticketNumber}} +
+
+
+
+
+
+ + + + +
+ OpenSupports
+ Open source ticket system
+ www.opensupports.com

+
+
+
+ + \ No newline at end of file diff --git a/server/data/mail-templates/ticket-created-staff-en.html b/server/data/mail-templates/ticket-created-staff-en.html new file mode 100644 index 00000000..01d13c76 --- /dev/null +++ b/server/data/mail-templates/ticket-created-staff-en.html @@ -0,0 +1,378 @@ + + + + + + Support Center + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + +
+
+ + + + +
+ logo +
+
+ +
+
+
+
+ + + + + + + + + + +
+ Ticket created +
+ User {{name}} has created a new ticket titled {{title}}. +
+ + + + +
+ + + + + + + +
+ You can access to the ticket by its ticket number. +
+ {{ticketNumber}} +
+
+
+
+
+
+ + + + +
+ OpenSupports
+ Open source ticket system
+ www.opensupports.com

+
+
+
+ + \ No newline at end of file diff --git a/server/data/mail-templates/ticket-created-staff-es.html b/server/data/mail-templates/ticket-created-staff-es.html new file mode 100644 index 00000000..b5a511eb --- /dev/null +++ b/server/data/mail-templates/ticket-created-staff-es.html @@ -0,0 +1,378 @@ + + + + + + Support Center + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + +
+
+ + + + +
+ logo +
+
+ +
+
+
+
+ + + + + + + + + + +
+ Ticket creado +
+ El usuario {{name}} ha creado un nuevo ticket titulado {{title}}. +
+ + + + +
+ + + + + + + +
+ Puedes ver el ticket usando el numero de ticket prensentado abajo. +
+ {{ticketNumber}} +
+
+
+
+
+
+ + + + +
+ OpenSupports
+ Open source ticket system
+ www.opensupports.com

+
+
+
+ + \ No newline at end of file diff --git a/server/data/mail-templates/ticket-created-staff-fr.html b/server/data/mail-templates/ticket-created-staff-fr.html new file mode 100644 index 00000000..f38dff7f --- /dev/null +++ b/server/data/mail-templates/ticket-created-staff-fr.html @@ -0,0 +1,378 @@ + + + + + + Support Center + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + +
+
+ + + + +
+ logo +
+
+ +
+
+
+
+ + + + + + + + + + +
+ Ticket créé +
+ L'utilisateur {{name}}. a créé un nouveau poste intitulé {{title}}. +
+ + + + +
+ + + + + + + +
+ Vous pouvez accéder au billet par son numéro de ticket. +
+ {{ticketNumber}} +
+
+
+
+
+
+ + + + +
+ OpenSupports
+ Open source ticket system
+ www.opensupports.com

+
+
+
+ + \ No newline at end of file diff --git a/server/data/mail-templates/ticket-created-staff-in.html b/server/data/mail-templates/ticket-created-staff-in.html new file mode 100644 index 00000000..89350bf2 --- /dev/null +++ b/server/data/mail-templates/ticket-created-staff-in.html @@ -0,0 +1,378 @@ + + + + + + Support Center + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + +
+
+ + + + +
+ logo +
+
+ +
+
+
+
+ + + + + + + + + + +
+ टिकट बनाया +
+ उपयोगकर्ता {{name}} हकदार एक नया पद बनाया गया है {{title}}. +
+ + + + +
+ + + + + + + +
+ आप अपने टिकट नंबर से टिकट तक पहुंच सकते हैं। +
+ {{ticketNumber}} +
+
+
+
+
+
+ + + + +
+ OpenSupports
+ Open source ticket system
+ www.opensupports.com

+
+
+
+ + \ No newline at end of file diff --git a/server/data/mail-templates/ticket-created-staff-jp.html b/server/data/mail-templates/ticket-created-staff-jp.html new file mode 100644 index 00000000..9e0e50a3 --- /dev/null +++ b/server/data/mail-templates/ticket-created-staff-jp.html @@ -0,0 +1,378 @@ + + + + + + Support Center + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + +
+
+ + + + +
+ logo +
+
+ +
+
+
+
+ + + + + + + + + + +
+ チケットが作成されました +
+ ユーザーは {{name}} 彼は題した新しいチケットを作成しました {{title}}。 +
+ + + + +
+ + + + + + + +
+ そのチケット番号でチケットにアクセスできます。 +
+ {{ticketNumber}} +
+
+
+
+
+
+ + + + +
+ OpenSupports
+ Open source ticket system
+ www.opensupports.com

+
+
+
+ + \ No newline at end of file diff --git a/server/data/mail-templates/ticket-created-staff-pt.html b/server/data/mail-templates/ticket-created-staff-pt.html new file mode 100644 index 00000000..9b8fa947 --- /dev/null +++ b/server/data/mail-templates/ticket-created-staff-pt.html @@ -0,0 +1,378 @@ + + + + + + Support Center + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + +
+
+ + + + +
+ logo +
+
+ +
+
+
+
+ + + + + + + + + + +
+ Ticket criado +
+ O usuário {{name}} criou um novo bilhete de direito {{title}}. +
+ + + + +
+ + + + + + + +
+ Você pode acessar o bilhete pelo seu número de bilhete. +
+ {{ticketNumber}} +
+
+
+
+
+
+ + + + +
+ OpenSupports
+ Open source ticket system
+ www.opensupports.com

+
+
+
+ + \ No newline at end of file diff --git a/server/data/mail-templates/ticket-created-staff-ru.html b/server/data/mail-templates/ticket-created-staff-ru.html new file mode 100644 index 00000000..814a68e8 --- /dev/null +++ b/server/data/mail-templates/ticket-created-staff-ru.html @@ -0,0 +1,378 @@ + + + + + + Support Center + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + +
+
+ + + + +
+ logo +
+
+ +
+
+
+
+ + + + + + + + + + +
+ Создан билет +
+ Пользователь {{name}} создал новый билет под названием {{title}}. +
+ + + + +
+ + + + + + + +
+ Вы можете получить доступ к билету по его номеру билета. +
+ {{ticketNumber}} +
+
+
+
+
+
+ + + + +
+ OpenSupports
+ Open source ticket system
+ www.opensupports.com

+
+
+
+ + \ No newline at end of file diff --git a/server/data/mail-templates/ticket-created-staff-tr.html b/server/data/mail-templates/ticket-created-staff-tr.html new file mode 100644 index 00000000..5f29e64d --- /dev/null +++ b/server/data/mail-templates/ticket-created-staff-tr.html @@ -0,0 +1,378 @@ + + + + + + Support Center + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + +
+
+ + + + +
+ logo +
+
+ +
+
+
+
+ + + + + + + + + + +
+ Bilet oluşturuldu +
+ Kullanıcı {{name}} başlıklı yeni bir bilet yarattı {{title}} . +
+ + + + +
+ + + + + + + +
+ Bilete bilet numarasından erişebilirsiniz. +
+ {{ticketNumber}} +
+
+
+
+
+
+ + + + +
+ OpenSupports
+ Open source ticket system
+ www.opensupports.com

+
+
+
+ + \ No newline at end of file diff --git a/server/models/MailTemplate.php b/server/models/MailTemplate.php index 436b4b3f..6f1bce1f 100755 --- a/server/models/MailTemplate.php +++ b/server/models/MailTemplate.php @@ -22,6 +22,7 @@ class MailTemplate extends DataStore { const TICKET_CREATED = 'TICKET_CREATED'; const TICKET_RESPONDED = 'TICKET_RESPONDED'; const TICKET_CLOSED = 'TICKET_CLOSED'; + const TICKET_CREATED_STAFF = 'TICKET_CREATED_STAFF'; public static function getTemplate($type) { $globalLanguage = Setting::getSetting('language')->value; diff --git a/server/models/Staff.php b/server/models/Staff.php index 9681d6f5..dd448d35 100755 --- a/server/models/Staff.php +++ b/server/models/Staff.php @@ -31,14 +31,16 @@ class Staff extends DataStore { 'sharedDepartmentList', 'sharedTicketList', 'lastLogin', - 'ownStatList' + 'ownStatList', + 'sendEmailOnNewTicket' ]; } public function getDefaultProps() { return [ 'level' => 1, - 'ownStatList' => new DataStoreList() + 'ownStatList' => new DataStoreList(), + 'sendEmailOnNewTicket' => 0 ]; } @@ -55,7 +57,8 @@ class Staff extends DataStore { 'level' => $this->level, 'departments' => $this->sharedDepartmentList->toArray(), 'tickets' => $this->sharedTicketList->toArray(), - 'lastLogin' => $this->lastLogin + 'lastLogin' => $this->lastLogin , + 'sendEmailOnNewTicket' => $this->sendEmailOnNewTicket ]; } } diff --git a/tests/staff/edit.rb b/tests/staff/edit.rb index a42de635..117b7ee5 100644 --- a/tests/staff/edit.rb +++ b/tests/staff/edit.rb @@ -49,6 +49,7 @@ describe'/staff/edit' do csrf_userid: $csrf_userid, csrf_token: $csrf_token, email: 'newwstaff@opensupports.com', + sendEmailOnNewTicket: '1' }) (result['status']).should.equal('success') @@ -57,6 +58,7 @@ describe'/staff/edit' do (row['email']).should.equal('newwstaff@opensupports.com') (row['level']).should.equal('2') + (row['send_email_on_new_ticket']).should.equal('1') row = $database.getRow('department', 1, 'id') (row['owners']).should.equal('3') diff --git a/tests/system/get-mail-templates.rb b/tests/system/get-mail-templates.rb index 34dd2600..97a63e65 100644 --- a/tests/system/get-mail-templates.rb +++ b/tests/system/get-mail-templates.rb @@ -10,6 +10,6 @@ describe'system/get-mail-templates' do (result['status']).should.equal('success') - (result['data'].size).should.equal(90) + (result['data'].size).should.equal(100) end end