Advertisement
Guest User

Untitled

a guest
Feb 24th, 2020
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.81 KB | None | 0 0
  1.  
  2. @Get('/', AuthType.SECURE)
  3. public async get(req: express.Request, res: express.Response, next?: express.NextFunction) {
  4.  
  5. try {
  6. const userID = req.user.id;
  7. const projectID = req.query.id;
  8. const sqlParams: Array<RequestParameter> = [
  9. { name: 'user_id', type: TYPES.Int, value: userID },
  10. { name: 'project_id', type: TYPES.Int, value: projectID }
  11. ];
  12.  
  13. 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 )';
  14. const projectResult: Array<any> = await DatabaseController.getInstance().executeParamQuery(sqlQueryProjectAssigned, sqlParams);
  15. if (projectResult === undefined || projectResult.length === 0) {
  16. return res.sendStatus(404);
  17. }
  18.  
  19. const sqlQueryProjectScores =
  20. `select SUM(CASE WHEN max_quick=5 THEN 1 ELSE 0 END) as num_emergencies,
  21. avg(avg_om) as avg_om_score,
  22. avg(avg_struct) as avg_structural_score
  23. from (
  24. select manhole_id, pipeline_id,
  25. max(left(coalesce(quick_score,'0'),1)) as max_quick,
  26. avg(coalesce(om_score,0)) as avg_om,
  27. avg(coalesce(structural_score,0)) as avg_struct
  28. from media_${projectID}
  29. group by manhole_id, pipeline_id
  30. ) as tempTable; `;
  31.  
  32. const projectScoresResults: Array<any> = await DatabaseController.getInstance().executeQuery(sqlQueryProjectScores);
  33. if (projectResult === undefined || projectResult.length === 0) {
  34. return res.status(500).send('Problem encountered when executing query to calculate project scores');
  35. }
  36.  
  37. const projectStats: ProjectDashboardStats = {
  38. id: parseInt(projectResult[0].project_id, 10),
  39. city: projectResult[0].city,
  40. numInspections: parseInt(projectResult[0].num_inspections, 10),
  41. completedInspections: parseInt(projectResult[0].num_inspected, 10),
  42. geoLocation: { lat: parseFloat(projectResult[0].lat), lng: parseFloat(projectResult[0].lng) },
  43. radius: parseInt(projectResult[0].geolocation_radius, 10),
  44. numEmergencies: parseInt(projectScoresResults[0].num_emergencies, 10),
  45. avgOmScore: parseFloat(projectScoresResults[0].avg_om_score),
  46. avgStructuralScore: parseFloat(projectScoresResults[0].avg_structural_score)
  47. };
  48.  
  49. return res.status(200).send(projectStats);
  50.  
  51. } catch (error) {
  52. return res.status(500).send(error);
  53. }
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement