[TR-22] - Fix department filter issue

This commit is contained in:
Ivan Diaz 2019-07-26 12:49:43 +02:00
parent 59413434b0
commit b81a28114f
6 changed files with 56 additions and 20 deletions

View File

@ -12,22 +12,22 @@ export default {
}; };
}, },
retrieveMyTickets(page, closed = 0) { retrieveMyTickets(page, closed = 0, departmentId = 0) {
return { return {
type: 'MY_TICKETS', type: 'MY_TICKETS',
payload: API.call({ payload: API.call({
path: '/staff/get-tickets', path: '/staff/get-tickets',
data: {page, closed} data: {page, closed, departmentId}
}) })
}; };
}, },
retrieveNewTickets(page = 1) { retrieveNewTickets(page = 1, departmentId = 0) {
return { return {
type: 'NEW_TICKETS', type: 'NEW_TICKETS',
payload: API.call({ payload: API.call({
path: '/staff/get-new-tickets', path: '/staff/get-new-tickets',
data: {page} data: {page, departmentId}
}) })
}; };
}, },

View File

@ -26,7 +26,8 @@ class TicketList extends React.Component {
'secondary' 'secondary'
]), ]),
closedTicketsShown: React.PropTypes.bool, closedTicketsShown: React.PropTypes.bool,
onClosedTicketsShownChange: React.PropTypes.func onClosedTicketsShownChange: React.PropTypes.func,
onDepartmentChange: React.PropTypes.func,
}; };
static defaultProps = { static defaultProps = {
@ -72,9 +73,13 @@ class TicketList extends React.Component {
return { return {
departments: this.getDepartments(), departments: this.getDepartments(),
onChange: (event) => { onChange: (event) => {
const departmentId = event.index && this.props.departments[event.index - 1].id;
this.setState({ this.setState({
selectedDepartment: event.index && this.props.departments[event.index - 1].id selectedDepartment: departmentId
}); });
if(this.props.onDepartmentChange) {
this.props.onDepartmentChange(departmentId || null);
}
}, },
size: 'medium' size: 'medium'
}; };

View File

@ -25,10 +25,11 @@ class AdminPanelMyTickets extends React.Component {
state = { state = {
closedTicketsShown: false, closedTicketsShown: false,
departmentId: null,
}; };
componentDidMount() { componentDidMount() {
this.retrieveMyTickets() this.retrieveMyTickets();
} }
render() { render() {
@ -57,7 +58,11 @@ class AdminPanelMyTickets extends React.Component {
onClosedTicketsShownChange: this.onClosedTicketsShownChange.bind(this), onClosedTicketsShownChange: this.onClosedTicketsShownChange.bind(this),
pages: this.props.pages, pages: this.props.pages,
page: this.props.page, page: this.props.page,
onPageChange: event => this.retrieveMyTickets(event.target.value) onPageChange: event => this.retrieveMyTickets(event.target.value),
onDepartmentChange: departmentId => {
this.setState({departmentId});
this.retrieveMyTickets(1, this.state.closedTicketsShown, departmentId);
},
}; };
} }
@ -85,8 +90,8 @@ class AdminPanelMyTickets extends React.Component {
this.retrieveMyTickets(); this.retrieveMyTickets();
} }
retrieveMyTickets(page = this.props.page, closed = this.state.closedTicketsShown) { retrieveMyTickets(page = this.props.page, closed = this.state.closedTicketsShown, departmentId = this.state.departmentId) {
this.props.dispatch(AdminDataAction.retrieveMyTickets(page, closed * 1)); this.props.dispatch(AdminDataAction.retrieveMyTickets(page, closed * 1, departmentId));
} }
} }

View File

@ -15,7 +15,11 @@ class AdminPanelNewTickets extends React.Component {
page: 1, page: 1,
userId: 0, userId: 0,
departments: [], departments: [],
tickets: [] tickets: [],
};
state = {
departmentId: null,
}; };
componentDidMount() { componentDidMount() {
@ -43,12 +47,16 @@ class AdminPanelNewTickets extends React.Component {
ticketPath: '/admin/panel/tickets/view-ticket/', ticketPath: '/admin/panel/tickets/view-ticket/',
page: this.props.page, page: this.props.page,
pages: this.props.pages, pages: this.props.pages,
onPageChange: event => this.retrieveNewTickets(event.target.value) onPageChange: event => this.retrieveNewTickets(event.target.value),
onDepartmentChange: departmentId => {
this.setState({departmentId});
this.retrieveNewTickets(1, departmentId);
},
}; };
} }
retrieveNewTickets(page = this.props.page) { retrieveNewTickets(page = this.props.page, departmentId = this.state.departmentId) {
this.props.dispatch(AdminDataAction.retrieveNewTickets(page)); this.props.dispatch(AdminDataAction.retrieveNewTickets(page, departmentId));
} }
} }

View File

@ -43,6 +43,7 @@ class GetNewTicketsStaffController extends Controller {
} }
public function handler() { public function handler() {
$page = Controller::request('page'); $page = Controller::request('page');
$departmentId = Controller::request('departmentId');
if (Ticket::isTableEmpty()) { if (Ticket::isTableEmpty()) {
Response::respondSuccess([ Response::respondSuccess([
@ -68,6 +69,10 @@ class GetNewTicketsStaffController extends Controller {
$query .= 'FALSE) AND closed = 0'; $query .= 'FALSE) AND closed = 0';
} }
if($departmentId) {
$query .= ' AND department_id=' . $departmentId;
}
$countTotal = Ticket::count($query); $countTotal = Ticket::count($query);
$query .= ' ORDER BY unread_staff DESC'; $query .= ' ORDER BY unread_staff DESC';

View File

@ -46,16 +46,29 @@ class GetTicketStaffController extends Controller {
$user = Controller::getLoggedUser(); $user = Controller::getLoggedUser();
$closed = Controller::request('closed'); $closed = Controller::request('closed');
$page = Controller::request('page'); $page = Controller::request('page');
$departmentId = Controller::request('departmentId');
$offset = ($page-1)*10; $offset = ($page-1)*10;
if ($closed) { $condition = 'TRUE';
$tickets = $user->withCondition(' TRUE LIMIT 10 OFFSET ?', [$offset])->sharedTicketList->toArray(true); $bindings = [];
$countTotal = $user->countShared('ticket');
} else { if($departmentId) {
$tickets = $user->withCondition(' closed = ? LIMIT 10 OFFSET ?', ['0', $offset])->sharedTicketList->toArray(true); $condition .= ' AND department_id = ?';
$countTotal = $user->withCondition(' closed = ?', ['0'])->countShared('ticket'); $bindings[] = $departmentId;
} }
if(!$closed) {
$condition .= ' AND closed = ?';
$bindings[] = '0';
}
$countTotal = $user->withCondition($condition, $bindings)->countShared('ticket');
$condition .= ' LIMIT 10 OFFSET ?';
$bindings[] = $offset;
$tickets = $user->withCondition($condition, $bindings)->sharedTicketList->toArray(true);
Response::respondSuccess([ Response::respondSuccess([
'tickets' => $tickets, 'tickets' => $tickets,
'page' => $page, 'page' => $page,