Skip to content

Commit

Permalink
Merge pull request #558 from ertush/fallback-for-facilities-page-fix
Browse files Browse the repository at this point in the history
Fallback for facilities page fix
  • Loading branch information
ertush authored Dec 16, 2024
2 parents 1988491 + 44506c1 commit 97cc351
Show file tree
Hide file tree
Showing 4 changed files with 107 additions and 57 deletions.
9 changes: 8 additions & 1 deletion pages/community-units/[id].js
Original file line number Diff line number Diff line change
Expand Up @@ -223,7 +223,14 @@ function EditCommunityUnit(props){
<button
onClick={() =>
router.push(
"/community-units/edit/" + props?.cu?.id
{
pathname: `/community-units/edit/${props?.cu?.id}`,
query: {
county: userCtx?.county,
sub_county: userCtx?.user_sub_counties.length > 1 ? userCtx?.user_sub_counties?.map(({sub_county}) => sub_county)?.join(',') : userCtx?.user_sub_counties[0]?.sub_county,
group: userCtx?.groups[0]?.id
}
}
)
}
className="p-2 text-center -md font-semibold rounded text-base text-white bg-black"
Expand Down
48 changes: 19 additions & 29 deletions pages/community-units/add.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import React, { useState, useEffect, createContext, useContext } from 'react';
import Head from 'next/head';
import MainLayout from '../../components/MainLayout';
import EditListItem from '../../components/Forms/formComponents/EditListItem';
import { checkToken } from '../../controllers/auth/auth';
import { checkToken, getUserDetails } from '../../controllers/auth/auth';
import Box from '@mui/material/Box';
import Stepper from '@mui/material/Stepper';
import Step from '@mui/material/Step';
Expand Down Expand Up @@ -1337,7 +1337,7 @@ function AddCommunityUnit(props) {
);
}

export async function getServerSideProps({req, res}) {
export async function getServerSideProps({req, res, query}) {

res?.setHeader(
'Cache-Control',
Expand All @@ -1357,28 +1357,18 @@ export async function getServerSideProps({req, res}) {
]


function fetchFacilities(url) {
return fetch(url, {
headers: {
'Accept': 'application/json',
'Authorization': `Bearer ${token}`
}
})
.then(resp => resp.json())
.then( (resp) => {



const userSubCountyIDs = resp?.user_sub_counties.length > 1 ? resp?.user_sub_counties.map(({sub_county}) => sub_county).join(',') : resp?.user_sub_counties[0]?.sub_county
const userCountyID = resp?.county
const userGroup = resp?.groups[0]?.id


if(userGroup == 2 && userSubCountyIDs){

const subCountyFacilitiesURL = `${process.env.NEXT_PUBLIC_API_URL}/facilities/facilities/?sub_county=${userSubCountyIDs}&reporting_in_dhis=true&closed=false&fields=id,name,county,sub_county_name,constituency,ward_name&page_size=300`
function fetchFacilities(user) {

const userSubCountyIDs = user?.sub_county
const userCountyID = user?.county
const userGroup = user?.group

// debug
console.log({userSubCountyIDs,userCountyID,userGroup})

if(userGroup == 2 && userSubCountyIDs){

const subCountyFacilitiesURL = `${process.env.NEXT_PUBLIC_API_URL}/facilities/facilities/?sub_county=${userSubCountyIDs}&reporting_in_dhis=true&closed=false&fields=id,name,county,sub_county_name,constituency,ward_name&page_size=500`

return fetch(subCountyFacilitiesURL, {
headers:{
Expand Down Expand Up @@ -1424,12 +1414,10 @@ export async function getServerSideProps({req, res}) {
})

} else {
console.log('default case')
return []
}

})
.catch(e => console.error('Error rest-auth user :', e.message))

}


Expand All @@ -1454,10 +1442,12 @@ export async function getServerSideProps({req, res}) {
break;

case "facilities":

const url = `${process.env.NEXT_PUBLIC_API_URL}/rest-auth/user/`

response['facilities'] = await fetchFacilities(url)

response['facilities'] = await fetchFacilities({
county: query?.county,
sub_county: query?.sub_county,
group: query?.group
} ?? '')

break;
case "contact_types":
Expand Down
96 changes: 70 additions & 26 deletions pages/community-units/edit/[id].js
Original file line number Diff line number Diff line change
Expand Up @@ -61,26 +61,67 @@ export async function getServerSideProps(ctx) {
const queryId = zSchema.parse(ctx.query).id


async function fetchFacilities() {
async function fetchFacilities(user) {

const { response: user } = await getUserDetails(token, `${process.env.NEXT_PUBLIC_API_URL}/rest-auth/user/`)

const params = `?sub_county=${user?.user_sub_counties?.length > 1 ? user?.user_sub_counties?.map(({sub_county}) => sub_county)?.join(',') : user?.user_sub_counties[0]}&fields=id,name,county,sub_county_name,constituency,ward_name`


return fetch(`${process.env.NEXT_PUBLIC_API_URL}/facilities/facilities/${params}&reporting_in_dhis=true&closed=false`, { /*&owner_type=6a833136-5f50-46d9-b1f9-5f961a42249f*/
headers: {
'Authorization': 'Bearer ' + token,
'Accept': 'application/json'
}

})
.then(resp => resp.json())
.then(resp => {

return resp?.results?.map(({ id, name }) => ({ label: name, value: id }))
})
.catch(console.error)
const userSubCountyIDs = user?.sub_county
const userCountyID = user?.county
const userGroup = user?.group

// debug
// console.log({userSubCountyIDs,userCountyID,userGroup})

if(userGroup == 2 && userSubCountyIDs){

const subCountyFacilitiesURL = `${process.env.NEXT_PUBLIC_API_URL}/facilities/facilities/?sub_county=${userSubCountyIDs}&reporting_in_dhis=true&closed=false&fields=id,name&page_size=500`

return fetch(subCountyFacilitiesURL, {
headers:{
'Authorization': 'Bearer ' + token,
'Accept': 'application/json'
}

})
.then(resp => resp.json())
.then(resp => {
return resp?.results?.map(({id, name}) => ({value:id, label:name}))
})



}

else if(userGroup == 1 && userCountyID) {

return fetch(`${process.env.NEXT_PUBLIC_API_URL}/facilities/facilities/?county=${userCountyID}&reporting_in_dhis=true&closed=false&owner_type=6a833136-5f50-46d9-b1f9-5f961a42249f&fields=id,name`,{
headers:{
'Authorization': 'Bearer ' + token,
'Accept': 'application/json'
}
}).then(resp => resp.json())
.then(resp => {
return resp?.results?.map(({id, name}) => ({value:id, label:name}))
})


}
else if(userGroup == 7 || userGroup == 11 || userGroup == 5) {
return fetch(`${process.env.NEXT_PUBLIC_API_URL}/facilities/facilities/?reporting_in_dhis=true&closed=false&owner_type=6a833136-5f50-46d9-b1f9-5f961a42249f&fields=id,name`,{
headers:{
'Authorization': 'Bearer ' + token,
'Accept': 'application/json'
}

})
.then(resp => resp.json())
.then(resp => {
return resp?.results?.map(({id, name}) => ({value:id, label:name}))
})

} else {
return []
}


}

Expand All @@ -104,7 +145,7 @@ export async function getServerSideProps(ctx) {

})

response["cu"] = await (await cu.json())
response["cu"] = (await (await cu.json())) ?? []

break;

Expand All @@ -117,16 +158,19 @@ export async function getServerSideProps(ctx) {

})

response["statuses"] = (await (await statuses.json()))?.results?.map(({ id, name }) => ({ label: name, value: id }))
response["statuses"] = ((await (await statuses.json()))?.results?.map(({ id, name }) => ({ label: name, value: id }))) ?? []
break;

case "facilities":

// const url = `${process.env.NEXT_PUBLIC_API_URL}/common/sub_counties/?name=${response?.cu?.facility_subcounty.split(' ').join('+')}`
// const { response: user } = await getUserDetails(token, `${process.env.NEXT_PUBLIC_API_URL}/rest-auth/user/`)
const url = `${process.env.NEXT_PUBLIC_API_URL}/rest-user/`
const facilities = await fetchFacilities({
county: ctx?.query?.county,
sub_county: ctx?.query?.sub_county,
group: ctx?.query?.group
})


response['facilities'] = await fetchFacilities(url)
response['facilities'] = facilities

break;

Expand All @@ -139,7 +183,7 @@ export async function getServerSideProps(ctx) {

})

response["contact_types"] = (await (await contact_types.json()))?.results?.map(({ id, name }) => ({ label: name, value: id }))
response["contact_types"] = ((await (await contact_types.json()))?.results?.map(({ id, name }) => ({ label: name, value: id }))) ?? []
break;

case "services":
Expand All @@ -151,7 +195,7 @@ export async function getServerSideProps(ctx) {

})

response["services"] = (await (await services.json()))?.results
response["services"] = ((await (await services.json()))?.results) ?? []
break;
}
}
Expand Down
11 changes: 10 additions & 1 deletion pages/community-units/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,16 @@ function CommunityUnit(props) {
className='px-4 py-2 bg-gray-600 rounded text-white text-sm tracking-tighter font-semibold whitespace-nowrap hover:bg-black focus:bg-black active:bg-black uppercase'>
<button
onClick={() => {
router.push('/community-units/add');
router.push(
{
pathname:'/community-units/add',
query: {
county: userCtx?.county,
sub_county: userCtx?.user_sub_counties.length > 1 ? userCtx?.user_sub_counties.map(({sub_county}) => sub_county)?.join(',') : userCtx?.user_sub_counties[0]?.sub_county,
group: userCtx?.groups[0]?.id
}
}
);
}}
className='flex items-center justify-center'>
<span className='text-base uppercase font-semibold'>Add Community Health Unit</span>
Expand Down

0 comments on commit 97cc351

Please sign in to comment.