123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480 |
- /*
- * <<
- * Davinci
- * ==
- * Copyright (C) 2016 - 2017 EDP
- * ==
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * >>
- */
- import { call, put, all, takeLatest, takeEvery } from 'redux-saga/effects'
- import { ActionTypes } from './constants'
- import { OrganizationActions, OrganizationActionType } from './actions'
- import { message } from 'antd'
- import request from 'utils/request'
- import api from 'utils/api'
- import { errorHandler } from 'utils/util'
- export function* getOrganizations() {
- try {
- const asyncData = yield call(request, api.organizations)
- const organizations = asyncData.payload
- yield put(OrganizationActions.organizationsLoaded(organizations))
- } catch (err) {
- yield put(OrganizationActions.loadOrganizationsFail())
- errorHandler(err)
- }
- }
- export function* addOrganization(action: OrganizationActionType) {
- if (action.type !== ActionTypes.ADD_ORGANIZATION) {
- return
- }
- const { organization, resolve } = action.payload
- try {
- const asyncData = yield call(request, {
- method: 'post',
- url: api.organizations,
- data: organization
- })
- const result = asyncData.payload
- yield put(OrganizationActions.organizationAdded(result))
- resolve()
- } catch (err) {
- yield put(OrganizationActions.addOrganizationFail())
- errorHandler(err)
- }
- }
- export function* editOrganization(action: OrganizationActionType) {
- if (action.type !== ActionTypes.EDIT_ORGANIZATION) {
- return
- }
- const { organization } = action.payload
- try {
- yield call(request, {
- method: 'put',
- url: `${api.organizations}/${organization.id}`,
- data: organization
- })
- yield put(OrganizationActions.organizationEdited(organization))
- message.success('success')
- } catch (err) {
- yield put(OrganizationActions.editOrganizationFail())
- errorHandler(err)
- }
- }
- export function* deleteOrganization(action: OrganizationActionType) {
- if (action.type !== ActionTypes.DELETE_ORGANIZATION) {
- return
- }
- const { id, resolve } = action.payload
- try {
- yield call(request, {
- method: 'delete',
- url: `${api.organizations}/${id}`
- })
- yield put(OrganizationActions.organizationDeleted(id))
- resolve()
- } catch (err) {
- yield put(OrganizationActions.deleteOrganizationFail())
- errorHandler(err)
- }
- }
- export function* getOrganizationDetail(action: OrganizationActionType) {
- if (action.type !== ActionTypes.LOAD_ORGANIZATION_DETAIL) {
- return
- }
- try {
- const asyncData = yield call(
- request,
- `${api.organizations}/${action.payload.id}`
- )
- const organization = asyncData.payload
- yield put(OrganizationActions.organizationDetailLoaded(organization))
- } catch (err) {
- errorHandler(err)
- }
- }
- export function* getOrganizationsProjects(action: OrganizationActionType) {
- if (action.type !== ActionTypes.LOAD_ORGANIZATIONS_PROJECTS) {
- return
- }
- const {
- param: { id, keyword, pageNum, pageSize }
- } = action.payload
- const requestUrl = keyword
- ? `${
- api.organizations
- }/${id}/projects?keyword=${keyword}&pageNum=1&pageSize=${pageSize || 10}`
- : `${api.organizations}/${id}/projects/?pageNum=${pageNum || 1}&pageSize=${
- pageSize || 10
- }`
- try {
- const asyncData = yield call(request, {
- method: 'get',
- url: requestUrl
- })
- const organizations = asyncData.payload
- yield put(OrganizationActions.organizationsProjectsLoaded(organizations))
- } catch (err) {
- yield put(OrganizationActions.loadOrganizationsProjectsFail())
- errorHandler(err)
- }
- }
- export function* getOrganizationsMembers(action: OrganizationActionType) {
- if (action.type !== ActionTypes.LOAD_ORGANIZATIONS_MEMBERS) {
- return
- }
- const { id } = action.payload
- try {
- const asyncData = yield call(request, `${api.organizations}/${id}/members`)
- yield put(OrganizationActions.organizationsMembersLoaded(asyncData.payload))
- } catch (err) {
- yield put(OrganizationActions.loadOrganizationsMembersFail())
- errorHandler(err)
- }
- }
- export function* getOrganizationsRole(action: OrganizationActionType) {
- if (action.type !== ActionTypes.LOAD_ORGANIZATIONS_ROLE) {
- return
- }
- const { id } = action.payload
- try {
- const asyncData = yield call(request, `${api.organizations}/${id}/roles`)
- const organizations = asyncData.payload
- yield put(OrganizationActions.organizationsRoleLoaded(organizations))
- } catch (err) {
- yield put(OrganizationActions.loadOrganizationsRoleFail())
- errorHandler(err)
- }
- }
- export function* addRole(action: OrganizationActionType) {
- if (action.type !== ActionTypes.ADD_ROLE) {
- return
- }
- const { name, description, id, resolve } = action.payload
- try {
- const role = { name, description, orgId: id }
- const asyncData = yield call(request, {
- method: 'post',
- url: api.roles,
- data: role
- })
- const result = asyncData.payload
- yield put(OrganizationActions.roleAdded(result))
- resolve()
- } catch (err) {
- yield put(OrganizationActions.addRoleFail())
- errorHandler(err)
- }
- }
- export function* getRoleListByMemberId(action: OrganizationActionType) {
- if (action.type !== ActionTypes.GET_ROLELISTS_BY_MEMBERID) {
- return
- }
- const { memberId, orgId, resolve } = action.payload
- try {
- const asyncData = yield call(request, {
- method: 'get',
- url: `${api.organizations}/${orgId}/member/${memberId}/roles`
- })
- const result = asyncData.payload
- yield put(
- OrganizationActions.getRoleListByMemberIdSuccess(result, memberId)
- )
- if (resolve) {
- resolve(result)
- }
- } catch (err) {
- yield put(OrganizationActions.getRoleListByMemberIdFail(err, memberId))
- errorHandler(err)
- }
- }
- export function* deleteRole(action: OrganizationActionType) {
- if (action.type !== ActionTypes.DELETE_ROLE) {
- return
- }
- const { id, resolve } = action.payload
- try {
- const asyncData = yield call(request, {
- method: 'delete',
- url: `${api.roles}/${id}`
- })
- const result = asyncData.payload
- yield put(OrganizationActions.roleDeleted(result))
- resolve()
- } catch (err) {
- yield put(OrganizationActions.deleteRoleFail())
- errorHandler(err)
- }
- }
- export function* editRole(action: OrganizationActionType) {
- if (action.type !== ActionTypes.EDIT_ROLE) {
- return
- }
- const { name, description, id, resolve } = action.payload
- try {
- const role = { name, description }
- const asyncData = yield call(request, {
- method: 'put',
- url: `${api.roles}/${id}`,
- data: role
- })
- const result = asyncData.payload
- yield put(OrganizationActions.roleEdited(result))
- resolve()
- } catch (err) {
- yield put(OrganizationActions.editRoleFail())
- errorHandler(err)
- }
- }
- export function* relRoleMember(action: OrganizationActionType) {
- if (action.type !== ActionTypes.REL_ROLE_MEMBER) {
- return
- }
- const { id, memberIds, resolve } = action.payload
- try {
- yield call(request, {
- method: 'post',
- url: `${api.roles}/${id}/members`,
- data: memberIds
- })
- yield put(OrganizationActions.relRoleMemberSuccess())
- resolve()
- } catch (err) {
- yield put(OrganizationActions.relRoleMemberFail())
- errorHandler(err)
- }
- }
- export function* getRelRoleMember(action: OrganizationActionType) {
- if (action.type !== ActionTypes.GET_REL_ROLE_MEMBER) {
- return
- }
- const { id, resolve } = action.payload
- try {
- const asyncData = yield call(request, {
- method: 'get',
- url: `${api.roles}/${id}/members`
- })
- const result = asyncData.payload
- yield put(OrganizationActions.getRelRoleMemberSuccess())
- resolve(result)
- } catch (err) {
- yield put(OrganizationActions.getRelRoleMemberFail())
- errorHandler(err)
- }
- }
- export function* searchMember(action: OrganizationActionType) {
- if (action.type !== ActionTypes.SEARCH_MEMBER) {
- return
- }
- const { keyword } = action.payload
- try {
- const asyncData = yield call(request, {
- method: 'get',
- url: `${api.user}?keyword=${keyword}`
- })
- const result = asyncData.payload
- yield put(OrganizationActions.memberSearched(result))
- } catch (err) {
- yield put(OrganizationActions.searchMemberFail())
- errorHandler(err)
- }
- }
- export function* inviteMember(action: OrganizationActionType) {
- if (action.type !== ActionTypes.INVITE_MEMBER) {
- return
- }
- const { orgId, members, needEmail, resolve } = action.payload
- try {
- const asyncData = yield call(request, {
- method: 'post',
- url: `${api.organizations}/${orgId}/invite/members`,
- data: {
- orgId,
- members,
- needConfirm: needEmail
- }
- })
- const result = asyncData.payload
- yield put(OrganizationActions.inviteMemberSuccess(result))
- if (resolve) {
- resolve(result)
- }
- } catch (err) {
- yield put(OrganizationActions.inviteMemberFail())
- errorHandler(err)
- }
- }
- export function* deleteOrganizationMember(action: OrganizationActionType) {
- if (action.type !== ActionTypes.DELETE_ORGANIZATION_MEMBER) {
- return
- }
- const { relationId, resolve } = action.payload
- try {
- yield call(request, {
- url: `${api.organizations}/member/${relationId}`,
- method: 'delete'
- })
- yield put(OrganizationActions.organizationMemberDeleted(relationId))
- resolve()
- } catch (err) {
- yield put(OrganizationActions.deleteOrganizationMemberFail())
- errorHandler(err)
- }
- }
- export function* changeOrganizationMemberRole(action: OrganizationActionType) {
- if (action.type !== ActionTypes.CHANGE_MEMBER_ROLE_ORGANIZATION) {
- return
- }
- const { relationId, newRole, resolve } = action.payload
- try {
- const asyncData = yield call(request, {
- url: `${api.organizations}/member/${relationId}`,
- method: 'put',
- data: { role: newRole }
- })
- const member = asyncData.payload
- yield put(
- OrganizationActions.organizationMemberRoleChanged(relationId, member)
- )
- yield resolve()
- } catch (err) {
- yield put(OrganizationActions.changeOrganizationMemberRoleFail())
- errorHandler(err)
- }
- }
- export function* getProjectAdmins(action: OrganizationActionType) {
- if (action.type !== ActionTypes.LOAD_PROJECT_ADMINS) {
- return
- }
- const { projectId } = action.payload
- try {
- const asyncData = yield call(request, `${api.projects}/${projectId}/admins`)
- const results = asyncData.payload
- yield put(OrganizationActions.projectAdminLoaded(results))
- } catch (err) {
- yield put(OrganizationActions.loadProjectAdminFail())
- errorHandler(err)
- }
- }
- export function* getVizVisbility(action: OrganizationActionType) {
- if (action.type !== ActionTypes.GET_VIZ_VISBILITY) {
- return
- }
- const { roleId, projectId, resolve } = action.payload
- try {
- const asyncData = yield call(request, {
- method: 'get',
- url: `${api.roles}/${roleId}/project/${projectId}/viz/visibility`
- })
- const results = asyncData.payload
- resolve(results)
- } catch (err) {
- errorHandler(err)
- }
- }
- export function* postVizVisbility(action: OrganizationActionType) {
- if (action.type !== ActionTypes.POST_VIZ_VISBILITY) {
- return
- }
- const { id, permission, resolve } = action.payload
- try {
- const asyncData = yield call(request, {
- url: `${api.roles}/${id}/viz/visibility`,
- method: 'post',
- data: permission
- })
- const result = asyncData.payload
- yield resolve(result)
- } catch (err) {
- errorHandler(err)
- }
- }
- export default function* rootOrganizationSaga() {
- yield all([
- takeLatest(ActionTypes.LOAD_ORGANIZATIONS, getOrganizations),
- takeEvery(ActionTypes.ADD_ORGANIZATION, addOrganization),
- takeEvery(ActionTypes.EDIT_ORGANIZATION, editOrganization),
- takeEvery(ActionTypes.DELETE_ORGANIZATION, deleteOrganization),
- takeLatest(ActionTypes.LOAD_ORGANIZATION_DETAIL, getOrganizationDetail),
- takeLatest(ActionTypes.LOAD_ORGANIZATIONS_MEMBERS, getOrganizationsMembers),
- takeLatest(
- ActionTypes.LOAD_ORGANIZATIONS_PROJECTS,
- getOrganizationsProjects
- ),
- takeLatest(ActionTypes.LOAD_ORGANIZATIONS_ROLE, getOrganizationsRole),
- takeEvery(ActionTypes.ADD_ROLE, addRole),
- takeEvery(ActionTypes.DELETE_ROLE, deleteRole),
- takeEvery(ActionTypes.EDIT_ROLE, editRole),
- takeEvery(ActionTypes.REL_ROLE_MEMBER, relRoleMember),
- takeEvery(ActionTypes.GET_REL_ROLE_MEMBER, getRelRoleMember),
- takeLatest(ActionTypes.LOAD_PROJECT_ADMINS, getProjectAdmins),
- takeLatest(ActionTypes.INVITE_MEMBER, inviteMember),
- takeLatest(ActionTypes.SEARCH_MEMBER, searchMember),
- takeLatest(
- ActionTypes.DELETE_ORGANIZATION_MEMBER,
- deleteOrganizationMember
- ),
- takeLatest(
- ActionTypes.CHANGE_MEMBER_ROLE_ORGANIZATION,
- changeOrganizationMemberRole
- ),
- takeLatest(ActionTypes.GET_VIZ_VISBILITY, getVizVisbility),
- takeLatest(ActionTypes.POST_VIZ_VISBILITY, postVizVisbility),
- takeEvery(ActionTypes.GET_ROLELISTS_BY_MEMBERID, getRoleListByMemberId)
- ])
- }
|