opensupports/server/models/Staff.php

80 lines
2.6 KiB
PHP
Raw Normal View History

2016-09-24 21:26:37 +02:00
<?php
2017-04-21 05:34:20 +02:00
/**
* @api {OBJECT} Staff Staff
2022-01-04 17:24:06 +01:00
* @apiVersion 4.11.0
2017-04-21 05:34:20 +02:00
* @apiGroup Data Structures
2017-05-11 21:37:03 +02:00
* @apiParam {String} name Name of the staff member.
* @apiParam {String} email Email of the staff member.
* @apiParam {String} profilePic profilePic url of the staff member.
* @apiParam {Number} level Level of the staff member.
* @apiParam {Object[]} departments The departments the staff member has assigned.
* @apiParam {[Ticket](#api-Data_Structures-ObjectTicket)[]} tickets The tickets the staff member has assigned.
* @apiParam {Number} lastLogin The last login of the staff member.
* @apiParam {Boolean} sendEmailOnNewTicket Indicates the staff member receives a mail when a ticket is created.
2017-04-21 05:34:20 +02:00
*/
2016-09-24 21:26:37 +02:00
class Staff extends DataStore {
const TABLE = 'staff';
public static function authenticate($userEmail, $userPassword) {
$user = Staff::getUser($userEmail, 'email');
return ($user && Hashing::verifyPassword($userPassword, $user->password)) ? $user : new NullDataStore();
}
2016-09-24 21:26:37 +02:00
public static function getProps() {
return [
'name',
'email',
'password',
'profilePic',
'level',
'sharedDepartmentList',
'sharedTicketList',
'lastLogin',
'ownStatList',
'sendEmailOnNewTicket'
2016-09-24 21:26:37 +02:00
];
}
public function getDefaultProps() {
return [
'level' => 1,
'ownStatList' => new DataStoreList(),
2019-07-05 01:22:38 +02:00
'sendEmailOnNewTicket' => 0
2016-09-24 21:26:37 +02:00
];
}
public static function getUser($value, $property = 'id') {
return parent::getDataStore($value, $property);
}
2016-12-08 18:30:19 +01:00
2019-07-05 01:22:38 +02:00
public function canManageTicket(Ticket $ticket){
return $this->sharedDepartmentList->includesId($ticket->departmentId) || $this->id === $ticket->authorStaffId;
2019-07-05 01:22:38 +02:00
}
Ticket filters (#795) * Delete one line break in table.js * Add status icon in ticket title * Compare new filters with previous filters * Add ticket query filters * Add departments and priority filters. * Minor style changes in TagSelector and Tag * Add content on selected items Autocomplete component * Delete id prop from autocomplete component * Add DateSelector and DateRange component. * Delete compare function and add arrow orderby icon. * Add dateRange and orderBy filters. * Add minors changes of tabulations * Minors changes of funtion name and constant name * Minors changes of funtion name and constant name part 2. * Transform SearchBox in a controlled component. * Add Autocomplete and DateRange component int FormField. * Add preventDefault event in DropDown. * Create some customs list. * Add TagSelector in FormField. * Add private icon in autocomplete departments filters and correct some errors. * Delete consoleLogs. * Add ANY and TAGS (i18n). * Add search-filters reducer. * Add CLEAR (i18n). * Add clear form button in ticket search. * Correrct titel error in ticket search. * Correrct style submit button in ticket search. * Submit form not change orderBy. * Replace AdminPanelAllTicekts to AdminPanelSearchTicket. * Correct error when query is empty string. * Change form style. * Add show filters button. * Add minors style changes. * Add autors filters first part. * Add autors filters second part. * Apply filters when enter is pressed in searchbox. * Change prop name to node proptype in tag component. * Change search filter actions name. * Change name of render arrow icon in ticketList Component. * Fix an error with Autocomplete component. * Restore demo page and system. * Update ticket list test. * Fix an error with timeout in autocomplete test. * Delete custom ticket list in index.html. * rder the functions in search-filters-reducer. * Fix store undefine in session-action-test. * fix import store in session action test. * Delete unlock icon in ticket list. * Change style in autocomplete component. * Change size of lock icon in ticket list. * Fix error with blacklist in authors autocomplete. * Comment session action test. * Fix test in get-authors.rb and searchTest.php * Add onChange in tag-selector * Fix some bugs and autocomplete authors. * Wip * wip * wip * wip * Fix authors bugs in orderBy filter. * Delete some consoleLogs in autocomplete component. * Fix bug with authors filters when clicked custom list menu. * Fix highlight menu item bug. * Fix error when custom tickets list is undefined. * change double quote to single quote in search filters reducer * Fix error with get authors path in admin panel ticket search * Add page in ticket search filters * Join componentDidMount from Ticket QueryFilter and TicketQuery List in AdminPanelSearchTicket and add retrieveSearchTickets action in seartch ticket reducer. * rename search tickets api to search tickets utils * correct import of searchFiltersActions * move some functions to search tickets utils and date transformer * Fix bug with component did mount when custom tickets list menu option was clicked * Fix bug with component did mount and closed filters in url * Fix bug with authors filters in url when did mount search tickets page * Fix bug with closed urlFilters in search tickets did mount * Fix bug when change authors in urlFilters * Fix bug with authors filters in retrieveSearchTickets action * Delete changeCustomListFilters action * Fix error with dateRange filters in retrieveSearchTickets action * Add page in url * Rename filtesForAPI to filtersForAPI in search filters reducer. * Update Autocomplete test * Fix error with get-authors-test * fix bug with double request when search ticket page was mounted with item selected menu and delete custom param in url when custom ticket list form was edited * Add separator line between form filters and tickets table and delete console log * doubles the animation speed of show filters * Show form filters in search tickets * delete console log in session action * wip * Fix error with ticket list when custom list change. * Fix bug with hover of date range component. * Fix Autocomplete test. * Fix error with autocomplete owners in ticket query filters component. Co-authored-by: Ivan Diaz <ivan@opensupports.com>
2020-06-24 21:45:55 +02:00
public function toArray($minimal = false) {
if($minimal) {
return [
'id' => $this->id,
'name' => $this->name,
'email' => $this->email,
'profilePic' => $this->profilePic,
'isStaff' => 1
];
}
return [
2016-12-08 18:30:19 +01:00
'id' => $this->id,
'name' => $this->name,
'email' => $this->email,
'profilePic' => $this->profilePic,
'level' => $this->level,
'departments' => $this->sharedDepartmentList->toArray(),
'tickets' => $this->sharedTicketList->toArray(),
Ticket filters (#795) * Delete one line break in table.js * Add status icon in ticket title * Compare new filters with previous filters * Add ticket query filters * Add departments and priority filters. * Minor style changes in TagSelector and Tag * Add content on selected items Autocomplete component * Delete id prop from autocomplete component * Add DateSelector and DateRange component. * Delete compare function and add arrow orderby icon. * Add dateRange and orderBy filters. * Add minors changes of tabulations * Minors changes of funtion name and constant name * Minors changes of funtion name and constant name part 2. * Transform SearchBox in a controlled component. * Add Autocomplete and DateRange component int FormField. * Add preventDefault event in DropDown. * Create some customs list. * Add TagSelector in FormField. * Add private icon in autocomplete departments filters and correct some errors. * Delete consoleLogs. * Add ANY and TAGS (i18n). * Add search-filters reducer. * Add CLEAR (i18n). * Add clear form button in ticket search. * Correrct titel error in ticket search. * Correrct style submit button in ticket search. * Submit form not change orderBy. * Replace AdminPanelAllTicekts to AdminPanelSearchTicket. * Correct error when query is empty string. * Change form style. * Add show filters button. * Add minors style changes. * Add autors filters first part. * Add autors filters second part. * Apply filters when enter is pressed in searchbox. * Change prop name to node proptype in tag component. * Change search filter actions name. * Change name of render arrow icon in ticketList Component. * Fix an error with Autocomplete component. * Restore demo page and system. * Update ticket list test. * Fix an error with timeout in autocomplete test. * Delete custom ticket list in index.html. * rder the functions in search-filters-reducer. * Fix store undefine in session-action-test. * fix import store in session action test. * Delete unlock icon in ticket list. * Change style in autocomplete component. * Change size of lock icon in ticket list. * Fix error with blacklist in authors autocomplete. * Comment session action test. * Fix test in get-authors.rb and searchTest.php * Add onChange in tag-selector * Fix some bugs and autocomplete authors. * Wip * wip * wip * wip * Fix authors bugs in orderBy filter. * Delete some consoleLogs in autocomplete component. * Fix bug with authors filters when clicked custom list menu. * Fix highlight menu item bug. * Fix error when custom tickets list is undefined. * change double quote to single quote in search filters reducer * Fix error with get authors path in admin panel ticket search * Add page in ticket search filters * Join componentDidMount from Ticket QueryFilter and TicketQuery List in AdminPanelSearchTicket and add retrieveSearchTickets action in seartch ticket reducer. * rename search tickets api to search tickets utils * correct import of searchFiltersActions * move some functions to search tickets utils and date transformer * Fix bug with component did mount when custom tickets list menu option was clicked * Fix bug with component did mount and closed filters in url * Fix bug with authors filters in url when did mount search tickets page * Fix bug with closed urlFilters in search tickets did mount * Fix bug when change authors in urlFilters * Fix bug with authors filters in retrieveSearchTickets action * Delete changeCustomListFilters action * Fix error with dateRange filters in retrieveSearchTickets action * Add page in url * Rename filtesForAPI to filtersForAPI in search filters reducer. * Update Autocomplete test * Fix error with get-authors-test * fix bug with double request when search ticket page was mounted with item selected menu and delete custom param in url when custom ticket list form was edited * Add separator line between form filters and tickets table and delete console log * doubles the animation speed of show filters * Show form filters in search tickets * delete console log in session action * wip * Fix error with ticket list when custom list change. * Fix bug with hover of date range component. * Fix Autocomplete test. * Fix error with autocomplete owners in ticket query filters component. Co-authored-by: Ivan Diaz <ivan@opensupports.com>
2020-06-24 21:45:55 +02:00
'lastLogin' => $this->lastLogin,
'sendEmailOnNewTicket' => $this->sendEmailOnNewTicket
];
}
2016-09-24 21:26:37 +02:00
}