diff --git a/client/src/actions/admin-data-actions.js b/client/src/actions/admin-data-actions.js index 24f2cbb6..ca348588 100644 --- a/client/src/actions/admin-data-actions.js +++ b/client/src/actions/admin-data-actions.js @@ -32,12 +32,14 @@ export default { }; }, - retrieveAllTickets(page = 1) { + retrieveAllTickets(page = 1, closed = 0) { + console.log('Closed is:'); + console.log(closed); return { type: 'ALL_TICKETS', payload: API.call({ path: '/staff/get-all-tickets', - data: {page} + data: {page, closed} }) }; }, diff --git a/client/src/app/admin/panel/tickets/admin-panel-all-tickets.js b/client/src/app/admin/panel/tickets/admin-panel-all-tickets.js index ec6be25d..c3ce18ed 100644 --- a/client/src/app/admin/panel/tickets/admin-panel-all-tickets.js +++ b/client/src/app/admin/panel/tickets/admin-panel-all-tickets.js @@ -20,7 +20,8 @@ class AdminPanelAllTickets extends React.Component { state = { page: 1, - query: '' + query: '', + closedTicketsShown: false }; componentDidMount() { @@ -52,10 +53,22 @@ class AdminPanelAllTickets extends React.Component { ticketPath: '/admin/panel/tickets/view-ticket/', onPageChange: this.onPageChange.bind(this), page: this.state.page, - pages: this.props.pages + pages: this.props.pages, + closedTicketsShown: this.state.closedTicketsShown, + onClosedTicketsShownChange: this.onClosedTicketsShownChange.bind(this) }; } + onClosedTicketsShownChange() { + this.setState(function(state) { + return { + closedTicketsShown: !state.closedTicketsShown + }; + }, () => { + this.props.dispatch(AdminDataAction.retrieveAllTickets(this.state.page, this.state.closedTicketsShown * 1)); + }); + } + onSearch(query) { this.setState({query, page: 1}); diff --git a/server/controllers/staff/get-all-tickets.php b/server/controllers/staff/get-all-tickets.php index 03d2c8bf..a90fccfe 100755 --- a/server/controllers/staff/get-all-tickets.php +++ b/server/controllers/staff/get-all-tickets.php @@ -14,6 +14,7 @@ use Respect\Validation\Validator as DataValidator; * @apiPermission staff1 * * @apiParam {Number} page The page number. + * @apiParam {Boolean} closed Include closed tickets. * * @apiUse NO_PERMISSION * @apiUse INVALID_PAGE @@ -59,7 +60,8 @@ class GetAllTicketsStaffController extends Controller { $page = Controller::request('page'); $query = $this->getStaffDepartmentsQueryFilter(); - $query .= 'ORDER BY id DESC LIMIT 10 OFFSET ' . (($page-1)*10); + $query .= $this->getClosedFilter(); + $query .= ' ORDER BY id DESC LIMIT 10 OFFSET ' . (($page-1)*10); return Ticket::find($query); } @@ -81,4 +83,13 @@ class GetAllTicketsStaffController extends Controller { return $query; } + + private function getClosedFilter() { + $closed = Controller::request('closed')*1; + if ($closed) { + return ''; + } else { + return " AND (closed = '0')"; + } + } }