|
|
|
|
@ -6,16 +6,38 @@ import { DatabaseError } from "pg";
|
|
|
|
|
import Trainer from "../interfaces/trainer";
|
|
|
|
|
import { AdminAuth } from "../middlewares/auth";
|
|
|
|
|
import { trainerExists } from "../middlewares/trainer";
|
|
|
|
|
import { idSchema } from "../schemas";
|
|
|
|
|
|
|
|
|
|
const router: Router = express.Router();
|
|
|
|
|
|
|
|
|
|
const trainerFiltersSchema = Joi.object({
|
|
|
|
|
center: Joi.array().single().items(
|
|
|
|
|
idSchema.required()
|
|
|
|
|
)
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
interface TrainerFilters {
|
|
|
|
|
center?: number[]
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
router.get("/trainer", async (req: Request, res: Response) => {
|
|
|
|
|
try {
|
|
|
|
|
const validation = trainerFiltersSchema.validate(req.query, { abortEarly: false, stripUnknown: true });
|
|
|
|
|
if (validation.error !== undefined) {
|
|
|
|
|
return res.status(400).send(validation.error.details);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const trainerFilters: TrainerFilters = validation.value;
|
|
|
|
|
|
|
|
|
|
const databaseResult = await client.query(`
|
|
|
|
|
SELECT trainers.id, first_name, last_name, center_id, centers.name as center_name FROM trainers
|
|
|
|
|
JOIN users ON trainers.user_id = users.id
|
|
|
|
|
JOIN centers on trainers.center_id = centers.id;
|
|
|
|
|
`);
|
|
|
|
|
JOIN centers on trainers.center_id = centers.id
|
|
|
|
|
WHERE trainers.id = ANY($1) OR $2;
|
|
|
|
|
`,[
|
|
|
|
|
trainerFilters.center !== undefined ? trainerFilters.center : [],
|
|
|
|
|
trainerFilters.center === undefined
|
|
|
|
|
]);
|
|
|
|
|
|
|
|
|
|
const trainers: Trainer[] = databaseResult.rows;
|
|
|
|
|
|
|
|
|
|
|