Advertisement
Guest User

Untitled

a guest
Nov 11th, 2017
410
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var express = require('express');
  2. var jwt = require('jsonwebtoken');
  3. var bcrypt = require('bcryptjs');
  4. var config = require('../../config');
  5. var Receita = require('../models/receita.js');
  6. var rDTO = require('../DTO/receitaDTO');
  7. var nodemailer = require("nodemailer");
  8. var VerifyToken = require('../auth/VerifyToken');
  9. var UserRole = require('../auth/userRoles');
  10. var User = require('../models/user.js');
  11. var Client = require('node-rest-client').Client;
  12. var async = require('async');
  13. var client = new Client();
  14. var router = express.Router();
  15.  
  16. router.get('/', VerifyToken, function (req, res, next) {
  17.     UserRole.userByEmail(req.user, function (myUser) {
  18.         if (myUser.isMedico === true) {
  19.             UserRole.hasRole(req.user, 'medico', function (decision) {
  20.                 if (!decision)
  21.                     return res.status(403).send(
  22.                         { auth: false, token: null, message: 'You have no authorization.' });
  23.                 else
  24.                     Receita.find({ medico: myUser.id }, function (err, receitas) {
  25.                         if (err) res.send(err);
  26.                         res.send(receitas);
  27.                     });
  28.             })
  29.         } else if (myUser.isUtente === true) {
  30.             UserRole.hasRole(req.user, 'utente', function (decision) {
  31.                 if (!decision)
  32.                     return res.status(403).send(
  33.                         { auth: false, token: null, message: 'You have no authorization.' });
  34.                 else
  35.                     Receita.find({ paciente: myUser.id }, function (err, receitas) {
  36.                         if (err) res.send(err);
  37.                         res.send(receitas);
  38.                     });
  39.             })
  40.         }
  41.     });
  42. });
  43.  
  44.  
  45. router.get('/:id', VerifyToken, function (req, res, next) {
  46.     UserRole.userByEmail(req.user, function (myUser) {
  47.         if (myUser.isMedico === true) {
  48.             UserRole.hasRole(req.user, 'medico', function (decision) {
  49.                 if (!decision)
  50.                     return res.status(403).send(
  51.                         { auth: false, token: null, message: 'You have no authorization.' });
  52.                 else {
  53.                     Receita.findOne({ "_id": req.params.id, medico: myUser.id }, function (err, receita) {
  54.                         if (err) res.send(err);
  55.                         if (!receita) {
  56.                             res.json({ message: 'Nao tem permissoes para ver a receita' });
  57.                         } else {
  58.                             rDTO.prescricoes = [];
  59.                             rDTO.id = receita.id;
  60.                             rDTO.medico = receita.medico;
  61.                             rDTO.paciente = receita.paciente;
  62.                             receita.prescricoes.forEach(function (pres) {
  63.                                 rDTO.prescricoes.push(pres.id);
  64.                             })
  65.                             res.send(rDTO);
  66.                         }
  67.                     });
  68.                 }
  69.             });
  70.         } else if (myUser.isFarmaceutico === true) {
  71.  
  72.             UserRole.hasRole(req.user, 'farmaceutico', function (decision) {
  73.                 if (!decision)
  74.                     return res.status(403).send(
  75.                         { auth: false, token: null, message: 'You have no authorization.' });
  76.                 else
  77.                     Receita.findById(req.params.id, function (err, receita) {
  78.                         if (err) res.send(err);
  79.                         rDTO.prescricoes = [];
  80.                         rDTO.id = receita.id;
  81.                         rDTO.medico = receita.medico;
  82.                         rDTO.paciente = receita.paciente;
  83.                         receita.prescricoes.forEach(function (pres) {
  84.                             rDTO.prescricoes.push(pres.id);
  85.                         })
  86.                         res.send(rDTO);
  87.                     });
  88.             });
  89.  
  90.         } else {
  91.             UserRole.hasRole(req.user, 'utente', function (decision) {
  92.                 if (!decision)
  93.                     return res.status(403).send(
  94.                         { auth: false, token: null, message: 'You have no authorization.' });
  95.                 else {
  96.                     Receita.findOne({ "_id": req.params.id, paciente: myUser.id }, function (err, receita) {
  97.                         if (err) res.send(err);
  98.                         if (!receita) {
  99.                             res.json({ message: 'Nao tem permissoes para ver a receita' });
  100.                         } else {
  101.                             rDTO.prescricoes = [];
  102.                             rDTO.id = receita.id;
  103.                             rDTO.medico = receita.medico;
  104.                             rDTO.paciente = receita.paciente;
  105.                             receita.prescricoes.forEach(function (pres) {
  106.                                 rDTO.prescricoes.push(pres.id);
  107.                             })
  108.                             res.send(rDTO);
  109.                         }
  110.                     });
  111.                 }
  112.             });
  113.         }
  114.     });
  115. });
  116.  
  117.  
  118. router.post('/', VerifyToken, function (req, res, next) {
  119.     UserRole.hasRole(req.user, 'medico', function (decision) {
  120.         if (!decision)
  121.             return res.status(403).send(
  122.                 { auth: false, token: null, message: 'You have no authorization.' });
  123.         else {
  124.             try {
  125.                 var receita = new Receita();
  126.                 receita.medico = req.body.medico;
  127.                 receita.paciente = req.body.paciente;
  128.                 if (new Date(req.body.data) < new Date(Date.now())) {
  129.                     throw 'A data da receita nao deve ser anterior a data atual';
  130.                 } else {
  131.                     receita.data = req.body.data;
  132.                     async.each(req.body.prescricoes, function (prescricao, callback) {
  133.                         validaPrescricao(prescricao, res).then(bol => {
  134.                             if (bol === true) {
  135.                                 getApresentacoes(prescricao.apresentacaoID, req).then(x => {
  136.                                     prescricao.apresentacao = x;
  137.                                     receita.prescricoes.push(prescricao);
  138.                                     callback();
  139.                                 });
  140.                             }
  141.                         });
  142.                     },
  143.                         function (err) {
  144.                             receita.save(function (err) {
  145.                                 console.log("in save");
  146.                                 if (err) return res.status(500).send("" + err);
  147.  
  148.                                 //necessário get do email do paciente
  149.                                 //var utenteMail = receita.paciente.email;
  150.                                 var utenteMail = "idiota443@gmail.com";
  151.                                 var mainMail = "idiota443@gmail.com";
  152.                                 //manda email de receita criada
  153.                                 //================================
  154.                                 var smtpTransport = nodemailer.createTransport({
  155.                                     host: "mail.smtp2go.com",
  156.                                     port: 587, // 8025, 587 and 25 can also be used.
  157.                                     secure: false, // true for 465, false for other ports
  158.                                     auth: {
  159.                                         user: "1151148@isep.ipp.pt",
  160.                                         pass: "RklGUWhBo4oN"
  161.                                     }
  162.                                 });
  163.  
  164.                                 smtpTransport.sendMail({
  165.                                     from: mainMail,
  166.                                     to: utenteMail,
  167.                                     subject: "Receita Prescrita",
  168.                                     text: "Foi prescrita uma receita em seu nome"
  169.                                 }, function (error, response) {
  170.                                     if (error) {
  171.                                         console.log(error);
  172.                                     } else {
  173.                                         console.log("Message sent: " + response.message);
  174.                                     }
  175.                                 });
  176.                                 res.json({ message: 'Receita registered' });
  177.                             })
  178.                         });
  179.                 }
  180.             } catch (e) {
  181.                 res.send(e);
  182.             }
  183.  
  184.         }
  185.     });
  186. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement