Skip to content

Commit

Permalink
Merge branch '4000-dashboard-cycle-2029-dynamic-metadata' of github.c…
Browse files Browse the repository at this point in the history
…om:openforis/fra-platform into 4000-clean-up
  • Loading branch information
sorja committed Oct 15, 2024
2 parents e60d918 + 7a8202b commit eccb089
Show file tree
Hide file tree
Showing 4 changed files with 40 additions and 8 deletions.
4 changes: 2 additions & 2 deletions src/server/api/cycleData/dashboard/getDashboardItems.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,11 @@ import Requests from 'server/utils/requests'

export const getDashboardItems = async (req: CycleRequest, res: Response) => {
try {
const { assessmentName, cycleName } = req.query
const { assessmentName, cycleName, countryIso } = req.query

const { assessment, cycle } = await AssessmentController.getOneWithCycle({ assessmentName, cycleName })

const result = await DashboardController.getManyItems({ assessment, cycle })
const result = await DashboardController.getManyItems({ assessment, cycle, countryIso })
Requests.send(res, result)
} catch (e) {
Requests.sendErr(res, e)
Expand Down
24 changes: 24 additions & 0 deletions src/server/controller/cycleData/dashboard/getManyItems.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import { Objects } from 'utils/objects'

import { AreaCode, Areas } from 'meta/area'
import { Assessment, Cycle } from 'meta/assessment'
import { DashboardItem, DashboardItemType } from 'meta/dashboard'

import { NodeExtRepository } from 'server/repository/assessmentCycle/nodeExt'

type Props = {
assessment: Assessment
cycle: Cycle
countryIso: AreaCode
}

export const getManyItems = async (props: Props): Promise<Array<DashboardItem<DashboardItemType>>> => {
const { assessment, cycle, countryIso } = props
const isISOCountry = Areas.isISOCountry(countryIso)
const countryDashboardItems = await NodeExtRepository.getManyDashboardItems({ assessment, cycle })
if (isISOCountry) return countryDashboardItems

const regionDashboardItems = await NodeExtRepository.getManyDashboardItems({ assessment, cycle, region: true })

return Objects.merge(countryDashboardItems, regionDashboardItems)
}
4 changes: 2 additions & 2 deletions src/server/controller/cycleData/dashboard/index.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { NodeExtRepository } from 'server/repository/assessmentCycle/nodeExt'
import { getManyItems } from './getManyItems'

export const DashboardController = {
getManyItems: NodeExtRepository.getManyDashboardItems,
getManyItems,
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,25 @@ import { NodeExtType } from 'meta/nodeExt'

import { BaseProtocol, DB, Schemas } from 'server/db'

type Props = { assessment: Assessment; cycle: Cycle }
type Props = { assessment: Assessment; cycle: Cycle; region?: boolean }

export const getManyDashboardItems = async (
props: Props,
client: BaseProtocol = DB
): Promise<Array<DashboardItem<DashboardItemType>>> => {
const { assessment, cycle } = props
const { assessment, cycle, region } = props
const schemaCycle = Schemas.getNameCycle(assessment, cycle)

return client.one<Array<DashboardItem<DashboardItemType>>>(
`select value from ${schemaCycle}.node_ext where type = $1`,
`
select value
from ${schemaCycle}.node_ext
where type = $1
${
region
? `and (props->>'region')::boolean = true`
: `and (props->>'region' is null or (props->>'region')::boolean = false)`
}
`,
[NodeExtType.dashboard],
(result) => result.value
)
Expand Down

0 comments on commit eccb089

Please sign in to comment.