Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @Get('/', AuthType.SECURE)
- public async get(req: express.Request, res: express.Response, next?: express.NextFunction) {
- try {
- const userID = req.user.id;
- const projectID = req.query.id;
- const sqlParams: Array<RequestParameter> = [
- { name: 'user_id', type: TYPES.Int, value: userID },
- { name: 'project_id', type: TYPES.Int, value: projectID }
- ];
- const sqlQueryProjectAssigned = 'SELECT * FROM PROJECT_DATA WHERE project_id IN (SELECT project_id FROM PROJECTS_ASSIGNED WHERE USER_ID = @user_id and project_id = @project_id )';
- const projectResult: Array<any> = await DatabaseController.getInstance().executeParamQuery(sqlQueryProjectAssigned, sqlParams);
- if (projectResult === undefined || projectResult.length === 0) {
- return res.sendStatus(404);
- }
- const sqlQueryProjectScores =
- `select SUM(CASE WHEN max_quick=5 THEN 1 ELSE 0 END) as num_emergencies,
- avg(avg_om) as avg_om_score,
- avg(avg_struct) as avg_structural_score
- from (
- select manhole_id, pipeline_id,
- max(left(coalesce(quick_score,'0'),1)) as max_quick,
- avg(coalesce(om_score,0)) as avg_om,
- avg(coalesce(structural_score,0)) as avg_struct
- from media_${projectID}
- group by manhole_id, pipeline_id
- ) as tempTable; `;
- const projectScoresResults: Array<any> = await DatabaseController.getInstance().executeQuery(sqlQueryProjectScores);
- if (projectResult === undefined || projectResult.length === 0) {
- return res.status(500).send('Problem encountered when executing query to calculate project scores');
- }
- const projectStats: ProjectDashboardStats = {
- id: parseInt(projectResult[0].project_id, 10),
- city: projectResult[0].city,
- numInspections: parseInt(projectResult[0].num_inspections, 10),
- completedInspections: parseInt(projectResult[0].num_inspected, 10),
- geoLocation: { lat: parseFloat(projectResult[0].lat), lng: parseFloat(projectResult[0].lng) },
- radius: parseInt(projectResult[0].geolocation_radius, 10),
- numEmergencies: parseInt(projectScoresResults[0].num_emergencies, 10),
- avgOmScore: parseFloat(projectScoresResults[0].avg_om_score),
- avgStructuralScore: parseFloat(projectScoresResults[0].avg_structural_score)
- };
- return res.status(200).send(projectStats);
- } catch (error) {
- return res.status(500).send(error);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement