Skip to content

Commit

Permalink
Merge pull request #472 from ertush/hotfix
Browse files Browse the repository at this point in the history
Hotfix: Fixed issue of SCHRIO seeing facility data from other counties
ertush authored Sep 5, 2024
2 parents 6f4f3c2 + 3f51308 commit a65604b
Showing 2 changed files with 112 additions and 18 deletions.
66 changes: 53 additions & 13 deletions components/FacilitySideMenu.js
Original file line number Diff line number Diff line change
@@ -6,13 +6,23 @@ import router from 'next/router'
import { hasPermission } from '../utils/checkPermissions';
import { PermissionContext } from '../providers/permissions';
import { useSearchParams } from 'next/navigation';
import { UserContext } from '../providers/user';

function FacilitySideMenu({ states, stateSetters, filters }) {

const userPermissions = useContext(PermissionContext)


const searchParams = useSearchParams()

const userCtx = useContext(UserContext)

const userGroup = userCtx?.groups[0]?.id

const userCounty = userCtx?.user_counties[0]?.county

const userSubCounty = userCtx?.user_sub_counties[0]?.sub_county

// const quickFilters = [
// {
// name: 'All',
@@ -92,8 +102,15 @@ function FacilitySideMenu({ states, stateSetters, filters }) {
// }
// ]



function userOrgUnit() {
if(userGroup === 1) { // CHRIO
return {county: userCounty}
} else if (userGroup === 2) {
return {sub_county: userSubCounty}
} else {
return {}
}
}

return (

@@ -127,7 +144,9 @@ function FacilitySideMenu({ states, stateSetters, filters }) {
router.push({
pathname:'/facilities',
query: {
filter:'all_facilities'
filter:'all_facilities',
...userOrgUnit()

}
})

@@ -162,7 +181,8 @@ function FacilitySideMenu({ states, stateSetters, filters }) {
filter:'approved_facilities',
approved: true,
approved_national_level: true,
rejected: false
rejected: false,
...userOrgUnit()
}
})

@@ -197,7 +217,9 @@ function FacilitySideMenu({ states, stateSetters, filters }) {
query: {
filter:'pending_validation_facilities',
pending_approval: true,
has_edits: false
has_edits: false,
...userOrgUnit()

}
})

@@ -229,7 +251,9 @@ function FacilitySideMenu({ states, stateSetters, filters }) {
pathname:'/facilities',
query: {
filter:'updated_pending_validation_facilities',
have_updates: true
have_updates: true,
...userOrgUnit()

}
})

@@ -261,7 +285,9 @@ function FacilitySideMenu({ states, stateSetters, filters }) {
pathname:'/facilities',
query: {
filter:'pending_approval_facilities',
to_publish: true
to_publish: true,
...userOrgUnit()

}
})

@@ -296,7 +322,9 @@ function FacilitySideMenu({ states, stateSetters, filters }) {
approved: true,
approved_national_level: true,
rejected: false,
reporting_in_dhis: true
reporting_in_dhis: true,
...userOrgUnit()

}
})

@@ -328,7 +356,9 @@ function FacilitySideMenu({ states, stateSetters, filters }) {
pathname:'/facilities',
query: {
filter:'failed_validation_facilities',
rejected: true
rejected: true,
...userOrgUnit()

}
})

@@ -360,7 +390,9 @@ function FacilitySideMenu({ states, stateSetters, filters }) {
pathname:'/facilities',
query: {
filter:'rejected_facilities',
rejected_national_true: true
rejected_national_true: true,
...userOrgUnit()

}
})

@@ -392,7 +424,9 @@ function FacilitySideMenu({ states, stateSetters, filters }) {
pathname:'/facilities',
query: {
filter:'closed_facilities',
closed: true
closed: true,
...userOrgUnit()

}
})

@@ -424,7 +458,9 @@ function FacilitySideMenu({ states, stateSetters, filters }) {
pathname:'/facilities',
query: {
filter:'incomplete_facilities',
incomplete: true
incomplete: true,
...userOrgUnit()

}
})

@@ -455,7 +491,9 @@ function FacilitySideMenu({ states, stateSetters, filters }) {
pathname:'/facilities',
query: {
filter:'synchronized_regulated_facilities',
mfl_code_null: true
mfl_code_null: true,
...userOrgUnit()

}
})

@@ -487,6 +525,8 @@ function FacilitySideMenu({ states, stateSetters, filters }) {
pathname:'/facilities',
query: {
filter:'feed_back_facilities',
...userOrgUnit()

}
})

64 changes: 59 additions & 5 deletions pages/facilities/index.js
Original file line number Diff line number Diff line change
@@ -32,9 +32,15 @@ function FacilityHome (props){
// const facilities = props?.data?.results
const filters = props?.filters
const fltrs = props?.filters

const userCtx = useContext(UserContext);

const groupID = userCtx?.groups[0]?.id

const userCounty = userCtx?.user_counties[0]?.county

const userSubCounty = userCtx?.user_sub_counties[0]?.sub_county


// const qf = props?.query?.qf ?? null

@@ -107,6 +113,16 @@ function FacilityHome (props){
}
}, [facilityFeedBack, title])

function userOrgUnit() {
if(groupID === 1) { // CHRIO
return {county: userCounty}
} else if (groupID === 2) { // SCHRIO
return {sub_county: userSubCounty}
} else {
return {}
}
}


function handleAccordionExpand(ev) {
if(isAccordionExpanded){
@@ -148,21 +164,26 @@ function FacilityHome (props){
router.push({
pathname:'/facilities',
query: {
next: Buffer.from(`${props?.next}`).toString('base64') //default: page_size=30
next: Buffer.from(`${props?.next}`).toString('base64'),
...userOrgUnit
//default: page_size=30

// ...params
}
})
}



function handlePrevious() {

// const params = Object.fromEntries(pageParams.entries())

router.push({
pathname:'/facilities',
query: {
previous: Buffer.from(`${props?.previous}`).toString('base64') //default: page_size=30
previous: Buffer.from(`${props?.previous}`).toString('base64'),
...userOrgUnit //default: page_size=30
//...params
}
})
@@ -177,7 +198,8 @@ function FacilityHome (props){
router.push({
pathname:'/facilities',
query: {
page
page,
...userOrgUnit()
// ...params
}
})
@@ -842,6 +864,20 @@ export async function getServerSideProps(ctx) {
// )


function fetchCurrentUser(token) {
return fetch(`${process.env.NEXT_PUBLIC_API_URL}/rest-auth/user/`, {
headers:{
'Authorization': `Bearer ${token}`,
'Accept': 'application/json',
'Cache-Control': 'public, s-maxage=10, stale-while-revalidate=59'
}
})
.then(resp => resp.json())
.then(resp => resp)
}



function fetchFilters(token) {

const filtersURL = `${process.env.NEXT_PUBLIC_API_URL}/common/filtering_summaries/?fields=county,facility_type,constituency,ward,operation_status,service_category,owner_type,owner,service,keph_level,sub_county`
@@ -873,6 +909,11 @@ export async function getServerSideProps(ctx) {

const page = ctx?.query?.page


const user = await fetchCurrentUser(token)

const userGroup = user?.groups[0]?.id

// const nextURL = ctx?.query?.next

const previousURL = ctx?.query?.previous ? Buffer.from(ctx?.query?.previous, 'base64').toString() : null
@@ -943,7 +984,6 @@ export async function getServerSideProps(ctx) {

})

// console.log({url})


let current_url = url + '&page_size=100'
@@ -952,8 +992,22 @@ export async function getServerSideProps(ctx) {
}


// console.log({url})
try {

if(userGroup === 1) { // CHRIO

const userCountyID = user?.county
url = `${url}&county=${userCountyID}`

} else if(userGroup === 2) { // SCHRIO

const userSubCountyID = user?.user_sub_counties[0]?.sub_county
url = `${url}&sub_county=${userSubCountyID}`

}

// console.log({url})

facilities = (await (await fetch(url, {
headers: {
'Accept': 'application/json',

0 comments on commit a65604b

Please sign in to comment.