Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var express = require('express');
- var jwt = require('jsonwebtoken');
- var bcrypt = require('bcryptjs');
- var config = require('../../config');
- var Receita = require('../models/receita.js');
- var rDTO = require('../DTO/receitaDTO');
- var nodemailer = require("nodemailer");
- var VerifyToken = require('../auth/VerifyToken');
- var UserRole = require('../auth/userRoles');
- var User = require('../models/user.js');
- var Client = require('node-rest-client').Client;
- var async = require('async');
- var client = new Client();
- var router = express.Router();
- router.get('/', VerifyToken, function (req, res, next) {
- UserRole.userByEmail(req.user, function (myUser) {
- if (myUser.isMedico === true) {
- UserRole.hasRole(req.user, 'medico', function (decision) {
- if (!decision)
- return res.status(403).send(
- { auth: false, token: null, message: 'You have no authorization.' });
- else
- Receita.find({ medico: myUser.id }, function (err, receitas) {
- if (err) res.send(err);
- res.send(receitas);
- });
- })
- } else if (myUser.isUtente === true) {
- UserRole.hasRole(req.user, 'utente', function (decision) {
- if (!decision)
- return res.status(403).send(
- { auth: false, token: null, message: 'You have no authorization.' });
- else
- Receita.find({ paciente: myUser.id }, function (err, receitas) {
- if (err) res.send(err);
- res.send(receitas);
- });
- })
- }
- });
- });
- router.get('/:id', VerifyToken, function (req, res, next) {
- UserRole.userByEmail(req.user, function (myUser) {
- if (myUser.isMedico === true) {
- UserRole.hasRole(req.user, 'medico', function (decision) {
- if (!decision)
- return res.status(403).send(
- { auth: false, token: null, message: 'You have no authorization.' });
- else {
- Receita.findOne({ "_id": req.params.id, medico: myUser.id }, function (err, receita) {
- if (err) res.send(err);
- if (!receita) {
- res.json({ message: 'Nao tem permissoes para ver a receita' });
- } else {
- rDTO.prescricoes = [];
- rDTO.id = receita.id;
- rDTO.medico = receita.medico;
- rDTO.paciente = receita.paciente;
- receita.prescricoes.forEach(function (pres) {
- rDTO.prescricoes.push(pres.id);
- })
- res.send(rDTO);
- }
- });
- }
- });
- } else if (myUser.isFarmaceutico === true) {
- UserRole.hasRole(req.user, 'farmaceutico', function (decision) {
- if (!decision)
- return res.status(403).send(
- { auth: false, token: null, message: 'You have no authorization.' });
- else
- Receita.findById(req.params.id, function (err, receita) {
- if (err) res.send(err);
- rDTO.prescricoes = [];
- rDTO.id = receita.id;
- rDTO.medico = receita.medico;
- rDTO.paciente = receita.paciente;
- receita.prescricoes.forEach(function (pres) {
- rDTO.prescricoes.push(pres.id);
- })
- res.send(rDTO);
- });
- });
- } else {
- UserRole.hasRole(req.user, 'utente', function (decision) {
- if (!decision)
- return res.status(403).send(
- { auth: false, token: null, message: 'You have no authorization.' });
- else {
- Receita.findOne({ "_id": req.params.id, paciente: myUser.id }, function (err, receita) {
- if (err) res.send(err);
- if (!receita) {
- res.json({ message: 'Nao tem permissoes para ver a receita' });
- } else {
- rDTO.prescricoes = [];
- rDTO.id = receita.id;
- rDTO.medico = receita.medico;
- rDTO.paciente = receita.paciente;
- receita.prescricoes.forEach(function (pres) {
- rDTO.prescricoes.push(pres.id);
- })
- res.send(rDTO);
- }
- });
- }
- });
- }
- });
- });
- router.post('/', VerifyToken, function (req, res, next) {
- UserRole.hasRole(req.user, 'medico', function (decision) {
- if (!decision)
- return res.status(403).send(
- { auth: false, token: null, message: 'You have no authorization.' });
- else {
- try {
- var receita = new Receita();
- receita.medico = req.body.medico;
- receita.paciente = req.body.paciente;
- if (new Date(req.body.data) < new Date(Date.now())) {
- throw 'A data da receita nao deve ser anterior a data atual';
- } else {
- receita.data = req.body.data;
- async.each(req.body.prescricoes, function (prescricao, callback) {
- validaPrescricao(prescricao, res).then(bol => {
- if (bol === true) {
- getApresentacoes(prescricao.apresentacaoID, req).then(x => {
- prescricao.apresentacao = x;
- receita.prescricoes.push(prescricao);
- callback();
- });
- }
- });
- },
- function (err) {
- receita.save(function (err) {
- console.log("in save");
- if (err) return res.status(500).send("" + err);
- //necessário get do email do paciente
- //var utenteMail = receita.paciente.email;
- var utenteMail = "idiota443@gmail.com";
- var mainMail = "idiota443@gmail.com";
- //manda email de receita criada
- //================================
- var smtpTransport = nodemailer.createTransport({
- host: "mail.smtp2go.com",
- port: 587, // 8025, 587 and 25 can also be used.
- secure: false, // true for 465, false for other ports
- auth: {
- user: "1151148@isep.ipp.pt",
- pass: "RklGUWhBo4oN"
- }
- });
- smtpTransport.sendMail({
- from: mainMail,
- to: utenteMail,
- subject: "Receita Prescrita",
- text: "Foi prescrita uma receita em seu nome"
- }, function (error, response) {
- if (error) {
- console.log(error);
- } else {
- console.log("Message sent: " + response.message);
- }
- });
- res.json({ message: 'Receita registered' });
- })
- });
- }
- } catch (e) {
- res.send(e);
- }
- }
- });
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement