web: People: Added opportunity to change employee type
This commit is contained in:
parent
15b2be66ed
commit
fe2ecf4773
@ -4,8 +4,8 @@ import { connect } from 'react-redux';
|
||||
import { getSelectedGroup, getSelectionIds } from '../../../../../store/people/selectors';
|
||||
import { isAdmin } from '../../../../../store/auth/selectors';
|
||||
import { withTranslation } from 'react-i18next';
|
||||
import { updateUserStatus } from '../../../../../store/people/actions';
|
||||
import { EmployeeStatus } from '../../../../../helpers/constants';
|
||||
import { updateUserStatus, updateUserType } from '../../../../../store/people/actions';
|
||||
import { EmployeeStatus, EmployeeType } from '../../../../../helpers/constants';
|
||||
|
||||
const contextOptions = () => {
|
||||
return [
|
||||
@ -38,7 +38,8 @@ const SectionHeaderContent = ({
|
||||
isAdmin,
|
||||
t,
|
||||
selection,
|
||||
updateUserStatus
|
||||
updateUserStatus,
|
||||
updateUserType
|
||||
}) => {
|
||||
const selectedUserIds = getSelectionIds(selection);
|
||||
console.log("SectionHeaderContent render", selection, selectedUserIds);
|
||||
@ -53,6 +54,16 @@ const SectionHeaderContent = ({
|
||||
toastr.success("Set disabled action");
|
||||
}, [selectedUserIds, updateUserStatus]);
|
||||
|
||||
const onSetEmployee = useCallback(() => {
|
||||
updateUserType(EmployeeType.User, selectedUserIds);
|
||||
toastr.success("Set user(s) as employees");
|
||||
}, [selectedUserIds, updateUserType]);
|
||||
|
||||
const onSetGuest = useCallback(() => {
|
||||
updateUserType(EmployeeType.Guest, selectedUserIds);
|
||||
toastr.success("Set user(s) as guests");
|
||||
}, [selectedUserIds, updateUserType]);
|
||||
|
||||
const menuItems = [
|
||||
{
|
||||
label: "Select",
|
||||
@ -70,12 +81,12 @@ const SectionHeaderContent = ({
|
||||
{
|
||||
label: "Make employee",
|
||||
disabled: !selection.length,
|
||||
onClick: toastr.success.bind(this, "Make employee action")
|
||||
onClick: onSetEmployee
|
||||
},
|
||||
{
|
||||
label: "Make guest",
|
||||
disabled: !selection.length,
|
||||
onClick: toastr.success.bind(this, "Make guest action")
|
||||
onClick: onSetGuest
|
||||
},
|
||||
{
|
||||
label: "Set active",
|
||||
@ -147,4 +158,4 @@ const SectionHeaderContent = ({
|
||||
}
|
||||
}
|
||||
|
||||
export default connect(mapStateToProps, { updateUserStatus })(withTranslation()(SectionHeaderContent));
|
||||
export default connect(mapStateToProps, { updateUserStatus, updateUserType })(withTranslation()(SectionHeaderContent));
|
@ -18,4 +18,13 @@ export const EmployeeActivationStatus = Object.freeze({
|
||||
export const EmployeeStatus = Object.freeze({
|
||||
Active: 1,
|
||||
Disabled: 2
|
||||
});
|
||||
});
|
||||
|
||||
/**
|
||||
* Enum for employee status.
|
||||
* @readonly
|
||||
*/
|
||||
export const EmployeeType = Object.freeze({
|
||||
User: 1,
|
||||
Guest: 2
|
||||
});
|
@ -120,6 +120,21 @@ export function updateUserStatus(status, userIds) {
|
||||
};
|
||||
}
|
||||
|
||||
export function updateUserType(type, userIds) {
|
||||
return dispatch => {
|
||||
return api.updateUserType(type, userIds).then(res => {
|
||||
if (res && res.data && res.data.error && res.data.error.message)
|
||||
throw res.data.error.message;
|
||||
|
||||
const users = res.data.response;
|
||||
|
||||
users.forEach(user => {
|
||||
dispatch(setUser(user));
|
||||
});
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
export function resetFilter() {
|
||||
return (dispatch, getState) => {
|
||||
const { people } = getState();
|
||||
|
@ -80,3 +80,9 @@ export function updateUserStatus(status, userIds) {
|
||||
? fakeApi.updateUserStatus(status, userIds)
|
||||
: axios.put(`${API_URL}/people/status/${status}`, { userIds });
|
||||
}
|
||||
|
||||
export function updateUserType(type, userIds) {
|
||||
return IS_FAKE
|
||||
? fakeApi.updateUserType(type, userIds)
|
||||
: axios.put(`${API_URL}/people/type/${type}`, { userIds });
|
||||
}
|
@ -312,3 +312,50 @@ export function updateUserStatus(status, userIds) {
|
||||
}
|
||||
]);
|
||||
}
|
||||
|
||||
export function updateUserType(type, userIds) {
|
||||
return fakeResponse([
|
||||
{
|
||||
id: userIds[0],
|
||||
userName: "Mike.Zanyatski",
|
||||
isVisitor: type === 1 ? false : true,
|
||||
firstName: "Mike",
|
||||
lastName: "Zanyatski",
|
||||
email: "my@gmail.com",
|
||||
birthday: "2019-08-19T01:39:25.3240031Z",
|
||||
sex: "male",
|
||||
status: 1,
|
||||
activationStatus: 0,
|
||||
terminated: "2019-08-19T01:39:25.3240031Z",
|
||||
department: "Marketing",
|
||||
workFrom: "2019-08-19T01:39:25.3240031Z",
|
||||
location: "Palo Alto",
|
||||
notes: "Notes to worker",
|
||||
displayName: null,
|
||||
title: "Manager",
|
||||
contacts: [
|
||||
{
|
||||
type: "GTalk",
|
||||
value: "my@gmail.com"
|
||||
}
|
||||
],
|
||||
groups: [
|
||||
{
|
||||
id: "00000000-0000-0000-0000-000000000000",
|
||||
name: "Group Name",
|
||||
manager: "Jake.Zazhitski"
|
||||
}
|
||||
],
|
||||
avatarMedium: "url to medium avatar",
|
||||
avatar: "url to big avatar",
|
||||
isAdmin: false,
|
||||
isLDAP: false,
|
||||
listAdminModules: ["projects", "crm"],
|
||||
isOwner: false,
|
||||
cultureName: "en-EN",
|
||||
isSSO: false,
|
||||
avatarSmall: "url to small avatar",
|
||||
profileUrl: ""
|
||||
}
|
||||
]);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user