mirror of
https://github.com/opensupports/opensupports.git
synced 2025-07-29 16:54:53 +02:00
[TR-22] - Fix department filter issue
This commit is contained in:
parent
59413434b0
commit
b81a28114f
@ -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}
|
||||||
})
|
})
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
@ -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'
|
||||||
};
|
};
|
||||||
|
@ -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));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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';
|
||||||
|
@ -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,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user