Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix/bugs medical records services #89

Merged
merged 3 commits into from
Dec 14, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/database/prisma/schema.prisma
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ model Pet {
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
qrCode String?
adoptedBy String? // Foreign Key for Adopter
adoptedBy String? // Foreign Key for A dopter
shelterId String? // Foreign Key for Shelter
createdBy String? // Foreign Key for Volunteer
vetId String? // Foreign Key for Vet
Expand Down
10 changes: 5 additions & 5 deletions src/routes/pet.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,7 @@ import {
getPets,
update,
deletePet,
getPetsUser,
getDashboardPets,
getUserPets,
deleteMedicalRecord,
updateMedicalRecord,
} from '../useCases/petCases/petController'
Expand All @@ -25,11 +24,12 @@ router.post('/pets', [verifyToken, uploadImagesCreationPet], create) // CREATE P

router.put('/pets/:petId', [verifyToken, uploadImagesUpdatePet], update) // UPDATE PET

router.get('/pets', getPets) // GET ALL PETS
router.get('/pets', getPets) // GET PETS

router.get('/dashboard/pets', [verifyToken], getDashboardPets) // GET PETS FOR DASHBOARD
// this route is for calculate the total of pets for the dashboard and another things
// router.get('/dashboard/pets', [verifyToken], getDashboardPets) // GET PETS FOR DASHBOARD

router.get('/pets/petsUser', getPetsUser) // GET PETS
router.get('/pets/user', getUserPets) // GET PETS

router.post(
'/pets/medicalRecord',
Expand Down
1 change: 1 addition & 0 deletions src/useCases/petCases/createPet.ts
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,7 @@ const cleanData = (obj: Record<string, any>): Record<string, any> => {
if (key === 'qrCodeImage') continue
if (key === 'string') continue
if (key === 'newImages') continue
if (key === 'name') value = value.toLowerCase()

newObj[key] =
typeof value === 'object' && !Array.isArray(value)
Expand Down
158 changes: 79 additions & 79 deletions src/useCases/petCases/getDashboardPets.ts
Original file line number Diff line number Diff line change
@@ -1,91 +1,91 @@
import { Request, Response } from 'express'
import { SUCCESS_RESPONSE, SOMETHING_IS_WRONG } from '../../constants/constants'
import { prisma } from '../../database/prisma'
import { ROLES } from '../../database/constants/roles'
import {
addFiltersToQuery,
buildBaseQuery,
buildVolunteerQuery,
filterBasedOnRole,
} from './utils/getDashboardPets'
// import { Request, Response } from 'express'
// import { SUCCESS_RESPONSE, SOMETHING_IS_WRONG } from '../../constants/constants'
// import { prisma } from '../../database/prisma'
// import { ROLES } from '../../database/constants/roles'
// import {
// addFiltersToQuery,
// buildBaseQuery,
// buildVolunteerQuery,
// filterBasedOnRole,
// } from './utils/getUserPets'

//=====================================
// READ LIST PETS = GET
//=====================================
// //=====================================
// // READ LIST PETS = GET
// //=====================================

export const getDashboardPets = async (req: Request, res: Response) => {
const filter = req.query as any
const userId = (req.user as { id: string })?.id
const user = await prisma.user.findUnique({ where: { id: userId } })
// export const getUserPets = async (req: Request, res: Response) => {
// const filter = req.query as any
// const userId = (req.user as { id: string })?.id
// const user = await prisma.user.findUnique({ where: { id: userId } })

let query: any = buildBaseQuery(filter.page)
query = filterBasedOnRole(query, user)
query = addFiltersToQuery(query, filter)
// let query: any = buildBaseQuery(filter.page)
// query = filterBasedOnRole(query, user)
// query = addFiltersToQuery(query, filter)

query.where.createdBy = user?.id
// query.where.createdBy = user?.id

if (!user?.role) {
return res.status(403).json({
ok: false,
message: 'User has no role',
})
}
// if (!user?.role) {
// return res.status(403).json({
// ok: false,
// message: 'User has no role',
// })
// }

try {
if (user?.role === ROLES.VOLUNTEER) {
const volunteerQuery = buildVolunteerQuery(user, filter)
// try {
// if (user?.role === ROLES.VOLUNTEER) {
// const volunteerQuery = buildVolunteerQuery(user, filter)

const petsCaredByVolunteer = await prisma.petsCaredByVolunteer.findMany({
...volunteerQuery,
select: { pet: true },
})
const countPets = await prisma.petsCaredByVolunteer.count(volunteerQuery)
// const petsCaredByVolunteer = await prisma.petsCaredByVolunteer.findMany({
// ...volunteerQuery,
// select: { pet: true },
// })
// const countPets = await prisma.petsCaredByVolunteer.count(volunteerQuery)

return res.status(200).json({
pets: petsCaredByVolunteer.map((pet: any) => pet.pet),
ok: true,
total: countPets,
message: SUCCESS_RESPONSE,
})
}
// return res.status(200).json({
// pets: petsCaredByVolunteer.map((pet: any) => pet.pet),
// ok: true,
// total: countPets,
// message: SUCCESS_RESPONSE,
// })
// }

const pets = await prisma.pet.findMany(query)
const countPets = await prisma.pet.count({ where: query.where })
// const pets = await prisma.pet.findMany(query)
// const countPets = await prisma.pet.count({ where: query.where })

res.status(200).json({
pets,
ok: true,
total: countPets,
message: SUCCESS_RESPONSE,
})
} catch (error) {
if (error) {
console.log(error)
return res.status(500).json({
ok: false,
message: SOMETHING_IS_WRONG,
error,
})
}
}
}
// res.status(200).json({
// pets,
// ok: true,
// total: countPets,
// message: SUCCESS_RESPONSE,
// })
// } catch (error) {
// if (error) {
// console.log(error)
// return res.status(500).json({
// ok: false,
// message: SOMETHING_IS_WRONG,
// error,
// })
// }
// }
// }

//=====================================
// READ ONE PET ID = GET
//=====================================
// //=====================================
// // READ ONE PET ID = GET
// //=====================================

export const getPet = async (_req: Request, res: Response) => {
try {
res.status(200).json({
ok: true,
message: SUCCESS_RESPONSE,
})
} catch (error) {
console.log(error)
return res.status(500).json({
ok: true,
message: SOMETHING_IS_WRONG,
error,
})
}
}
// export const getPet = async (_req: Request, res: Response) => {
// try {
// res.status(200).json({
// ok: true,
// message: SUCCESS_RESPONSE,
// })
// } catch (error) {
// console.log(error)
// return res.status(500).json({
// ok: true,
// message: SOMETHING_IS_WRONG,
// error,
// })
// }
// }
24 changes: 16 additions & 8 deletions src/useCases/petCases/getPets.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,14 @@ import { prisma } from '../../database/prisma'

export const getPets = async (req: Request, res: Response) => {
const filter = req.query as {
page?: string
take?: string
city?: string
gender: string
adopted: string
searchByName: string
country?: string
category?: string
page?: string
take?: string
userId: string
adoptedBy: string
shelterId?: string
searchByName: string
}

const itemsPerPage = 10
Expand All @@ -44,18 +43,27 @@ export const getPets = async (req: Request, res: Response) => {
location: true,
},
},
location: true,
},
}

if (filter.category) query.where.category = filter.category
if (filter.shelterId) query.where.shelterId = filter.shelterId
if (filter.adoptedBy) query.where.adoptedBy = filter.adoptedBy
if (filter.gender) query.where.gender = filter.gender
if (filter.adopted) query.where.adopted = filter.adopted === 'true'
if (filter.searchByName) {
query.where.name = { contains: filter.searchByName }
}

if (filter.country || filter.city) {
query.where.location = {}
if (filter.city) {
query.where.location.city = filter.city
}
if (filter.country) {
query.where.location.country = filter.country
}
}

try {
const pets = await prisma.pet.findMany(query)
const countPets = await prisma.pet.count({
Expand Down
24 changes: 0 additions & 24 deletions src/useCases/petCases/getPetsUser.ts

This file was deleted.

81 changes: 81 additions & 0 deletions src/useCases/petCases/getUserPets.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
import { Request, Response } from 'express'
import { SUCCESS_RESPONSE, SOMETHING_IS_WRONG } from '../../constants/constants'
import { prisma } from '../../database/prisma'
import { ROLES } from '../../database/constants/roles'
import {
addFiltersToQuery,
buildBaseQuery,
buildVolunteerQuery,
filterBasedOnRole,
} from './utils/getUserPets'

//=====================================
// READ LIST PETS = GET
//=====================================

export const getUserPets = async (req: Request, res: Response) => {
const filter = req.query as any
const user = await prisma.user.findUnique({ where: { id: filter.userId } })

let query: any = buildBaseQuery(filter.page)
query = filterBasedOnRole(query, user)
query = addFiltersToQuery(query, filter)

try {
if (user?.role === ROLES.VOLUNTEER) {
const volunteerQuery = buildVolunteerQuery(user, filter)

const petsCaredByVolunteer = await prisma.petsCaredByVolunteer.findMany({
...volunteerQuery,
select: { pet: true },
})
const countPets = await prisma.petsCaredByVolunteer.count(volunteerQuery)

return res.status(200).json({
pets: petsCaredByVolunteer.map((pet: any) => pet.pet),
ok: true,
total: countPets,
message: SUCCESS_RESPONSE,
})
}

const pets = await prisma.pet.findMany(query)
const countPets = await prisma.pet.count({ where: query.where })

res.status(200).json({
pets,
ok: true,
total: countPets,
message: SUCCESS_RESPONSE,
})
} catch (error) {
if (error) {
console.log(error)
return res.status(500).json({
ok: false,
message: SOMETHING_IS_WRONG,
error,
})
}
}
}

//=====================================
// READ ONE PET ID = GET
//=====================================

export const getPet = async (_req: Request, res: Response) => {
try {
res.status(200).json({
ok: true,
message: SUCCESS_RESPONSE,
})
} catch (error) {
console.log(error)
return res.status(500).json({
ok: true,
message: SOMETHING_IS_WRONG,
error,
})
}
}
6 changes: 2 additions & 4 deletions src/useCases/petCases/petController.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
import { create } from './createPet'
import { getPets, getPet } from './getPets'
import { update } from './updatePet'
import { getPetsUser } from './getPetsUser'
import { getDashboardPets } from './getDashboardPets'
import { getUserPets } from './getUserPets'
import { deletePet } from './deletePet'
import { updateMedicalRecord } from './updateMedicalRecord'
import { deleteMedicalRecord } from './deleteMedicalRecord'
Expand All @@ -13,8 +12,7 @@ export {
update,
getPets,
deletePet,
getPetsUser,
getDashboardPets,
getUserPets,
deleteMedicalRecord,
updateMedicalRecord,
}
Loading