From 61f4833fe0f3b4df1e3384f0529915aaeed8afe9 Mon Sep 17 00:00:00 2001 From: Richard Pentecost Date: Tue, 6 Feb 2024 11:13:12 +0000 Subject: [PATCH 1/4] create new investment project admin component, create new resource to get investment project stages, add routing for new component within react router --- src/apps/routers.js | 1 + .../Resource/InvestmentProjectStages.js | 6 + src/client/components/Resource/index.jsx | 1 + src/client/components/Resource/tasks.js | 2 + .../Projects/Admin/InvestmentProjectAdmin.jsx | 115 ++++++++++++++++++ src/client/routes.js | 6 + 6 files changed, 131 insertions(+) create mode 100644 src/client/components/Resource/InvestmentProjectStages.js create mode 100644 src/client/modules/Investments/Projects/Admin/InvestmentProjectAdmin.jsx diff --git a/src/apps/routers.js b/src/apps/routers.js index 1f69a8905ba..260dce172bc 100644 --- a/src/apps/routers.js +++ b/src/apps/routers.js @@ -62,6 +62,7 @@ const reactRoutes = [ '/investments/projects/:projectId/edit-history', '/investments/projects/:projectId/evidence', '/investments/projects/:projectId/evidence/:documentId/delete', + '/investments/projects/:projectId/admin', '/investments', '/investments/projects', '/investments/profiles', diff --git a/src/client/components/Resource/InvestmentProjectStages.js b/src/client/components/Resource/InvestmentProjectStages.js new file mode 100644 index 00000000000..f3f75e33785 --- /dev/null +++ b/src/client/components/Resource/InvestmentProjectStages.js @@ -0,0 +1,6 @@ +import { createMetadataResource } from './Resource' + +export default createMetadataResource( + 'InvestmentProjectStages', + 'investment-project-stage' +) diff --git a/src/client/components/Resource/index.jsx b/src/client/components/Resource/index.jsx index 0531ef94f9e..0cb8a2a39ed 100644 --- a/src/client/components/Resource/index.jsx +++ b/src/client/components/Resource/index.jsx @@ -37,6 +37,7 @@ export { default as InvestmentProjectStageResource } from './ProjectStage' export { default as InvestmentTypesResource } from './InvestmentTypes' export { default as InvestorTypesResource } from './InvestorTypes' export { default as InvestmentInvestorTypesResource } from './InvestmentInvestorTypes' +export { default as InvestmentProjectStagesResource } from './InvestmentProjectStages' export { default as InvestmentProjectTasksResource } from './InvestmentProjectTasks' export { default as LargeCapitalInvestmentEquityPercentagesResource } from './LargeCapitalInvestmentEquityPercentages' export { default as LargeCapitalInvestmentRestrictionsResource } from './LargeCapitalInvestmentRestrictions' diff --git a/src/client/components/Resource/tasks.js b/src/client/components/Resource/tasks.js index fbc86d3bc86..94793f613d3 100644 --- a/src/client/components/Resource/tasks.js +++ b/src/client/components/Resource/tasks.js @@ -87,6 +87,7 @@ import TaskCompletedSettings from './TaskCompletedSettings' import OmisMarkets from './OmisMarkets' import OrderPayment from './OrderPayment' import TaskCompaniesAndProjects from './TaskCompaniesAndProjects' +import InvestmentProjectStages from './InvestmentProjectStages' export default { ...AssociatedProgramme.tasks, @@ -178,4 +179,5 @@ export default { ...OmisMarkets.tasks, ...OrderPayment.tasks, ...TaskCompaniesAndProjects.tasks, + ...InvestmentProjectStages.tasks, } diff --git a/src/client/modules/Investments/Projects/Admin/InvestmentProjectAdmin.jsx b/src/client/modules/Investments/Projects/Admin/InvestmentProjectAdmin.jsx new file mode 100644 index 00000000000..aab086a51b4 --- /dev/null +++ b/src/client/modules/Investments/Projects/Admin/InvestmentProjectAdmin.jsx @@ -0,0 +1,115 @@ +import React from 'react' +import { useParams } from 'react-router-dom' + +import { H4, InsetText } from 'govuk-react' +import styled from 'styled-components' +import { SPACING } from '@govuk-react/constants' + +import { TASK_UPDATE_STAGE } from '../../../../../apps/investments/views/admin/client/state' +import urls from '../../../../../lib/urls' +import { + InvestmentProjectStageResource, + InvestmentResource, +} from '../../../../components/Resource' +import { buildProjectBreadcrumbs } from '../../utils' +import { transformObjectToOption } from '../../../../../apps/transformers' +import { + DefaultLayout, + FieldRadios, + Form, + FormLayout, +} from '../../../../components' +import { FORM_LAYOUT } from '../../../../../common/constants' + +const StyledP = styled('p')` + margin-bottom: ${SPACING.SCALE_2}; +` + +const InvestmentName = (props) => ( + + {(project) => project.name} + +) + +const InvestmentProjectAdmin = () => { + const { projectId } = useParams() + + return ( + + Admin - - Projects - Investments + + } + breadcrumbs={buildProjectBreadcrumbs([ + { + link: urls.investments.projects.details(projectId), + text: , + }, + { text: 'Admin' }, + ])} + useReactRouter={false} + > + + {(project) => ( + +

Project details

+ +

Project name: {project.name}

+ Current stage: {project.stage.name} +
+
+ urls.investments.projects.details(projectId) + } + analyticsFormName="investmentProjectAdmin" + flashMessage={() => 'Project stage saved'} + id="investmentProjectAdmin" + redirectTo={() => urls.investments.projects.details(projectId)} + submissionTaskName={TASK_UPDATE_STAGE} + transformPayload={(values) => ({ values, projectId })} + > + + {(stages) => ( + <> +

Change the stage to

+ transformObjectToOption(stage)) + .filter((stage) => stage.value !== project.stage.id)} + /> + + )} +
+
+
+ )} +
+ {/* +

Project name:

+ Current stage: +
+
urls.investments.projects.details(projectId)} + analyticsFormName="investmentProjectAdmin" + flashMessage={() => 'Project stage saved'} + id="investmentProjectAdmin" + redirectTo={() => urls.investments.projects.details(projectId)} + submissionTaskName={TASK_UPDATE_STAGE} + transformPayload={(values) => ({ values, projectId })} + > +

Change the stage to

+ + */} +
+ ) +} + +export default InvestmentProjectAdmin diff --git a/src/client/routes.js b/src/client/routes.js index 9e6724dc3f3..5af27fd1cdc 100644 --- a/src/client/routes.js +++ b/src/client/routes.js @@ -94,6 +94,7 @@ import CompanyProjectsCollection from './modules/Companies/CompanyInvestments/Co import LargeCapitalProfile from './modules/Companies/CompanyInvestments/LargeCapitalProfile' import ExportsIndex from './modules/Companies/CompanyExports/ExportsIndex' import ExportsHistory from './modules/Companies/CompanyExports/ExportHistory' +import InvestmentProjectAdmin from './modules/Investments/Projects/Admin/InvestmentProjectAdmin' const routes = { companies: [ @@ -583,6 +584,11 @@ const routes = { module: 'datahub:investments', component: DeleteProjectDocument, }, + { + path: '/investments/projects/:projectId/admin', + module: 'datahub:investments', + component: InvestmentProjectAdmin, + }, { path: '/investments/projects', module: 'datahub:investments', From e0651f13347b73c9c20165b29639ac01b0b4249f Mon Sep 17 00:00:00 2001 From: Richard Pentecost Date: Tue, 6 Feb 2024 15:40:45 +0000 Subject: [PATCH 2/4] create state and task function for updating project state --- .../Projects/Admin/InvestmentProjectAdmin.jsx | 22 +------------------ .../Investments/Projects/Admin/state.js | 1 + .../Investments/Projects/Admin/tasks.js | 6 +++++ src/client/tasks.js | 4 ++-- 4 files changed, 10 insertions(+), 23 deletions(-) create mode 100644 src/client/modules/Investments/Projects/Admin/state.js create mode 100644 src/client/modules/Investments/Projects/Admin/tasks.js diff --git a/src/client/modules/Investments/Projects/Admin/InvestmentProjectAdmin.jsx b/src/client/modules/Investments/Projects/Admin/InvestmentProjectAdmin.jsx index aab086a51b4..839a8a7b2e9 100644 --- a/src/client/modules/Investments/Projects/Admin/InvestmentProjectAdmin.jsx +++ b/src/client/modules/Investments/Projects/Admin/InvestmentProjectAdmin.jsx @@ -5,7 +5,6 @@ import { H4, InsetText } from 'govuk-react' import styled from 'styled-components' import { SPACING } from '@govuk-react/constants' -import { TASK_UPDATE_STAGE } from '../../../../../apps/investments/views/admin/client/state' import urls from '../../../../../lib/urls' import { InvestmentProjectStageResource, @@ -20,6 +19,7 @@ import { FormLayout, } from '../../../../components' import { FORM_LAYOUT } from '../../../../../common/constants' +import { TASK_UPDATE_STAGE } from './state' const StyledP = styled('p')` margin-bottom: ${SPACING.SCALE_2}; @@ -88,26 +88,6 @@ const InvestmentProjectAdmin = () => { )} - {/* -

Project name:

- Current stage: -
-
urls.investments.projects.details(projectId)} - analyticsFormName="investmentProjectAdmin" - flashMessage={() => 'Project stage saved'} - id="investmentProjectAdmin" - redirectTo={() => urls.investments.projects.details(projectId)} - submissionTaskName={TASK_UPDATE_STAGE} - transformPayload={(values) => ({ values, projectId })} - > -

Change the stage to

- - */} ) } diff --git a/src/client/modules/Investments/Projects/Admin/state.js b/src/client/modules/Investments/Projects/Admin/state.js new file mode 100644 index 00000000000..3f309c0bd71 --- /dev/null +++ b/src/client/modules/Investments/Projects/Admin/state.js @@ -0,0 +1 @@ +export const TASK_UPDATE_STAGE = 'TASK_UPDATE_STAGE' diff --git a/src/client/modules/Investments/Projects/Admin/tasks.js b/src/client/modules/Investments/Projects/Admin/tasks.js new file mode 100644 index 00000000000..4477856dfea --- /dev/null +++ b/src/client/modules/Investments/Projects/Admin/tasks.js @@ -0,0 +1,6 @@ +import { apiProxyAxios } from '../../../../components/Task/utils' + +export const updateProjectStage = ({ values, projectId }) => + apiProxyAxios.post(`/v3/investment/${projectId}/update-stage`, { + stage: { id: values.projectStageId }, + }) diff --git a/src/client/tasks.js b/src/client/tasks.js index 3124d3bea7c..72788af856f 100644 --- a/src/client/tasks.js +++ b/src/client/tasks.js @@ -10,8 +10,6 @@ import * as exportCountriesEditTasks from './modules/Companies/CompanyExports/Ex import addCompanyPostcodeToRegionTask, { createCompany, } from '../apps/companies/apps/add-company/client/tasks' -import { TASK_UPDATE_STAGE } from '../apps/investments/views/admin/client/state' -import * as investmentAdminTasks from '../apps/investments/views/admin/client/tasks' import { TASK_POSTCODE_TO_REGION } from '../apps/companies/apps/add-company/client/state' import { TASK_GET_ACTIVE_EVENTS, @@ -438,6 +436,8 @@ import { getExportProject, getExportWin, } from '../client/modules/ExportWins/Form/tasks' +import { TASK_UPDATE_STAGE } from './modules/Investments/Projects/Admin/state' +import * as investmentAdminTasks from './modules/Investments/Projects/Admin/tasks' export const tasks = { 'Create list': createList, From ba012c160d1c40eae1ceb3b54a0e8131d9406d28 Mon Sep 17 00:00:00 2001 From: Richard Pentecost Date: Wed, 7 Feb 2024 10:40:45 +0000 Subject: [PATCH 3/4] remove investment project admin from the express api --- src/apps/investments/controllers/admin.js | 25 ------- src/apps/investments/router-projects.js | 3 - .../views/admin/client-container.njk | 10 --- .../admin/client/InvestmentProjectAdmin.jsx | 65 ------------------- .../investments/views/admin/client/state.js | 1 - .../investments/views/admin/client/tasks.js | 9 --- src/client/index.jsx | 2 +- 7 files changed, 1 insertion(+), 114 deletions(-) delete mode 100644 src/apps/investments/controllers/admin.js delete mode 100644 src/apps/investments/views/admin/client-container.njk delete mode 100644 src/apps/investments/views/admin/client/InvestmentProjectAdmin.jsx delete mode 100644 src/apps/investments/views/admin/client/state.js delete mode 100644 src/apps/investments/views/admin/client/tasks.js diff --git a/src/apps/investments/controllers/admin.js b/src/apps/investments/controllers/admin.js deleted file mode 100644 index 81d524428ad..00000000000 --- a/src/apps/investments/controllers/admin.js +++ /dev/null @@ -1,25 +0,0 @@ -const { getOptions } = require('../../../lib/options') - -async function renderAdminView(req, res) { - const { id, name, stage } = res.locals.investment - // orderStages puts the stages array in chronological order, rather than alphabetical - const orderStages = (stages) => { - const activeStage = stages[0] - stages[0] = stages[2] - stages[2] = activeStage - return stages - } - const stages = orderStages(await getOptions(req, 'investment-project-stage')) - - res.locals.title = `Admin - ${name} - Projects - Investments - DBT Data Hub` - res.render('investments/views/admin/client-container.njk', { - props: { - projectId: id, - projectName: name, - projectStage: stage, - stages, - }, - }) -} - -module.exports = { renderAdminView } diff --git a/src/apps/investments/router-projects.js b/src/apps/investments/router-projects.js index a5e879ec378..0497e5abd04 100644 --- a/src/apps/investments/router-projects.js +++ b/src/apps/investments/router-projects.js @@ -13,7 +13,6 @@ const { shared } = require('./middleware') const { create, editHistory } = require('./controllers') -const { renderAdminView } = require('./controllers/admin') const { renderAddEvidence } = require('./apps/evidence/controllers/create') const { postUpload } = require('../documents/middleware/upload') @@ -60,6 +59,4 @@ router.use( router.use('/:investmentId', setPropositionsReturnUrl, propositionsRouter) -router.get('/:investmentId/admin', renderAdminView) - module.exports = router diff --git a/src/apps/investments/views/admin/client-container.njk b/src/apps/investments/views/admin/client-container.njk deleted file mode 100644 index 75dd9608703..00000000000 --- a/src/apps/investments/views/admin/client-container.njk +++ /dev/null @@ -1,10 +0,0 @@ -{% extends "_layouts/template-no-local-header.njk" %} - -{% block body %} - - {% component 'react-slot', { - id: 'investment-project-admin', - props: props - } %} - -{% endblock %} diff --git a/src/apps/investments/views/admin/client/InvestmentProjectAdmin.jsx b/src/apps/investments/views/admin/client/InvestmentProjectAdmin.jsx deleted file mode 100644 index 3cfbe48dbc5..00000000000 --- a/src/apps/investments/views/admin/client/InvestmentProjectAdmin.jsx +++ /dev/null @@ -1,65 +0,0 @@ -import React from 'react' -import styled from 'styled-components' -import { InsetText, H4 } from 'govuk-react' -import { SPACING } from '@govuk-react/constants' - -import LocalHeader from '../../../../../client/components/LocalHeader/LocalHeader.jsx' -import { Main, FieldRadios } from '../../../../../client/components' -import { TASK_UPDATE_STAGE } from './state' -import urls from '../../../../../lib/urls' -import { buildProjectBreadcrumbs } from '../../../../../client/modules/Investments/utils.js' -import Form from '../../../../../client/components/Form' - -const StyledP = styled('p')` - margin-bottom: ${SPACING.SCALE_2}; -` - -const InvestmentProjectAdmin = ({ - projectId, - projectName, - projectStage, - stages, -}) => { - const newStageOptions = stages.filter( - (stage) => stage.value != projectStage.id - ) - return ( - <> - -
-

Project details

- -

Project name: {projectName}

- Current stage: {projectStage.name} -
-
urls.investments.projects.details(projectId)} - analyticsFormName="investmentProjectAdmin" - flashMessage={() => 'Project stage saved'} - id="investmentProjectAdmin" - redirectTo={() => urls.investments.projects.details(projectId)} - submissionTaskName={TASK_UPDATE_STAGE} - transformPayload={(values) => ({ values, projectId })} - > -

Change the stage to

- - -
- - ) -} - -export default InvestmentProjectAdmin diff --git a/src/apps/investments/views/admin/client/state.js b/src/apps/investments/views/admin/client/state.js deleted file mode 100644 index 3f309c0bd71..00000000000 --- a/src/apps/investments/views/admin/client/state.js +++ /dev/null @@ -1 +0,0 @@ -export const TASK_UPDATE_STAGE = 'TASK_UPDATE_STAGE' diff --git a/src/apps/investments/views/admin/client/tasks.js b/src/apps/investments/views/admin/client/tasks.js deleted file mode 100644 index 3e261355194..00000000000 --- a/src/apps/investments/views/admin/client/tasks.js +++ /dev/null @@ -1,9 +0,0 @@ -import { apiProxyAxios } from '../../../../../client/components/Task/utils' - -export function updateProjectStage({ values, projectId }) { - return apiProxyAxios.post(`/v3/investment/${projectId}/update-stage`, { - stage: { - id: values.projectStageId, - }, - }) -} diff --git a/src/client/index.jsx b/src/client/index.jsx index 58932ab0d6e..eb609430122 100644 --- a/src/client/index.jsx +++ b/src/client/index.jsx @@ -23,7 +23,6 @@ import ManageAdviser from '../apps/companies/apps/advisers/client/ManageAdviser' import ReferralDetails from '../apps/companies/apps/referrals/details/client/ReferralDetails' import SendReferralForm from '../apps/companies/apps/referrals/send-referral/client/SendReferralForm' import InteractionReferralDetails from './modules/Interactions/InteractionDetails/InteractionReferralDetails.jsx' -import InvestmentProjectAdmin from '../apps/investments/views/admin/client/InvestmentProjectAdmin.jsx' import FlashMessages from './components/LocalHeader/FlashMessages.jsx' import PersonalisedDashboard from './components/PersonalisedDashboard' import InvestmentProjectForm from '../apps/investments/client/projects/create/InvestmentProjectForm' @@ -35,6 +34,7 @@ import InteractionDetails from './modules/Interactions/InteractionDetails' import OrdersReconciliationCollection from './modules/Omis/CollectionList/OrdersReconciliationCollection' import PropositionDetails from './modules/Investments/Projects/Propositions/PropositionDetails' import CompanyHierarchy from './modules/Companies/CompanyHierarchy' +import InvestmentProjectAdmin from './modules/Investments/Projects/Admin/InvestmentProjectAdmin.jsx' import Footer from '../client/components/Footer' From 4ef2c990e6687f136382d6360dac03d43677fd51 Mon Sep 17 00:00:00 2001 From: Richard Pentecost Date: Wed, 7 Feb 2024 14:54:03 +0000 Subject: [PATCH 4/4] change investment project admin component to use existing project stage resource and remove newly created resource, refactor file structure moving state and tasks into existing files at the route of the projects folder inside investments --- .../components/Resource/InvestmentProjectStages.js | 6 ------ src/client/components/Resource/index.jsx | 1 - src/client/components/Resource/tasks.js | 2 -- src/client/index.jsx | 4 ---- .../modules/Investments/Projects/Admin/state.js | 1 - .../modules/Investments/Projects/Admin/tasks.js | 6 ------ .../Projects/{Admin => }/InvestmentProjectAdmin.jsx | 12 ++++++------ src/client/modules/Investments/Projects/state.js | 1 + src/client/modules/Investments/Projects/tasks.js | 5 +++++ src/client/routes.js | 2 +- src/client/tasks.js | 5 ++--- 11 files changed, 15 insertions(+), 30 deletions(-) delete mode 100644 src/client/components/Resource/InvestmentProjectStages.js delete mode 100644 src/client/modules/Investments/Projects/Admin/state.js delete mode 100644 src/client/modules/Investments/Projects/Admin/tasks.js rename src/client/modules/Investments/Projects/{Admin => }/InvestmentProjectAdmin.jsx (89%) diff --git a/src/client/components/Resource/InvestmentProjectStages.js b/src/client/components/Resource/InvestmentProjectStages.js deleted file mode 100644 index f3f75e33785..00000000000 --- a/src/client/components/Resource/InvestmentProjectStages.js +++ /dev/null @@ -1,6 +0,0 @@ -import { createMetadataResource } from './Resource' - -export default createMetadataResource( - 'InvestmentProjectStages', - 'investment-project-stage' -) diff --git a/src/client/components/Resource/index.jsx b/src/client/components/Resource/index.jsx index 0cb8a2a39ed..0531ef94f9e 100644 --- a/src/client/components/Resource/index.jsx +++ b/src/client/components/Resource/index.jsx @@ -37,7 +37,6 @@ export { default as InvestmentProjectStageResource } from './ProjectStage' export { default as InvestmentTypesResource } from './InvestmentTypes' export { default as InvestorTypesResource } from './InvestorTypes' export { default as InvestmentInvestorTypesResource } from './InvestmentInvestorTypes' -export { default as InvestmentProjectStagesResource } from './InvestmentProjectStages' export { default as InvestmentProjectTasksResource } from './InvestmentProjectTasks' export { default as LargeCapitalInvestmentEquityPercentagesResource } from './LargeCapitalInvestmentEquityPercentages' export { default as LargeCapitalInvestmentRestrictionsResource } from './LargeCapitalInvestmentRestrictions' diff --git a/src/client/components/Resource/tasks.js b/src/client/components/Resource/tasks.js index 94793f613d3..fbc86d3bc86 100644 --- a/src/client/components/Resource/tasks.js +++ b/src/client/components/Resource/tasks.js @@ -87,7 +87,6 @@ import TaskCompletedSettings from './TaskCompletedSettings' import OmisMarkets from './OmisMarkets' import OrderPayment from './OrderPayment' import TaskCompaniesAndProjects from './TaskCompaniesAndProjects' -import InvestmentProjectStages from './InvestmentProjectStages' export default { ...AssociatedProgramme.tasks, @@ -179,5 +178,4 @@ export default { ...OmisMarkets.tasks, ...OrderPayment.tasks, ...TaskCompaniesAndProjects.tasks, - ...InvestmentProjectStages.tasks, } diff --git a/src/client/index.jsx b/src/client/index.jsx index eb609430122..1d0ad819760 100644 --- a/src/client/index.jsx +++ b/src/client/index.jsx @@ -34,7 +34,6 @@ import InteractionDetails from './modules/Interactions/InteractionDetails' import OrdersReconciliationCollection from './modules/Omis/CollectionList/OrdersReconciliationCollection' import PropositionDetails from './modules/Investments/Projects/Propositions/PropositionDetails' import CompanyHierarchy from './modules/Companies/CompanyHierarchy' -import InvestmentProjectAdmin from './modules/Investments/Projects/Admin/InvestmentProjectAdmin.jsx' import Footer from '../client/components/Footer' @@ -190,9 +189,6 @@ function App() { {(props) => } - - {(props) => } - {(props) => } diff --git a/src/client/modules/Investments/Projects/Admin/state.js b/src/client/modules/Investments/Projects/Admin/state.js deleted file mode 100644 index 3f309c0bd71..00000000000 --- a/src/client/modules/Investments/Projects/Admin/state.js +++ /dev/null @@ -1 +0,0 @@ -export const TASK_UPDATE_STAGE = 'TASK_UPDATE_STAGE' diff --git a/src/client/modules/Investments/Projects/Admin/tasks.js b/src/client/modules/Investments/Projects/Admin/tasks.js deleted file mode 100644 index 4477856dfea..00000000000 --- a/src/client/modules/Investments/Projects/Admin/tasks.js +++ /dev/null @@ -1,6 +0,0 @@ -import { apiProxyAxios } from '../../../../components/Task/utils' - -export const updateProjectStage = ({ values, projectId }) => - apiProxyAxios.post(`/v3/investment/${projectId}/update-stage`, { - stage: { id: values.projectStageId }, - }) diff --git a/src/client/modules/Investments/Projects/Admin/InvestmentProjectAdmin.jsx b/src/client/modules/Investments/Projects/InvestmentProjectAdmin.jsx similarity index 89% rename from src/client/modules/Investments/Projects/Admin/InvestmentProjectAdmin.jsx rename to src/client/modules/Investments/Projects/InvestmentProjectAdmin.jsx index 839a8a7b2e9..51dbd7291b3 100644 --- a/src/client/modules/Investments/Projects/Admin/InvestmentProjectAdmin.jsx +++ b/src/client/modules/Investments/Projects/InvestmentProjectAdmin.jsx @@ -5,20 +5,20 @@ import { H4, InsetText } from 'govuk-react' import styled from 'styled-components' import { SPACING } from '@govuk-react/constants' -import urls from '../../../../../lib/urls' +import urls from '../../../../lib/urls' import { InvestmentProjectStageResource, InvestmentResource, -} from '../../../../components/Resource' -import { buildProjectBreadcrumbs } from '../../utils' -import { transformObjectToOption } from '../../../../../apps/transformers' +} from '../../../components/Resource' +import { buildProjectBreadcrumbs } from '../utils' +import { transformObjectToOption } from '../../../../apps/transformers' import { DefaultLayout, FieldRadios, Form, FormLayout, -} from '../../../../components' -import { FORM_LAYOUT } from '../../../../../common/constants' +} from '../../../components' +import { FORM_LAYOUT } from '../../../../common/constants' import { TASK_UPDATE_STAGE } from './state' const StyledP = styled('p')` diff --git a/src/client/modules/Investments/Projects/state.js b/src/client/modules/Investments/Projects/state.js index ed67b0e3bd7..6f7feb07c51 100644 --- a/src/client/modules/Investments/Projects/state.js +++ b/src/client/modules/Investments/Projects/state.js @@ -15,6 +15,7 @@ export const TASK_EDIT_INVESTMENT_PROJECT_STATUS = 'TASK_EDIT_INVESTMENT_PROJECT_STATUS' export const TASK_UPDATE_INVESTMENT_PROJECT_STAGE = 'TASK_UPDATE_INVESTMENT_PROJECT_STAGE' +export const TASK_UPDATE_STAGE = 'TASK_UPDATE_STAGE' export const INVESTMENT_PROJECTS_ID = 'projectsList' export const INVESTMENT_PROJECT_ID = 'investmentProject' diff --git a/src/client/modules/Investments/Projects/tasks.js b/src/client/modules/Investments/Projects/tasks.js index d8d55bf1002..e702e9ed5a6 100644 --- a/src/client/modules/Investments/Projects/tasks.js +++ b/src/client/modules/Investments/Projects/tasks.js @@ -69,3 +69,8 @@ export const completeInvestmentPropositions = (values) => `v3/investment/${values.investmentProjectId}/proposition/${values.propositionId}/complete` ) .then(({ data }) => data) + +export const updateProjectStage = ({ values, projectId }) => + apiProxyAxios.post(`/v3/investment/${projectId}/update-stage`, { + stage: { id: values.projectStageId }, + }) diff --git a/src/client/routes.js b/src/client/routes.js index 5af27fd1cdc..c6ac8bc7846 100644 --- a/src/client/routes.js +++ b/src/client/routes.js @@ -94,7 +94,7 @@ import CompanyProjectsCollection from './modules/Companies/CompanyInvestments/Co import LargeCapitalProfile from './modules/Companies/CompanyInvestments/LargeCapitalProfile' import ExportsIndex from './modules/Companies/CompanyExports/ExportsIndex' import ExportsHistory from './modules/Companies/CompanyExports/ExportHistory' -import InvestmentProjectAdmin from './modules/Investments/Projects/Admin/InvestmentProjectAdmin' +import InvestmentProjectAdmin from './modules/Investments/Projects/InvestmentProjectAdmin' const routes = { companies: [ diff --git a/src/client/tasks.js b/src/client/tasks.js index 72788af856f..39c163d63be 100644 --- a/src/client/tasks.js +++ b/src/client/tasks.js @@ -97,6 +97,7 @@ import { TASK_EDIT_INVESTMENT_PROJECT_STATUS, TASK_UPDATE_INVESTMENT_PROJECT_STAGE, TASK_GET_INVESTMENT_PROJECT, + TASK_UPDATE_STAGE, } from './modules/Investments/Projects/state' import * as investmentProjectTasks from './modules/Investments/Projects/tasks' @@ -436,8 +437,6 @@ import { getExportProject, getExportWin, } from '../client/modules/ExportWins/Form/tasks' -import { TASK_UPDATE_STAGE } from './modules/Investments/Projects/Admin/state' -import * as investmentAdminTasks from './modules/Investments/Projects/Admin/tasks' export const tasks = { 'Create list': createList, @@ -465,7 +464,7 @@ export const tasks = { [TASK_SAVE_INTERACTION]: addInteractionFormTasks.saveInteraction, [TASK_GET_INTERACTION_INITIAL_VALUES]: addInteractionFormTasks.getInitialFormValues, - [TASK_UPDATE_STAGE]: investmentAdminTasks.updateProjectStage, + [TASK_UPDATE_STAGE]: investmentProjectTasks.updateProjectStage, [TASK_SAVE_OPPORTUNITY_DETAILS]: investmentOpportunitiesDetailsTasks.saveOpportunityDetails, [TASK_SAVE_OPPORTUNITY_STATUS]: