web: People: Refactoring:
+ Moved checkResponseError to utils.js; + Fixed actions after saving group; + Re-written fetchPeople action
This commit is contained in:
parent
7bb68bab74
commit
521abaada9
@ -28,7 +28,7 @@ import {
|
||||
updateGroup
|
||||
} from "../../../../../store/group/actions";
|
||||
import styled from "styled-components";
|
||||
import { fetchSelectorUsers } from "../../../../../store/people/actions";
|
||||
import { fetchSelectorUsers, fetchPeople, fetchGroups } from "../../../../../store/people/actions";
|
||||
import { GUID_EMPTY } from "../../../../../helpers/constants";
|
||||
import isEqual from "lodash/isEqual";
|
||||
|
||||
@ -242,6 +242,9 @@ class SectionBodyContent extends React.Component {
|
||||
newGroup.id = group.id;
|
||||
|
||||
this.save(newGroup)
|
||||
.then(group => {
|
||||
toastr.success(`Group '${group.name}' has been saved successfully`);
|
||||
})
|
||||
.catch(error => {
|
||||
toastr.error(error.message);
|
||||
this.setState({ inLoading: false });
|
||||
@ -567,11 +570,11 @@ function mapStateToProps(state) {
|
||||
settings: state.auth.settings,
|
||||
group: state.group.targetGroup,
|
||||
groups: convertGroups(state.people.groups),
|
||||
users: convertUsers(state.people.selector.users) //TODO: replace to api requests with search
|
||||
users: convertUsers(state.people.selector.users), //TODO: replace to api requests with search
|
||||
};
|
||||
}
|
||||
|
||||
export default connect(
|
||||
mapStateToProps,
|
||||
{ resetGroup, createGroup, updateGroup, fetchSelectorUsers }
|
||||
{ resetGroup, createGroup, updateGroup, fetchSelectorUsers, fetchPeople, fetchGroups }
|
||||
)(withRouter(withTranslation()(SectionBodyContent)));
|
||||
|
6
products/ASC.People/Client/src/helpers/utils.js
Normal file
6
products/ASC.People/Client/src/helpers/utils.js
Normal file
@ -0,0 +1,6 @@
|
||||
export function checkResponseError(res) {
|
||||
if (res && res.data && res.data.error) {
|
||||
console.error(res.data.error);
|
||||
throw new Error(res.data.error.message);
|
||||
}
|
||||
}
|
@ -1,5 +1,5 @@
|
||||
import * as api from "../services/api";
|
||||
import { setGroups, fetchPeopleAsync } from "../people/actions";
|
||||
import { fetchGroups, fetchPeople } from "../people/actions";
|
||||
import setAuthorizationToken from "../../store/services/setAuthorizationToken";
|
||||
import { getFilterByLocation } from "../../helpers/converters";
|
||||
import config from "../../../package.json";
|
||||
@ -57,9 +57,7 @@ export async function getUserInfo(dispatch) {
|
||||
dispatch(setModules(modules));
|
||||
dispatch(setSettings(newSettings));
|
||||
|
||||
const groupResp = await api.getGroupList();
|
||||
|
||||
dispatch(setGroups(groupResp.data.response));
|
||||
await fetchGroups(dispatch);
|
||||
|
||||
var re = new RegExp(`${config.homepage}((/?)$|/filter)`, "gm");
|
||||
const match = window.location.pathname.match(re);
|
||||
@ -67,7 +65,7 @@ export async function getUserInfo(dispatch) {
|
||||
if (match && match.length > 0)
|
||||
{
|
||||
const newFilter = getFilterByLocation(window.location);
|
||||
await fetchPeopleAsync(dispatch, newFilter);
|
||||
await fetchPeople(newFilter, dispatch);
|
||||
}
|
||||
|
||||
return dispatch(setIsLoaded(true));
|
||||
|
@ -1,5 +1,7 @@
|
||||
import * as api from "../../store/services/api";
|
||||
import { setGroups, fetchPeopleByFilter } from "../people/actions";
|
||||
import { setGroups, fetchPeople, fetchGroups } from "../people/actions";
|
||||
import { checkResponseError } from "../../helpers/utils";
|
||||
import history from "../../history";
|
||||
|
||||
export const SET_GROUP = "SET_GROUP";
|
||||
export const CLEAN_GROUP = "CLEAN_GROUP";
|
||||
@ -17,13 +19,6 @@ export function resetGroup() {
|
||||
};
|
||||
}
|
||||
|
||||
export function checkResponseError(res) {
|
||||
if (res && res.data && res.data.error) {
|
||||
console.error(res.data.error);
|
||||
throw new Error(res.data.error.message);
|
||||
}
|
||||
}
|
||||
|
||||
export function fetchGroup(groupId) {
|
||||
return dispatch => {
|
||||
api.getGroup(groupId).then(res => {
|
||||
@ -36,49 +31,38 @@ export function fetchGroup(groupId) {
|
||||
export function createGroup(groupName, groupManager, members) {
|
||||
return (dispatch, getState) => {
|
||||
const { people } = getState();
|
||||
const { groups, filter } = people;
|
||||
const { groups } = people;
|
||||
|
||||
return api
|
||||
.createGroup(groupName, groupManager, members)
|
||||
.then(res => {
|
||||
checkResponseError(res);
|
||||
history.goBack();
|
||||
const newGroup = res.data.response;
|
||||
|
||||
dispatch(setGroups([...groups, newGroup]))
|
||||
dispatch(resetGroup());
|
||||
|
||||
dispatch(setGroups([...groups, newGroup]));
|
||||
return Promise.resolve(newGroup);
|
||||
}).then((group) => {
|
||||
const newFilter = filter.clone();
|
||||
newFilter.group = group.id;
|
||||
return fetchPeopleByFilter(dispatch, newFilter);
|
||||
});;
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
export function updateGroup(id, groupName, groupManager, members) {
|
||||
return (dispatch, getState) => {
|
||||
const { people } = getState();
|
||||
const { groups, filter } = people;
|
||||
const { groups } = people;
|
||||
|
||||
return api
|
||||
.updateGroup(id, groupName, groupManager, members)
|
||||
.then(res => {
|
||||
checkResponseError(res);
|
||||
history.goBack();
|
||||
const newGroup = res.data.response;
|
||||
|
||||
dispatch(resetGroup());
|
||||
const newGroups = groups.map(g =>
|
||||
g.id === newGroup.id ? newGroup : g
|
||||
);
|
||||
|
||||
dispatch(setGroups(newGroups));
|
||||
dispatch(resetGroup());
|
||||
|
||||
return Promise.resolve(newGroup);
|
||||
}).then((group) => {
|
||||
const newFilter = filter.clone();
|
||||
newFilter.group = group.id;
|
||||
return fetchPeopleByFilter(dispatch, newFilter);
|
||||
});
|
||||
};
|
||||
}
|
||||
@ -96,7 +80,7 @@ export function deleteGroup(id) {
|
||||
})
|
||||
.then(() => {
|
||||
const newFilter = filter.clone(true);
|
||||
return fetchPeopleByFilter(dispatch, newFilter);
|
||||
return fetchPeople(newFilter, dispatch);
|
||||
});
|
||||
};
|
||||
}
|
||||
|
@ -14,6 +14,7 @@ import {
|
||||
PAGE_COUNT,
|
||||
EmployeeStatus
|
||||
} from "../../helpers/constants";
|
||||
import { checkResponseError } from "../../helpers/utils";
|
||||
|
||||
export const SET_GROUPS = "SET_GROUPS";
|
||||
export const SET_USERS = "SET_USERS";
|
||||
@ -69,7 +70,7 @@ export function selectGroup(groupId) {
|
||||
let newFilter = filter.clone();
|
||||
newFilter.group = groupId;
|
||||
|
||||
return fetchPeopleByFilter(dispatch, newFilter);
|
||||
return fetchPeople(newFilter, dispatch);
|
||||
};
|
||||
}
|
||||
|
||||
@ -147,14 +148,38 @@ export function fetchSelectorUsers() {
|
||||
};
|
||||
}
|
||||
|
||||
export function fetchPeople(filter) {
|
||||
return dispatch => {
|
||||
return fetchPeopleByFilter(dispatch, filter);
|
||||
export function fetchGroups(dispatchFunc = null) {
|
||||
return api.getGroupList()
|
||||
.then(res => {
|
||||
checkResponseError(res);
|
||||
return dispatchFunc
|
||||
? dispatchFunc(setGroups(res.data.response))
|
||||
: Promise.resolve(dispatch => dispatch(setGroups(res.data.response)));
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
export function fetchPeople(filter, dispatchFunc = null) {
|
||||
return dispatchFunc ? fetchPeopleByFilter(dispatchFunc, filter)
|
||||
: (dispatch, getState) => {
|
||||
if(filter) {
|
||||
return fetchPeopleByFilter(dispatch, filter);
|
||||
}
|
||||
else {
|
||||
const {people} = getState();
|
||||
const {filter} = people;
|
||||
return fetchPeopleByFilter(dispatch, filter);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
export function fetchPeopleByFilter(dispatch, filter) {
|
||||
let filterData = (filter && filter.clone()) || Filter.getDefault();
|
||||
function fetchPeopleByFilter(dispatch, filter) {
|
||||
let filterData = (filter && filter.clone());
|
||||
|
||||
if(!filterData) {
|
||||
filterData = Filter.getDefault();
|
||||
filterData.employeeStatus = EmployeeStatus.Active;
|
||||
}
|
||||
|
||||
return api.getUserList(filterData).then(res => {
|
||||
filterData.total = res.data.total;
|
||||
@ -167,7 +192,7 @@ export function fetchPeopleByFilter(dispatch, filter) {
|
||||
});
|
||||
}
|
||||
|
||||
export async function fetchPeopleAsync(dispatch, filter = null) {
|
||||
/*export async function fetchPeopleAsync(dispatch, filter = null) {
|
||||
let filterData = (filter && filter.clone());
|
||||
|
||||
if(!filterData) {
|
||||
@ -185,7 +210,7 @@ export async function fetchPeopleAsync(dispatch, filter = null) {
|
||||
groupId: filterData.group
|
||||
});
|
||||
dispatch(setUsers(usersResp.data.response));
|
||||
}
|
||||
}*/
|
||||
|
||||
export function updateUserStatus(status, userIds) {
|
||||
return dispatch => {
|
||||
@ -224,6 +249,6 @@ export function resetFilter() {
|
||||
|
||||
const newFilter = filter.clone(true);
|
||||
|
||||
return fetchPeopleByFilter(dispatch, newFilter);
|
||||
return fetchPeople(newFilter, dispatch);
|
||||
};
|
||||
}
|
||||
|
@ -1,8 +1,9 @@
|
||||
import * as api from "../../store/services/api";
|
||||
import { isMe } from '../auth/selectors';
|
||||
import { getUserByUserName } from '../people/selectors';
|
||||
import { fetchPeopleByFilter } from "../people/actions";
|
||||
import { fetchPeople } from "../people/actions";
|
||||
import { setCurrentUser } from "../auth/actions";
|
||||
import { checkResponseError } from "../../helpers/utils";
|
||||
|
||||
export const SET_PROFILE = 'SET_PROFILE';
|
||||
export const CLEAN_PROFILE = 'CLEAN_PROFILE';
|
||||
@ -20,12 +21,7 @@ export function resetProfile() {
|
||||
};
|
||||
};
|
||||
|
||||
export function checkResponseError(res) {
|
||||
if (res && res.data && res.data.error) {
|
||||
console.error(res.data.error);
|
||||
throw new Error(res.data.error.message);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
export function employeeWrapperToMemberModel(profile) {
|
||||
const comment = profile.notes;
|
||||
@ -67,7 +63,7 @@ export function createProfile(profile) {
|
||||
result = res.data.response;
|
||||
return dispatch(setProfile(result));
|
||||
}).then(() => {
|
||||
return fetchPeopleByFilter(dispatch, filter);
|
||||
return fetchPeople(filter, dispatch);
|
||||
}).then(() => {
|
||||
return Promise.resolve(result);
|
||||
});
|
||||
@ -86,7 +82,7 @@ export function updateProfile(profile) {
|
||||
result = res.data.response;
|
||||
return Promise.resolve(dispatch(setProfile(result)));
|
||||
}).then(() => {
|
||||
return fetchPeopleByFilter(dispatch, filter);
|
||||
return fetchPeople(filter, dispatch);
|
||||
}).then(() => {
|
||||
return Promise.resolve(result);
|
||||
});
|
||||
|
Loading…
Reference in New Issue
Block a user