Advertisement
Guest User

Untitled

a guest
Aug 20th, 2017
503
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.25 KB | None | 0 0
  1. 'use strict'
  2. const nodemailer = require('nodemailer')
  3. var sequelize = require(__dirname + '/connection')
  4. var Surat = sequelize.import(__dirname + '/models/surat.model');
  5. var Lampiran = sequelize.import(__dirname + '/models/lampiran.model');
  6. var Staff = sequelize.import(__dirname + '/models/staff.model');
  7. var Perihal = sequelize.import(__dirname + '/models/perihal.model');
  8. var Surat_masuk_penerima = sequelize.import(__dirname + '/models/surat_masuk_penerima.model');
  9. var Surat_masuk_pengirim = sequelize.import(__dirname + '/models/surat_masuk_pengirim.model');
  10.  
  11. Surat.belongsTo(Perihal, {foreignKey: 'perihal_id'});
  12. Surat.hasMany(Surat_masuk_penerima, {foreignKey: 'surat_id'});
  13. Lampiran.belongsTo(Surat, {foreignKey: 'surat_id'})
  14. Surat.hasOne(Surat_masuk_pengirim, {foreignKey: 'surat_id'});
  15. Surat_masuk_penerima.belongsTo(Staff, {foreignKey: 'staff_id'});
  16. Staff.hasMany(Surat_masuk_penerima, {foreignKey: 'staff_id'});
  17.  
  18. // create reusable transporter object using the default SMTP transport
  19. var transporter = nodemailer.createTransport({
  20. host: 'smtp.gmail.com',
  21. port: 465,
  22. secure: true, // secure:true for port 465, secure:false for port 587
  23. auth: {
  24. user: 'miqdadfawwaz95@gmail.com', // put your email here
  25. pass: 'akangaep10' // put your email password here
  26. }
  27. });
  28.  
  29. var sender = '"SIMARSIP FMIPA" <miqdadfawwaz95@gmail.com>';
  30. var receivers = [];
  31. var subject = "";
  32. var attachments = [];
  33. var html = "";
  34.  
  35. var send = function(res) {
  36. // setup email data with unicode symbols
  37. var mailOptions = {
  38. from: sender, // sender address
  39. to: receivers, // list of receivers
  40. subject: subject, // Subject line
  41. html: html, // html body
  42. attachments: attachments
  43. }
  44.  
  45. // send mail with defined transport object
  46. transporter.sendMail(mailOptions, function(err, info) {
  47. if (err) {
  48. res.json({status: false, message: 'Tambah surat gagal!', err_code: 400, err: err});
  49. } else {
  50. res.json({status: true, message: 'Tambah surat berhasil!', data: info});
  51. }
  52. })
  53. }
  54.  
  55. function Mailer() {
  56. this.sendSurat = function(id, status, res) {
  57. subject += "Surat Masuk | SIMARSIP";
  58. html += "<p>Ada surat masuk untuk Anda di SIMARSIP. Silahkan cek seluruh lampiran email ini untuk melihat isi suratnya. Surat fisik dapat diambil di TU. Terima kasih.</p><br>";
  59. Surat
  60. .findOne({
  61. where: {
  62. id: id
  63. },
  64. include: [{
  65. model: Surat_masuk_pengirim
  66. }, {
  67. model: Perihal
  68. }]
  69. })
  70. .then(function(surat) {
  71. if (status > 0) {
  72. html += "<p>Surat berikut adalah surat yang didisposisikan kepada Anda.</p><br>";
  73. }
  74. html += "<p>Nomor: " + surat.dataValues.nomor_surat + "/" + surat.dataValues.unit_kerja_surat + "/" + surat.dataValues.hal_surat + "/" + surat.dataValues.tahun_surat + "</p><br>";
  75. html += "<p>Perihal: " + surat.dataValues.perihal.dataValues.nama_perihal + "</p><br>"
  76. html += "<p>Pengirim: " + surat.dataValues.surat_masuk_pengirim.dataValues.nama_pengirim + "</p><br>";
  77. html += "<p>Tanggal surat: " + surat.dataValues.tanggal_surat + "</p><br>";
  78. html += "<p>Tingkat kepentingan: " + surat.dataValues.kepentingan_surat + "</p><br>";
  79. html += "<p>Sifat: " + surat.dataValues.sifat_surat + "</p><br>";
  80. html += "<p>Catatan: " + surat.dataValues.keterangan_surat + "</p><br>";
  81. attachments.push({filename: surat.dataValues.file_surat, path: __dirname + '/public/uploads/surat/' + surat.dataValues.file_surat});
  82. Lampiran
  83. .findAll({
  84. where: {
  85. surat_id: id
  86. },
  87. attributes: ['file_lampiran']
  88. })
  89. .then(function(lampiran) {
  90. if (lampiran !== 0) {
  91. for(var i = 0; i < lampiran.length; i++) {
  92. attachments.push({filename: lampiran[i].dataValues.file_lampiran, path: __dirname + '/public/uploads/lampiran/' + lampiran[i].dataValues.file_lampiran})
  93. }
  94. }
  95. Staff
  96. .findAll({
  97. include: [{
  98. model: Surat_masuk_penerima,
  99. where: {
  100. surat_id: id,
  101. status_disposisi_penerima: status
  102. }
  103. }]
  104. })
  105. .then(function(staff) {
  106. for(var i = 0; i < staff.length; i++) {
  107. receivers.push(staff[i].dataValues.email_staff)
  108. }
  109. send(res)
  110. })
  111. })
  112. })
  113. }
  114. }
  115.  
  116. module.exports = new Mailer;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement