import React from 'react'; import ng from 'core/services/ng'; import {gettext} from 'core/utils'; import {dataApi} from 'core/helpers/CrudManager'; import {UserListComponent, IUserExtra} from './UserListComponent'; import {IDesk, IUserRole} from 'superdesk-api'; interface IProps { desks: Array; onUserSelect(user: IUserExtra): void; } interface IState { roles: Array; users: Array; } export class UsersComponent extends React.Component { services: any; constructor(props: IProps) { super(props); this.state = { roles: [], users: [], }; this.services = { desks: ng.get('desks'), }; this.selectUser.bind(this); } selectUser(user: IUserExtra) { this.props.onUserSelect(user); } componentDidMount() { Promise.all([ dataApi.query('roles', 1, {field: null, direction: 'ascending'}, {}), dataApi.query('desks/all/overview/users', 1, {field: null, direction: 'ascending'}, {}), ]).then((res: any) => { const [roles, users] = res; this.setState({ roles: roles._items, users: users._items, }); }); } getUsers(desk: IDesk, role: IUserRole): Array { const deskMembers = this.services.desks.deskMembers[desk._id]; const authors = this.state.users.find((item) => item.role === role._id); let users: Array = []; deskMembers.forEach((user) => { if (role._id === user.role) { user.data = authors.authors[user._id]; users.push(user); } }); return users ? users : []; } render() { return (
{this.props.desks.map((desk) => (

{desk.name}

{this.state.roles.map((role) => ( this.getUsers(desk, role).length ? ( this.selectUser(user)} /> ) : null ))} {!this.services.desks.deskMembers[desk._id].length ? (
{gettext('There are no users assigned to this desk')}
) : null}
), )}
); } }