Merge remote-tracking branch 'guillermo/master'
This commit is contained in:
commit
f7ef552da1
|
@ -50,12 +50,12 @@ class AssignStaffController extends Controller {
|
||||||
$this->ticket = Ticket::getByTicketNumber($ticketNumber);
|
$this->ticket = Ticket::getByTicketNumber($ticketNumber);
|
||||||
|
|
||||||
if($this->ticket->owner) {
|
if($this->ticket->owner) {
|
||||||
Response::respondError(ERRORS::TICKET_ALREADY_ASSIGNED);
|
throw new Exception(ERRORS::TICKET_ALREADY_ASSIGNED);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!$this->ticketHasStaffDepartment()) {
|
if(!$this->ticketHasStaffDepartment()) {
|
||||||
Response::respondError(ERRORS::INVALID_DEPARTMENT);
|
throw new Exception(ERRORS::INVALID_DEPARTMENT);
|
||||||
} else {
|
} else {
|
||||||
$this->user->sharedTicketList->add($this->ticket);
|
$this->user->sharedTicketList->add($this->ticket);
|
||||||
$this->ticket->owner = $this->user;
|
$this->ticket->owner = $this->user;
|
||||||
|
|
|
@ -44,7 +44,7 @@ class UnAssignStaffController extends Controller {
|
||||||
$user = Controller::getLoggedUser();
|
$user = Controller::getLoggedUser();
|
||||||
$ticket = Ticket::getByTicketNumber($ticketNumber);
|
$ticket = Ticket::getByTicketNumber($ticketNumber);
|
||||||
|
|
||||||
if($ticket->owner && $ticket->owner->id == $user->id) {
|
if(($ticket->owner && $ticket->owner->id === $user->id) || $user->level !== 1) {
|
||||||
$user->sharedTicketList->remove($ticket);
|
$user->sharedTicketList->remove($ticket);
|
||||||
$user->store();
|
$user->store();
|
||||||
|
|
||||||
|
@ -61,7 +61,7 @@ class UnAssignStaffController extends Controller {
|
||||||
$ticket->store();
|
$ticket->store();
|
||||||
Response::respondSuccess();
|
Response::respondSuccess();
|
||||||
} else {
|
} else {
|
||||||
Response::respondError(ERRORS::NO_PERMISSION);
|
throw new Exception(ERRORS::NO_PERMISSION);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -73,6 +73,10 @@ class EditSettingsController extends Controller {
|
||||||
$allowed = json_decode(Controller::request('allowedLanguages'));
|
$allowed = json_decode(Controller::request('allowedLanguages'));
|
||||||
$supported = json_decode(Controller::request('supportedLanguages'));
|
$supported = json_decode(Controller::request('supportedLanguages'));
|
||||||
|
|
||||||
|
if (array_diff($supported, $allowed)) {
|
||||||
|
throw new Exception(ERRORS::INVALID_SUPPORTED_LANGUAGES);
|
||||||
|
}
|
||||||
|
|
||||||
foreach(Language::LANGUAGES as $languageCode) {
|
foreach(Language::LANGUAGES as $languageCode) {
|
||||||
$language = Language::getDataStore($languageCode, 'code');
|
$language = Language::getDataStore($languageCode, 'code');
|
||||||
|
|
||||||
|
|
|
@ -52,8 +52,8 @@ class ChangeDepartmentController extends Controller {
|
||||||
$department = Department::getDataStore($departmentId);
|
$department = Department::getDataStore($departmentId);
|
||||||
$user = Controller::getLoggedUser();
|
$user = Controller::getLoggedUser();
|
||||||
|
|
||||||
if($ticket->owner && $ticket->owner->id !== $user->id){
|
if($ticket->owner && $ticket->owner->id !== $user->id || $user->level === 1){
|
||||||
Response::respondError(ERRORS::NO_PERMISSION);
|
throw new Exception(ERRORS::NO_PERMISSION);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -66,11 +66,21 @@ class ChangeDepartmentController extends Controller {
|
||||||
$ticket->addEvent($event);
|
$ticket->addEvent($event);
|
||||||
$ticket->department = $department;
|
$ticket->department = $department;
|
||||||
$ticket->unread = true;
|
$ticket->unread = true;
|
||||||
if(!Controller::getLoggedUser()->sharedDepartmentList->includesId($department->id)) {
|
|
||||||
$ticket->owner = null;
|
|
||||||
}
|
|
||||||
$ticket->store();
|
$ticket->store();
|
||||||
|
|
||||||
|
if(!Controller::getLoggedUser()->sharedDepartmentList->includesId($department->id)) {
|
||||||
|
Controller::setDataRequester(function ($key) use ($ticketNumber) {
|
||||||
|
if($key === 'ticketNumber') {
|
||||||
|
return $ticketNumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
});
|
||||||
|
$unAssignTicketController = new UnAssignStaffController();
|
||||||
|
$unAssignTicketController->validate();
|
||||||
|
$unAssignTicketController->handler();
|
||||||
|
}
|
||||||
|
|
||||||
Log::createLog('DEPARTMENT_CHANGED', $ticket->ticketNumber);
|
Log::createLog('DEPARTMENT_CHANGED', $ticket->ticketNumber);
|
||||||
|
|
||||||
Response::respondSuccess();
|
Response::respondSuccess();
|
||||||
|
|
|
@ -194,6 +194,7 @@ class ERRORS {
|
||||||
const INVALID_CAPTCHA = 'INVALID_CAPTCHA';
|
const INVALID_CAPTCHA = 'INVALID_CAPTCHA';
|
||||||
const INVALID_TICKET_EVENT = 'INVALID_TICKET_EVENT';
|
const INVALID_TICKET_EVENT = 'INVALID_TICKET_EVENT';
|
||||||
const INVALID_LANGUAGE = 'INVALID_LANGUAGE';
|
const INVALID_LANGUAGE = 'INVALID_LANGUAGE';
|
||||||
|
const INVALID_SUPPORTED_LANGUAGES = 'INVALID_SUPPORTED_LANGUAGES';
|
||||||
const TICKET_ALREADY_ASSIGNED = 'TICKET_ALREADY_ASSIGNED';
|
const TICKET_ALREADY_ASSIGNED = 'TICKET_ALREADY_ASSIGNED';
|
||||||
const INVALID_PRIORITY = 'INVALID_PRIORITY';
|
const INVALID_PRIORITY = 'INVALID_PRIORITY';
|
||||||
const INVALID_PAGE = 'INVALID_PAGE';
|
const INVALID_PAGE = 'INVALID_PAGE';
|
||||||
|
|
|
@ -16,6 +16,26 @@ class Scripts
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def self.createStaff(email, password, name, level='1')
|
||||||
|
departments = request('/system/get-settings', {
|
||||||
|
csrf_userid: $csrf_userid,
|
||||||
|
csrf_token: $csrf_token
|
||||||
|
})['departments']
|
||||||
|
departments = departments.collect { |x| x.id }
|
||||||
|
|
||||||
|
response = request('/staff/add', {
|
||||||
|
:name => name,
|
||||||
|
:email => email,
|
||||||
|
:password => password,
|
||||||
|
:level => level,
|
||||||
|
:departments => departments.to_string
|
||||||
|
})
|
||||||
|
|
||||||
|
if response['status'] === 'fail'
|
||||||
|
raise response['message']
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def self.login(email = 'steve@jobs.com', password = 'custompassword', staff = false)
|
def self.login(email = 'steve@jobs.com', password = 'custompassword', staff = false)
|
||||||
request('/user/logout')
|
request('/user/logout')
|
||||||
response = request('/user/login', {
|
response = request('/user/login', {
|
||||||
|
|
|
@ -7,8 +7,21 @@ describe '/staff/un-assign-ticket' do
|
||||||
#it 'should fail if staff is not assign to the ticket'do
|
#it 'should fail if staff is not assign to the ticket'do
|
||||||
|
|
||||||
#end
|
#end
|
||||||
|
it 'should fail if ticket is not yours and you are a staff level 1' do
|
||||||
|
$database.query('update staff set level="1" where id="1";')
|
||||||
|
ticket = $database.getRow('ticket', 1 , 'id')
|
||||||
|
result = request('/staff/un-assign-ticket', {
|
||||||
|
ticketNumber: ticket['ticket_number'],
|
||||||
|
csrf_userid: $csrf_userid,
|
||||||
|
csrf_token: $csrf_token
|
||||||
|
})
|
||||||
|
|
||||||
it 'should un assign ticket if everything is okey' do
|
(result['status']).should.equal('fail')
|
||||||
|
(result['message']).should.equal('NO_PERMISSION')
|
||||||
|
$database.query('update staff set level="3" where id="1";')
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'should unassign ticket if it is the current owner' do
|
||||||
ticket = $database.getRow('ticket', 1 , 'id')
|
ticket = $database.getRow('ticket', 1 , 'id')
|
||||||
result = request('/staff/un-assign-ticket', {
|
result = request('/staff/un-assign-ticket', {
|
||||||
ticketNumber: ticket['ticket_number'],
|
ticketNumber: ticket['ticket_number'],
|
||||||
|
@ -28,15 +41,34 @@ describe '/staff/un-assign-ticket' do
|
||||||
(staff_ticket).should.equal(nil)
|
(staff_ticket).should.equal(nil)
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'should fail if ticket is not yours' do
|
it 'should unassign ticket if you are a staff level 3' do
|
||||||
|
Scripts.createStaff('staff_level_1', 'password', 'maxi')
|
||||||
|
Scripts.logout()
|
||||||
|
Scripts.login('staff_level_1',)
|
||||||
ticket = $database.getRow('ticket', 1 , 'id')
|
ticket = $database.getRow('ticket', 1 , 'id')
|
||||||
|
request('/staff/assign-ticket', {
|
||||||
|
ticketNumber: ticket['ticket_number'],
|
||||||
|
csrf_userid: $csrf_userid,
|
||||||
|
csrf_token: $csrf_token
|
||||||
|
})
|
||||||
|
Scripts.logout()
|
||||||
|
Scripts.login($staff[:email], $staff[:password], true)
|
||||||
result = request('/staff/un-assign-ticket', {
|
result = request('/staff/un-assign-ticket', {
|
||||||
ticketNumber: ticket['ticket_number'],
|
ticketNumber: ticket['ticket_number'],
|
||||||
csrf_userid: $csrf_userid,
|
csrf_userid: $csrf_userid,
|
||||||
csrf_token: $csrf_token
|
csrf_token: $csrf_token
|
||||||
})
|
})
|
||||||
|
|
||||||
(result['status']).should.equal('fail')
|
(result['status']).should.equal('success')
|
||||||
(result['message']).should.equal('NO_PERMISSION')
|
|
||||||
|
ticket = $database.getRow('ticket', 1 , 'id')
|
||||||
|
|
||||||
|
(ticket['owner_id']).should.equal(nil)
|
||||||
|
(ticket['unread']).should.equal('1')
|
||||||
|
|
||||||
|
staff_ticket = $database.getRow('staff_ticket', 1 , 'id')
|
||||||
|
|
||||||
|
(staff_ticket).should.equal(nil)
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
|
@ -37,6 +37,20 @@ describe'system/edit-settings' do
|
||||||
|
|
||||||
request('/user/logout')
|
request('/user/logout')
|
||||||
end
|
end
|
||||||
|
it 'should fail if supported languages are invalid' do
|
||||||
|
request('/user/logout')
|
||||||
|
Scripts.login($staff[:email], $staff[:password], true)
|
||||||
|
|
||||||
|
result= request('/system/edit-settings', {
|
||||||
|
"csrf_userid" => $csrf_userid,
|
||||||
|
"csrf_token" => $csrf_token,
|
||||||
|
"supportedLanguages" => '["en", "pt", "jp", "ru", "de"]',
|
||||||
|
"allowedLanguages" => '["en", "pt", "jp", "ru"]'
|
||||||
|
})
|
||||||
|
|
||||||
|
(result['status']).should.equal('fail')
|
||||||
|
(result['message']).should.equal('INVALID_SUPPORTED_LANGUAGES')
|
||||||
|
end
|
||||||
it 'should change allowed and supported languages' do
|
it 'should change allowed and supported languages' do
|
||||||
request('/user/logout')
|
request('/user/logout')
|
||||||
Scripts.login($staff[:email], $staff[:password], true)
|
Scripts.login($staff[:email], $staff[:password], true)
|
||||||
|
@ -45,7 +59,7 @@ describe'system/edit-settings' do
|
||||||
"csrf_userid" => $csrf_userid,
|
"csrf_userid" => $csrf_userid,
|
||||||
"csrf_token" => $csrf_token,
|
"csrf_token" => $csrf_token,
|
||||||
"supportedLanguages" => '["en", "pt", "jp", "ru"]',
|
"supportedLanguages" => '["en", "pt", "jp", "ru"]',
|
||||||
"allowedLanguages" => '["en","pt", "jp", "ru", "de"]'
|
"allowedLanguages" => '["en", "pt", "jp", "ru", "de"]'
|
||||||
})
|
})
|
||||||
|
|
||||||
(result['status']).should.equal('success')
|
(result['status']).should.equal('success')
|
||||||
|
|
|
@ -13,62 +13,62 @@ describe'/system/get-stats' do
|
||||||
|
|
||||||
#day 1
|
#day 1
|
||||||
for i in 0..5
|
for i in 0..5
|
||||||
$database.query("INSERT INTO log VALUES('', 'SIGNUP', NULL, " + yesterday3 + ", NULL, NULL, NULL);")
|
$database.query("INSERT INTO log VALUES(NULL, 'SIGNUP', NULL, " + yesterday3 + ", NULL, NULL, NULL);")
|
||||||
end
|
end
|
||||||
for i in 0..0
|
for i in 0..0
|
||||||
$database.query("INSERT INTO log VALUES('', 'CREATE_TICKET', NULL, " + yesterday3 + ", NULL, NULL, NULL);")
|
$database.query("INSERT INTO log VALUES(NULL, 'CREATE_TICKET', NULL, " + yesterday3 + ", NULL, NULL, NULL);")
|
||||||
end
|
end
|
||||||
for i in 0..1
|
for i in 0..1
|
||||||
$database.query("INSERT INTO log VALUES('', 'CLOSE', NULL, " + yesterday3 + ", NULL, NULL, NULL);")
|
$database.query("INSERT INTO log VALUES(NULL, 'CLOSE', NULL, " + yesterday3 + ", NULL, NULL, NULL);")
|
||||||
end
|
end
|
||||||
for i in 0..2
|
for i in 0..2
|
||||||
$database.query("INSERT INTO log VALUES('', 'COMMENT', NULL, " + yesterday3 + ", NULL, NULL, NULL);")
|
$database.query("INSERT INTO log VALUES(NULL, 'COMMENT', NULL, " + yesterday3 + ", NULL, NULL, NULL);")
|
||||||
end
|
end
|
||||||
for i in 0..8
|
for i in 0..8
|
||||||
$database.query("INSERT INTO ticketevent VALUES('', 'CLOSE', NULL, NULL, " + yesterday3 + ", NULL, NULL, 1);")
|
$database.query("INSERT INTO ticketevent VALUES(NULL, 'CLOSE', NULL, NULL, " + yesterday3 + ", NULL, NULL, 1);")
|
||||||
end
|
end
|
||||||
for i in 0..4
|
for i in 0..4
|
||||||
$database.query("INSERT INTO ticketevent VALUES('', 'ASSIGN', NULL, NULL, " + yesterday3 + ", NULL, NULL, 1);")
|
$database.query("INSERT INTO ticketevent VALUES(NULL, 'ASSIGN', NULL, NULL, " + yesterday3 + ", NULL, NULL, 1);")
|
||||||
end
|
end
|
||||||
|
|
||||||
#day 2
|
#day 2
|
||||||
for i in 0..7
|
for i in 0..7
|
||||||
$database.query("INSERT INTO log VALUES('', 'SIGNUP', NULL, " + yesterday2 + ", NULL, NULL, NULL);")
|
$database.query("INSERT INTO log VALUES(NULL, 'SIGNUP', NULL, " + yesterday2 + ", NULL, NULL, NULL);")
|
||||||
end
|
end
|
||||||
for i in 0..2
|
for i in 0..2
|
||||||
$database.query("INSERT INTO log VALUES('', 'CREATE_TICKET', NULL, " + yesterday2 + ", NULL, NULL, NULL);")
|
$database.query("INSERT INTO log VALUES(NULL, 'CREATE_TICKET', NULL, " + yesterday2 + ", NULL, NULL, NULL);")
|
||||||
end
|
end
|
||||||
for i in 0..9
|
for i in 0..9
|
||||||
$database.query("INSERT INTO log VALUES('', 'CLOSE', NULL, " + yesterday2 + ", NULL, NULL, NULL);")
|
$database.query("INSERT INTO log VALUES(NULL, 'CLOSE', NULL, " + yesterday2 + ", NULL, NULL, NULL);")
|
||||||
end
|
end
|
||||||
for i in 0..2
|
for i in 0..2
|
||||||
$database.query("INSERT INTO log VALUES('', 'COMMENT', NULL, " + yesterday2 + ", NULL, NULL, NULL);")
|
$database.query("INSERT INTO log VALUES(NULL, 'COMMENT', NULL, " + yesterday2 + ", NULL, NULL, NULL);")
|
||||||
end
|
end
|
||||||
for i in 0..10
|
for i in 0..10
|
||||||
$database.query("INSERT INTO ticketevent VALUES('', 'CLOSE', NULL, NULL, " + yesterday2 + ", NULL, NULL, 1);")
|
$database.query("INSERT INTO ticketevent VALUES(NULL, 'CLOSE', NULL, NULL, " + yesterday2 + ", NULL, NULL, 1);")
|
||||||
end
|
end
|
||||||
for i in 0..2
|
for i in 0..2
|
||||||
$database.query("INSERT INTO ticketevent VALUES('', 'ASSIGN', NULL, NULL, " + yesterday2 + ", NULL, NULL, 1);")
|
$database.query("INSERT INTO ticketevent VALUES(NULL, 'ASSIGN', NULL, NULL, " + yesterday2 + ", NULL, NULL, 1);")
|
||||||
end
|
end
|
||||||
|
|
||||||
#day 3
|
#day 3
|
||||||
for i in 0..0
|
for i in 0..0
|
||||||
$database.query("INSERT INTO log VALUES('', 'SIGNUP', NULL, " + yesterday + ", NULL, NULL, NULL);")
|
$database.query("INSERT INTO log VALUES(NULL, 'SIGNUP', NULL, " + yesterday + ", NULL, NULL, NULL);")
|
||||||
end
|
end
|
||||||
for i in 0..1
|
for i in 0..1
|
||||||
$database.query("INSERT INTO log VALUES('', 'CREATE_TICKET', NULL, " + yesterday + ", NULL, NULL, NULL);")
|
$database.query("INSERT INTO log VALUES(NULL, 'CREATE_TICKET', NULL, " + yesterday + ", NULL, NULL, NULL);")
|
||||||
end
|
end
|
||||||
for i in 0..4
|
for i in 0..4
|
||||||
$database.query("INSERT INTO log VALUES('', 'CLOSE', NULL, " + yesterday + ", NULL, NULL, NULL);")
|
$database.query("INSERT INTO log VALUES(NULL, 'CLOSE', NULL, " + yesterday + ", NULL, NULL, NULL);")
|
||||||
end
|
end
|
||||||
for i in 0..7
|
for i in 0..7
|
||||||
$database.query("INSERT INTO log VALUES('', 'COMMENT', NULL, " + yesterday + ", NULL, NULL, NULL);")
|
$database.query("INSERT INTO log VALUES(NULL, 'COMMENT', NULL, " + yesterday + ", NULL, NULL, NULL);")
|
||||||
end
|
end
|
||||||
for i in 0..3
|
for i in 0..3
|
||||||
$database.query("INSERT INTO ticketevent VALUES('', 'CLOSE', NULL, NULL, " + yesterday + ", NULL, NULL, 1);")
|
$database.query("INSERT INTO ticketevent VALUES(NULL, 'CLOSE', NULL, NULL, " + yesterday + ", NULL, NULL, 1);")
|
||||||
end
|
end
|
||||||
for i in 0..7
|
for i in 0..7
|
||||||
$database.query("INSERT INTO ticketevent VALUES('', 'ASSIGN', NULL, NULL, " + yesterday + ", NULL, NULL, 1);")
|
$database.query("INSERT INTO ticketevent VALUES(NULL, 'ASSIGN', NULL, NULL, " + yesterday + ", NULL, NULL, 1);")
|
||||||
end
|
end
|
||||||
|
|
||||||
@result = request('/system/get-stats', {
|
@result = request('/system/get-stats', {
|
||||||
|
|
Loading…
Reference in New Issue