Advertisement
Guest User

Untitled

a guest
Dec 15th, 2016
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 51.71 KB | None | 0 0
  1. var passport = require('passport');
  2. var mongoose = require('mongoose');
  3. var mongo = require('mongodb');
  4. var User = mongoose.model('User');
  5. var Dish = mongoose.model('Dish');
  6. var Invite = mongoose.model('Invite');
  7. var Event = mongoose.model('Event');
  8. var Post = mongoose.model('Post');
  9. var emailer = require('../util/emailer');
  10. var crypto = require('crypto');
  11. //var grid = require('gridfs-stream');
  12. var fs = require('fs');
  13. var _ = require('underscore');
  14. var formidable = require('formidable');
  15. var GridStore = require('mongodb').GridStore;
  16. var ObjectId = require('mongodb').ObjectID;
  17.  
  18. var imageHelper = require('../util/imageHelper');
  19. var blogImageHelper = require('../util/blog_imageHelper');
  20.  
  21.  
  22. ///
  23. //
  24. //var ejs = require( 'ejs') ;
  25. //var async = require( 'async' );
  26. //var _ = require( 'underscore' );
  27. //var grid = require( '../util/mongoose-grid-help' );
  28.  
  29.  
  30. var multer = require('multer');
  31. //var upload = multer({ dest: 'uploads' });
  32. //var upload = multer({dest: __dirname + '/uploads/'});
  33.  
  34. var storage = multer.diskStorage({
  35. destination: function (req, file, callback) {
  36. callback(null, './uploads');
  37. },
  38. filename: function (req, file, callback) {
  39. callback(null, file.fieldname + '-' + Date.now());
  40. }
  41. });
  42. var upload = multer({storage: storage}).single('userPhoto');
  43.  
  44.  
  45.  
  46. var sendJSONresponse = function (res, status, content) {
  47. res.status(status);
  48. res.json(content);
  49. };
  50.  
  51. module.exports.findUsername = function (request, response) {
  52. // use `findOne` rather than `find`
  53. User.findOne({
  54. 'username': request.body.username}, function (err, user) {
  55. // hanlde err..
  56. if (user) {
  57. // user exists
  58. response.json({success: false, msg: 'Username exist'});
  59. } else {
  60. // user does not exist
  61. response.json({success: true, msg: 'Username is available'});
  62. }
  63. });
  64. };
  65.  
  66. module.exports.findEmail = function (request, response) {
  67. // use `findOne` rather than `find`
  68. User.findOne({
  69. 'email': request.body.email}, function (err, user) {
  70. // hanlde err..
  71. if (user) {
  72. // user exists
  73. response.json({success: false, msg: 'Username exist'});
  74. } else {
  75. // user does not exist
  76. response.json({success: true, msg: 'Username is available'});
  77. }
  78. });
  79. };
  80.  
  81. module.exports.validateNewAccount = function (req, res, next) {
  82.  
  83. User
  84. .findOne({'validation.token': req.params.token})
  85. .exec(function (err, user) {
  86. if (err)
  87. res.status(500).send('Unexpected error when validating. Contact Administrator.');
  88. else if (!user)
  89. res.status(404).send('Sorry, not validation found.');
  90. else {
  91. user.set('validation.isValid', true);
  92. user.set('validation.verifiedAt', new Date());
  93. var costumer = new User();
  94.  
  95. var token;
  96.  
  97. token = costumer.generateJwt();
  98. user.set('validation.token', token);
  99.  
  100.  
  101. user.save(function (err, user) {
  102.  
  103.  
  104. // req.ecSession.me = user.getSession();
  105. //res.header( 'Homepage', '/' );
  106. // res.redirect('/');
  107.  
  108. console.log("VALIDATE NEW ACCOUNT");
  109. console.log(token);
  110.  
  111. res.redirect(302, '/?emailconfirm=' + token);
  112. //res.status(302).send(err || {success: true, msg: 'Successfully validation', "token": token, "user": user});
  113.  
  114. //res.send( 302 );
  115. });
  116. }
  117. });
  118.  
  119. },
  120. module.exports.validateNewChef = function (req, res, next) {
  121.  
  122. User
  123. .findOne({'validation.token': req.params.token})
  124. .exec(function (err, user) {
  125. if (err)
  126. res.status(500).send('Unexpected error when validating. Contact Administrator.');
  127. else if (!user)
  128. res.status(404).send('Sorry, not validation found.');
  129. else {
  130. user.set('validation.isValid', true);
  131. user.set('validation.verifiedAt', new Date());
  132. user.save(function (err, user) {
  133.  
  134. var costumer = new User();
  135.  
  136. var token;
  137.  
  138. token = costumer.generateJwt();
  139.  
  140. // req.ecSession.me = user.getSession();
  141. //res.header( 'Homepage', '/' );
  142. // res.redirect('/');
  143.  
  144. res.statusCode = 302;
  145. res.setHeader("Location", '/form#/form');
  146. res.end();
  147.  
  148. // res.redirect(302, '/form/' + '?chefregister=' + token);
  149. //
  150. //
  151. //
  152. //res.status(302).send(err || {success: true, msg: 'Successfully validation', "token": token, "user": user});
  153.  
  154. //res.send( 302 );
  155. });
  156. }
  157. });
  158.  
  159. },
  160. module.exports.editinfo = function (req, res, next) {
  161.  
  162. User
  163. .findOne({'email': req.body.email})
  164. .exec(function (err, user) {
  165. if (err)
  166. res.status(500).send('Unexpected error when validating. Contact Administrator.');
  167. else if (!user)
  168. res.status(404).send('Sorry, no username found.');
  169. else {
  170.  
  171. res.json({success: true, name: user.name, age: user.age, email: user.email, type: user.type});
  172.  
  173. }
  174. });
  175.  
  176. },
  177. module.exports.updateinfo = function (req, res, next) {
  178.  
  179. User
  180. .findOneAndUpdate({'email': req.body.email})
  181. .exec(function (err, user) {
  182. if (err)
  183. res.status(500).send('Unexpected error when validating. Contact Administrator.');
  184. else if (!user)
  185. res.status(404).send('Sorry, no username found.');
  186. else {
  187.  
  188.  
  189.  
  190. var oldpass = req.body.oldpassword;
  191. console.log(req.body.name);
  192. console.log(oldpass);
  193. user.set('name', req.body.name);
  194. user.set('age', req.body.age);
  195.  
  196.  
  197. if (typeof oldpass !== 'undefined')
  198. {
  199. if (user.comparepassword(oldpass))
  200. {
  201. user.setPassword(req.body.newPassword);
  202. user.set('validation.changePassToken', "change");
  203. }
  204. } else
  205. {
  206. console.log(oldpass);
  207. }
  208.  
  209.  
  210.  
  211.  
  212. user.save(function (err, user) {
  213. res.json({success: true});
  214. });
  215.  
  216. }
  217. });
  218.  
  219. },
  220. module.exports.editpayout = function (req, res, next) {
  221.  
  222. User
  223. .findOne({'email': req.body.email})
  224. .exec(function (err, user) {
  225. if (err)
  226. res.status(500).send('Unexpected error when validating. Contact Administrator.');
  227. else if (!user)
  228. res.status(404).send('Sorry, no username found.');
  229. else {
  230.  
  231. res.json({success: true, payout: user.payout});
  232.  
  233. }
  234. });
  235.  
  236. },
  237. module.exports.updatepayout = function (req, res, next) {
  238.  
  239. User
  240. .findOne({'email': req.body.email})
  241. .exec(function (err, user) {
  242. if (err)
  243. res.status(500).send('Unexpected error when validating. Contact Administrator.');
  244. else if (!user)
  245. res.status(404).send('Sorry, no username found.');
  246. else {
  247.  
  248.  
  249. user.set('payout.username', req.body.username);
  250. user.set('payout.password', req.body.password);
  251. user.set('payout.key', req.body.key);
  252.  
  253. user.save(function (err, user) {
  254. res.json({success: true});
  255. });
  256.  
  257. }
  258. });
  259.  
  260. },
  261. module.exports.getAddress = function (req, res, next) {
  262.  
  263. User
  264. .findOne({'email': req.body.email})
  265. .exec(function (err, user) {
  266. if (err)
  267. res.status(500).send('Unexpected error when validating. Contact Administrator.');
  268. else if (!user)
  269. res.status(404).send('Sorry, no username found.');
  270. else {
  271.  
  272.  
  273. res.json({success: true, address: user.addresses});
  274.  
  275.  
  276. }
  277. });
  278.  
  279. },
  280. module.exports.addAddress = function (req, res, next) {
  281.  
  282. User.findByIdAndUpdate("580feb019c4bb730045a7629", {$push: {'addresses': req.body.address}}, {upsert: true}, function (err, doc) {
  283. if (err) {
  284. console.log(err);
  285. } else {
  286. console.log("Successfully added");
  287. res.json({success: true, id: doc._id});
  288. }
  289. });
  290.  
  291.  
  292. },
  293. module.exports.updateAddress = function (req, res)
  294. {
  295.  
  296. User.findById(req.params.id, function (err, event) {
  297. if (err)
  298. res.send(err);
  299. console.log(event)
  300.  
  301. if (req.body.event.subject)
  302. event.subject = req.body.event.subject;
  303. if (req.body.event.description)
  304. event.description = req.body.event.description;
  305. if (req.body.event.startTime)
  306. event.startTime = req.body.event.startTime;
  307. if (req.body.event.endTime)
  308. event.endTime = req.body.event.endTime;
  309. if (req.body.event.status)
  310. event.status = req.body.event.status;
  311. if (req.body.event.howOften)
  312. event.howOften = req.body.event.howOften;
  313. if (req.body.event.reminder)
  314. event.reminder = req.body.event.reminder;
  315. if (req.body.event.sms)
  316. event.sms = req.body.event.sms;
  317. if (req.body.event.email)
  318. event.email = req.body.event.email;
  319.  
  320. event.save(function (err) {
  321. if (err)
  322. send(err);
  323. res.json({success: true});
  324. });
  325. });
  326.  
  327. };
  328.  
  329.  
  330. module.exports.deleteAddress = function (req, res)
  331. {
  332.  
  333.  
  334.  
  335. Event.findByIdAndRemove(req.params.id)
  336. .exec(function (err, removed) {
  337. if (err) {
  338. res.send(err);
  339. } else {
  340.  
  341. res.send(removed);
  342. }
  343. });
  344.  
  345.  
  346. },
  347. module.exports.register = function (req, res) {
  348.  
  349. // if(!req.body.name || !req.body.email || !req.body.password) {
  350. // sendJSONresponse(res, 400, {
  351. // "message": "All fields required"
  352. // });
  353. // return;
  354. // }
  355.  
  356. if (!req.body.email || !req.body.password || !req.body.username)
  357. {
  358. res.json({success: false, msg: 'All fields required'});
  359. } else
  360. {
  361. var user = new User();
  362. var token;
  363.  
  364. token = user.generateJwt();
  365.  
  366. user.name = req.body.name;
  367. user.email = req.body.email;
  368. user.username = req.body.username;
  369. user.age = req.body.age;
  370. user.city = req.body.city;
  371. user.zipCode = req.body.zipCode;
  372. user.sex = req.body.sex;
  373. user.type = "costumer";
  374. user.foodtypes = req.body.foodtypes;
  375. user.favorite = req.body.favorite;
  376. user.allergies = req.body.allergies;
  377. user.setPassword(req.body.password);
  378. user.validation.token = token;
  379.  
  380.  
  381.  
  382. // user.validation.changePassToken = "";
  383. // user.validation.changeEmailToken = "";
  384.  
  385. console.log("REGISTER TOKEN");
  386. console.log(token);
  387.  
  388.  
  389. if (req.body.reference)
  390. {
  391.  
  392. User
  393. .findOne({'validation.referalToken': req.body.reference})
  394. .exec(function (err, inviter) {
  395. if (err)
  396. res.status(500).send('Unexpected error when validating. Contact Administrator.');
  397. else if (!inviter)
  398. res.status(404).send('Sorry, no token found.');
  399. else {
  400.  
  401. inviter.set('score', (inviter.score) + 2000);
  402. inviter.save(function (err) {
  403.  
  404.  
  405. });
  406.  
  407. Invite
  408. .findOne({'_id': {$in: inviter.invites}}).
  409. exec(function (err, theInvite) {
  410. if (err)
  411. res.status(500).send('Unexpected error when validating. Contact Administrator.');
  412. else if (!theInvite)
  413. res.status(404).send('Sorry, no Invite found.');
  414. else {
  415. user.set("invite", theInvite.id);
  416.  
  417. user.save(function (err) {
  418.  
  419. });
  420. theInvite.set('status', "completed");
  421. theInvite.save(function (err) {
  422.  
  423. });
  424. }
  425. });
  426.  
  427.  
  428. }
  429. });
  430. }
  431.  
  432. user.save(function (err) {
  433. if (err)
  434. {
  435. res.json({success: false, msg: 'Data already exist', redirectEmail: user.email});
  436. console.log(err);
  437.  
  438. } else
  439. {
  440.  
  441.  
  442. //res.status(200);
  443.  
  444. emailer.sendNewAccountEmail(user, function () {
  445. res.json({success: true, msg: 'Successfully created user!', "token": token});
  446.  
  447. });
  448.  
  449. }
  450. });
  451.  
  452. }
  453.  
  454. };
  455.  
  456.  
  457.  
  458. module.exports.chefregister = function (req, res) {
  459.  
  460.  
  461. if (!req.body.email || !req.body.password)
  462. {
  463. res.json({success: false, msg: 'All fields required'});
  464. } else
  465. {
  466. var user = new User();
  467. var token;
  468.  
  469. token = user.generateJwt();
  470.  
  471. user.name = req.body.name;
  472. user.age = req.body.age;
  473. user.sex = req.body.sex;
  474. // user.phone = req.body.phone;
  475. user.email = req.body.email;
  476. // user.username = req.body.username;
  477. user.setPassword(req.body.password);
  478. user.validation.token = token;
  479.  
  480. user.type = "chef";
  481.  
  482.  
  483. user.save(function (err) {
  484. if (err)
  485. {
  486. res.json({success: false, msg: 'Data already exist', redirectEmail: user.email});
  487. console.log(err);
  488.  
  489. } else
  490. {
  491.  
  492. //res.status(200);
  493.  
  494. emailer.sendNewChefAccount(user, function () {
  495. res.json({success: true, msg: 'Successfully created chef!'});
  496.  
  497. });
  498.  
  499. }
  500. });
  501.  
  502. }
  503.  
  504. };
  505.  
  506.  
  507. module.exports.appform = function (req, res) {
  508.  
  509.  
  510.  
  511.  
  512. User
  513. .findOne({'email': "haxhiuargjend@gmail.com"})
  514. .exec(function (err, user) {
  515. if (err)
  516. res.status(500).send('Unexpected error when validating. Contact Administrator.');
  517. else if (!user)
  518. res.status(404).send('Sorry, not validation found.');
  519. else {
  520.  
  521. var user = user;
  522. // var pic = req.body.profile.takenImg; //Array
  523.  
  524. var desc = req.body.profile.description;
  525. var video = req.body.profile.videolink;
  526. var chef_foodType = req.body.typeOfFood; //Array
  527.  
  528. // var dishes = req.body.dishes; //Array
  529.  
  530. var accomplishments = req.body.accomplishments; //Array
  531.  
  532. var experience = req.body.experience; //Array
  533.  
  534.  
  535.  
  536.  
  537. //
  538. // var dishes = req.body.dishes;
  539. // if (dishes && dishes.constructor.name !== 'Array') {
  540. // req.body.dishes = [dishes];
  541. // }
  542.  
  543. var dishes = req.body.dishes;
  544. var dishArray = [];
  545.  
  546. dishes.forEach(function (value) {
  547.  
  548. // imageHelper.uploadBase64Image('uploads/' + user._id + '_dish.jpg', value.image, function (err, result) {
  549. // if (err)
  550. // res.send(400, err);
  551. // else {
  552.  
  553.  
  554. var dish = new Dish();
  555. dish.title = value.title;
  556. dish.foodtype = value.foodtype;
  557. dish.description = value.description;
  558. dish.tags = value.tags;
  559. // dish.image = value.image;
  560. dish.chef = user._id;
  561. dish.cost = value.cost;
  562. dish.status = "Pending";
  563.  
  564.  
  565. dish.save(function (err, dish) {
  566. if (err) {
  567. // res.status(500);
  568. res.json({
  569. type: false,
  570. data: 'Error occurred: ' + err
  571. });
  572. } else {
  573. // dishArray.push(dish._id);
  574. user.dishes.push(dish.id);
  575. // console.log(dishArray);
  576. }
  577. });
  578.  
  579.  
  580.  
  581. });
  582.  
  583.  
  584. user.validation.appliccompleted = "submitted";
  585. user.description = desc;
  586. user.video_link = video;
  587. user.chef_foodtypes = chef_foodType;
  588.  
  589. user.experiences = experience;
  590. user.accomplishments = accomplishments;
  591.  
  592. imageHelper.uploadBase64Image('uploads/' + user._id + '_profile.jpg', req.body.profile.takenImg, function (err, result) {
  593. if (err)
  594. res.send(400, err);
  595. else {
  596.  
  597. console.log("result.url");
  598. console.log(result);
  599. user.avatar = String(result);
  600.  
  601.  
  602.  
  603. user.save(function (err) {
  604. if (err)
  605. {
  606. res.json({success: false, msg: 'Data error'});
  607. console.log(err);
  608. } else
  609. {
  610. // user.dishes = dishArray;
  611. res.json({success: true});
  612. }
  613. });
  614. }
  615. });
  616.  
  617.  
  618.  
  619. }
  620. });
  621. };
  622. module.exports.avatar = function (req, res) {
  623.  
  624.  
  625. res.json({success: true});
  626. };
  627. module.exports.login = function (req, res) {
  628.  
  629. passport.authenticate('local', function (err, user, info) {
  630. var token;
  631. // If Passport throws/catches an error
  632. if (err) {
  633. res.status(404).json(err);
  634. return;
  635. }
  636.  
  637. // If a user is found
  638. if (user) {
  639. token = user.generateJwt();
  640. res.status(200);
  641. res.json({
  642. "token": token
  643. });
  644. } else {
  645. // If user is not found
  646. res.status(401).json(info);
  647. }
  648. })(req, res);
  649. };
  650. module.exports.tokenLogin = function (req, res) {
  651.  
  652.  
  653. console.log("LOGIN TOKEN");
  654. console.log(req.body.token);
  655. User
  656. .findOne({'validation.token': req.body.token})
  657. .exec(function (err, user) {
  658. if (err)
  659. res.status(500).send('Unexpected error when validating. Contact Administrator.');
  660. else if (!user)
  661. res.status(404).send('Sorry, not validation found.');
  662. else {
  663.  
  664. res.json({success: true, msg: 'Successfully logged in'});
  665. }
  666. });
  667. };
  668. module.exports.validateNewPassword = function (req, res) {
  669.  
  670.  
  671. User
  672. .findOne({'validation.changePassToken': req.params.token})
  673. .exec(function (err, user) {
  674. if (err)
  675. res.send(500, 'Unexpected error when validating. Contact Administrator.');
  676. else if (!user)
  677. res.send(404, 'Sorry, no validation found.');
  678. else {
  679. //
  680.  
  681. // user.set('validation.changePassToken', undefined);
  682. // user.set('password', user.get('newPassword'));
  683.  
  684. // user.setPassword(user.get('newPassword'));
  685. // user.set('newPassword', undefined);
  686. user.set('lastChangePass', new Date());
  687. var costumer = new User();
  688. var token;
  689. token = costumer.shortJwt();
  690. // req.ecSession.me = user.getSession();
  691. //res.header( 'Homepage', '/' );
  692. // res.redirect('/');
  693. user.set('validation.changePassToken', token);
  694. user.save(function (err, user) {
  695.  
  696.  
  697.  
  698. res.statusCode = 302;
  699. res.setHeader("Location", '/#/forgot-password' + '?fgp=' + user.get('validation.changePassToken'));
  700. res.end();
  701. // res.redirect(302, '/?forgotpassword=' + token);
  702. });
  703. }
  704.  
  705. });
  706. };
  707. module.exports.forgotpassword = function (req, res) {
  708.  
  709. //var email = req.body.email;
  710.  
  711. User
  712. .findOne({'email': req.body.email})
  713. .exec(function (err, user) {
  714. if (err)
  715. res.status(500).send('Unexpected error. Contact Administrator.');
  716. else if (!user)
  717. res.status(404).send('Sorry, not email found.');
  718. else {
  719.  
  720. var costumer = new User();
  721. var token;
  722. token = costumer.shortJwt();
  723. user.set('validation.changePassToken', token);
  724. console.log(token);
  725. //user.set('newPassword', crypto.randomBytes(8).toString('hex'));
  726.  
  727. // console.log("FORGOT PASSWORD")
  728. // console.log(user.get('validation.changePassToken'));
  729.  
  730.  
  731. user.save(function (err, useri) {
  732.  
  733. if (err)
  734. {
  735. console.log(err);
  736. } else
  737. {
  738. console.log(useri);
  739. emailer.sendForgotPassword(useri, function () {
  740. res.json({success: true, msg: 'Forgot password email sent'});
  741. });
  742. }
  743.  
  744.  
  745. // req.ecSession.me = user.getSession();
  746. //res.header( 'Homepage', '/' );
  747. // res.redirect('/');
  748.  
  749. // res.redirect(302, '/?emailconfirm=' + token);
  750. //res.status(302).send(err || {success: true, msg: 'Successfully validation', "token": token, "user": user});
  751.  
  752. //res.send( 302 );
  753. });
  754. }
  755. });
  756. };
  757.  
  758.  
  759. module.exports.sendInvite = function (req, res) {
  760.  
  761.  
  762. var emails = req.body.value;
  763.  
  764. console.log();
  765.  
  766. emails.forEach(function (email, emailIndex) {
  767.  
  768. User
  769. .findOne({'email': req.body.email})
  770. .exec(function (err, user) {
  771. if (err)
  772. res.status(500).send('Unexpected error. Contact Administrator.');
  773. else if (!user)
  774. res.status(404).send('Sorry, not email found.');
  775. else {
  776. var invite = new Invite();
  777.  
  778. var costumer = new User();
  779. token = costumer.shortJwt();
  780. invite.email = email;
  781. invite.status = "invited";
  782. invite.by = user._id;
  783.  
  784. invite.save(function (err, invite) {
  785.  
  786. if (err)
  787. {
  788. //res.json({success: false, msg: 'Data error'});
  789. console.log(err);
  790. } else
  791. {
  792.  
  793. user.invites.push(invite.id);
  794. user.set('validation.referalToken', token);
  795. user.save(function (err, user) {
  796.  
  797.  
  798. });
  799.  
  800.  
  801. if (emails.length - 1 === emailIndex)
  802. {
  803. emailer.sendInviteEmails(user, emails, function () {
  804. res.json({success: true, msg: 'Invites sent'});
  805. });
  806. }
  807. //
  808.  
  809. }
  810.  
  811. });
  812.  
  813. }
  814. });
  815. });
  816.  
  817.  
  818.  
  819.  
  820.  
  821. };
  822.  
  823.  
  824. module.exports.getInvites = function (req, res) {
  825.  
  826.  
  827. var response = [];
  828. User
  829. .findOne({'email': req.body.email})
  830. .exec(function (err, user) {
  831. if (err)
  832. res.status(500).send('Unexpected error. Contact Administrator.');
  833. else if (!user)
  834. res.status(404).send('Sorry, not email found.');
  835. else {
  836.  
  837. Invite.find({'_id': {$in: user.invites}})
  838. .exec(function (err, invites) {
  839. if (err)
  840. res.status(500).send('Unexpected error. Contact Administrator.');
  841. else if (!user)
  842. res.status(404).send('Sorry, no inite found.');
  843. else {
  844. invites.forEach(function (invite, invitesIndex)
  845. {
  846. var inviteRsp = {}
  847. if (invite.status === "completed")
  848. {
  849. User
  850. .findOne({'email': invite.email})
  851. .exec(function (err, user) {
  852. if (err)
  853. res.status(500).send('Unexpected error. Contact Administrator.');
  854. else if (!user)
  855. res.status(404).send('Sorry, not email found.');
  856. else {
  857. inviteRsp = {
  858. name: user.name,
  859. username: user.username,
  860. date: user.created_at
  861. }
  862. response.push(inviteRsp)
  863. res.json({success: true, invites: response});
  864. }
  865. });
  866.  
  867.  
  868. } else
  869. {
  870. inviteRsp = invite.email
  871. response.push(inviteRsp)
  872. }
  873. console.log(invite)
  874. });
  875. }
  876. });
  877. }
  878. });
  879.  
  880.  
  881.  
  882.  
  883.  
  884.  
  885. }
  886.  
  887. module.exports.setnewpassword = function (req, res) {
  888.  
  889. var token = req.body.token;
  890. console.log("SET NEW PASSWORD");
  891. console.log(token);
  892. User
  893. .findOne({'validation.changePassToken': req.body.token})
  894. .exec(function (err, user) {
  895. if (err)
  896. res.status(500).send('Unexpected error. Contact Administrator.');
  897. else if (!user)
  898. res.status(404).send('Sorry, not email found.');
  899. else {
  900. //
  901. user.setPassword(req.body.newPassword);
  902. user.set('validation.changePassToken', "change");
  903. //user.set('newPassword', crypto.randomBytes(8).toString('hex'));
  904.  
  905. user.save(function (err, user) {
  906.  
  907.  
  908.  
  909. // req.ecSession.me = user.getSession();
  910. //res.header( 'Homepage', '/' );
  911. // res.redirect('/');
  912.  
  913. emailer.sendPasswordChanged(user, function () {
  914. res.statusCode = 302;
  915. res.setHeader("Location", '/');
  916. res.end();
  917. });
  918. // res.redirect(302, '/?emailconfirm=' + token);
  919. //res.status(302).send(err || {success: true, msg: 'Successfully validation', "token": token, "user": user});
  920.  
  921. //res.send( 302 );
  922. });
  923. }
  924. });
  925. };
  926.  
  927. // ------------------------- AVAILABILITY
  928.  
  929. module.exports.setSchedule = function (req, res) {
  930.  
  931. User
  932. .findOne({'email': req.body.email})
  933. .exec(function (err, user) {
  934. if (err)
  935. res.status(500).send('Unexpected error when validating. Contact Administrator.');
  936. else if (!user)
  937. res.status(404).send('Sorry, no email found.');
  938. else {
  939.  
  940.  
  941. user.schedule = req.body.schedule;
  942.  
  943. user.save(function (err, user) {
  944. res.json({success: true});
  945. });
  946.  
  947. }
  948. });
  949.  
  950.  
  951. };
  952.  
  953. module.exports.updateSchedule = function (req, res) {
  954.  
  955. User
  956. .findOne({'email': req.body.email})
  957. .exec(function (err, user) {
  958. if (err)
  959. res.status(500).send('Unexpected error when validating. Contact Administrator.');
  960. else if (!user)
  961. res.status(404).send('Sorry, no email found.');
  962. else {
  963.  
  964.  
  965. user.schedule = req.body.schedule;
  966.  
  967. user.save(function (err, user) {
  968. res.json({success: true});
  969. });
  970.  
  971. }
  972. });
  973.  
  974.  
  975. };
  976.  
  977.  
  978. module.exports.getSchedule = function (req, res) {
  979.  
  980. User
  981. .findOne({'email': req.body.email})
  982. .exec(function (err, user) {
  983. if (err)
  984. res.status(500).send('Unexpected error when validating. Contact Administrator.');
  985. else if (!user)
  986. res.status(404).send('Sorry, no email found.');
  987. else {
  988.  
  989. if (typeof user.schedule !== 'undefined' && user.schedule.length > 0)
  990. {
  991. res.json({success: true, schedule: user.schedule});
  992. } else
  993. {
  994. res.json({success: true, schedule: "none"});
  995. }
  996.  
  997.  
  998.  
  999. }
  1000. });
  1001.  
  1002.  
  1003. };
  1004.  
  1005.  
  1006. module.exports.addEvent = function (req, res)
  1007. {
  1008. User
  1009. .findOne({'email': req.body.email})
  1010. .exec(function (err, user) {
  1011. if (err)
  1012. res.status(500).send('Unexpected error. Contact Administrator.');
  1013. else if (!user)
  1014. res.status(404).send('Sorry, not email found.');
  1015. else {
  1016. var event = new Event();
  1017.  
  1018.  
  1019. event.subject = req.body.event.subject;
  1020. event.description = req.body.event.description;
  1021. event.startTime = req.body.event.startTime;
  1022. event.endTime = req.body.event.endTime;
  1023. event.status = req.body.event.status;
  1024. event.howOften = req.body.event.howOften;
  1025. event.reminder = req.body.event.reminder;
  1026. event.sms = req.body.event.sms;
  1027. event.email = req.body.event.email;
  1028.  
  1029. event.save(function (err, eventi) {
  1030.  
  1031. if (err)
  1032. {
  1033.  
  1034. console.log(err);
  1035. } else
  1036. {
  1037.  
  1038. user.events.push(eventi.id);
  1039.  
  1040. user.save(function (err, user) {
  1041.  
  1042. res.json({success: true, msg: 'Event added'});
  1043. });
  1044.  
  1045. }
  1046.  
  1047. });
  1048.  
  1049. }
  1050. });
  1051. };
  1052.  
  1053.  
  1054. module.exports.getAllEvents = function (req, res)
  1055. {
  1056. User
  1057. .findOne({'email': req.body.email})
  1058. .exec(function (err, user) {
  1059. if (err)
  1060. res.status(500).send('Unexpected error. Contact Administrator.');
  1061. else if (!user)
  1062. res.status(404).send('Sorry, not email found.');
  1063. else {
  1064.  
  1065.  
  1066. Event.find({
  1067. '_id': {$in: user.events}
  1068. }, function (err, docs) {
  1069. console.log(docs);
  1070.  
  1071. res.json({success: true, events: docs});
  1072. });
  1073.  
  1074.  
  1075.  
  1076.  
  1077. }
  1078. });
  1079. };
  1080.  
  1081. module.exports.updateEvent = function (req, res)
  1082. {
  1083.  
  1084. Event.findById(req.params.id, function (err, event) {
  1085. if (err)
  1086. res.send(err);
  1087. console.log(event)
  1088.  
  1089. if (req.body.event.subject)
  1090. event.subject = req.body.event.subject;
  1091. if (req.body.event.description)
  1092. event.description = req.body.event.description;
  1093. if (req.body.event.startTime)
  1094. event.startTime = req.body.event.startTime;
  1095. if (req.body.event.endTime)
  1096. event.endTime = req.body.event.endTime;
  1097. if (req.body.event.status)
  1098. event.status = req.body.event.status;
  1099. if (req.body.event.howOften)
  1100. event.howOften = req.body.event.howOften;
  1101. if (req.body.event.reminder)
  1102. event.reminder = req.body.event.reminder;
  1103. if (req.body.event.sms)
  1104. event.sms = req.body.event.sms;
  1105. if (req.body.event.email)
  1106. event.email = req.body.event.email;
  1107.  
  1108. event.save(function (err) {
  1109. if (err)
  1110. send(err);
  1111. res.json({success: true});
  1112. });
  1113. });
  1114.  
  1115. };
  1116.  
  1117.  
  1118. module.exports.deleteEvent = function (req, res)
  1119. {
  1120.  
  1121.  
  1122. // Event.findOneAndRemove( { "_id": req.params.id }, function ( err, result ) {
  1123. // res.json( {
  1124. // message: "Successfully deleted the event",
  1125. // event: result
  1126. // } );
  1127. // } );
  1128.  
  1129.  
  1130. Event.findByIdAndRemove(req.params.id)
  1131. .exec(function (err, removed) {
  1132. if (err) {
  1133. res.send(err);
  1134. } else {
  1135.  
  1136. res.send(removed);
  1137. }
  1138. });
  1139.  
  1140.  
  1141. // Event.remove({
  1142. // _id: req.params
  1143. // }, function (err, event) {
  1144. // if (err) return res.send(err);
  1145. // res.json({ message: 'Event Deleted'});
  1146. // });
  1147.  
  1148. };
  1149.  
  1150.  
  1151.  
  1152. //////////////////////// BLOG /////////////////////////
  1153.  
  1154. module.exports.askQuestion = function (req, res)
  1155. {
  1156. User
  1157. .findOne({'email': req.body.email})
  1158. .exec(function (err, user) {
  1159. if (err)
  1160. res.status(500).send('Unexpected error. Contact Administrator.');
  1161. else if (!user)
  1162. res.status(404).send('Sorry, not email found.');
  1163. else {
  1164. var post = new Post();
  1165.  
  1166.  
  1167. post.title = req.body.post.title;
  1168. post.body = req.body.post.body;
  1169. post.author = user.id;
  1170. post.tags = req.body.post.tags;
  1171. post.anonymous = req.body.post.anonymous;
  1172. post.type = "question";
  1173.  
  1174.  
  1175. post.save(function (err, posti) {
  1176.  
  1177. if (err)
  1178. {
  1179.  
  1180. console.log(err);
  1181. } else
  1182. {
  1183.  
  1184. user.posts.push(posti.id);
  1185.  
  1186. user.save(function (err, user) {
  1187.  
  1188. emailer.sendAQuestion(user, posti, function () {
  1189. res.json({success: true});
  1190. });
  1191.  
  1192. });
  1193.  
  1194. }
  1195.  
  1196. });
  1197.  
  1198. }
  1199. });
  1200. };
  1201.  
  1202.  
  1203. module.exports.writeStory = function (req, res)
  1204. {
  1205. User
  1206. .findOne({'email': req.body.email})
  1207. .exec(function (err, user) {
  1208. if (err)
  1209. res.status(500).send('Unexpected error. Contact Administrator.');
  1210. else if (!user)
  1211. res.status(404).send('Sorry, not email found.');
  1212. else {
  1213. var post = new Post();
  1214.  
  1215.  
  1216. post.title = req.body.post.title;
  1217. post.body = req.body.post.body;
  1218. post.author = user.id;
  1219. post.tags = req.body.post.tags;
  1220. post.anonymous = req.body.post.anonymous;
  1221. post.type = "story";
  1222. console.log("in here")
  1223. console.log(req.body.post.image)
  1224.  
  1225. // res.json({success: true});
  1226. blogImageHelper.uploadBase64Image('blogupload/' + user.id + '_post.jpg', req.body.post.image, function (err, result) {
  1227. if (err)
  1228. console.log(err)
  1229. else {
  1230.  
  1231. console.log("result.url");
  1232. console.log(result);
  1233. post.image = String(result);
  1234.  
  1235.  
  1236.  
  1237. post.save(function (err, posti) {
  1238. if (err)
  1239. {
  1240. res.json({success: false, msg: 'Data error'});
  1241. console.log(err);
  1242. } else
  1243. {
  1244. user.posts.push(posti.id);
  1245. user.save(function (err, user) {
  1246.  
  1247. });
  1248. res.json({success: true});
  1249. }
  1250. });
  1251. }
  1252. });
  1253.  
  1254.  
  1255.  
  1256. }
  1257. });
  1258. };
  1259.  
  1260. module.exports.getAllPosts = function (req, res)
  1261. {
  1262. Post
  1263. .find({})
  1264. .populate('author', "username name")
  1265. .exec(function (err, posts) {
  1266.  
  1267. var postobj = [];
  1268.  
  1269. User
  1270. .findOne({'email': req.body.email})
  1271. .exec(function (err, user) {
  1272. if (err)
  1273. res.status(500).send('Unexpected error. Contact Administrator.');
  1274. else if (!user)
  1275. res.status(404).send('Sorry, not email found.');
  1276. else {
  1277.  
  1278. var bookmarks = user.bookmarks;
  1279. var postList = user.posts;
  1280.  
  1281.  
  1282. _.each(posts, function (value) {
  1283.  
  1284. // var objForm = value.toObject();
  1285.  
  1286. // value.bookmarked = true;
  1287. //console.log(value);
  1288.  
  1289.  
  1290.  
  1291. var objForm = value.toObject();
  1292. if (objForm.anonymous) {
  1293. objForm.author = null;
  1294. }
  1295. objForm.bookmarked = !!_.findWhere(bookmarks, objForm._id);
  1296. objForm.editable = !!_.findWhere(postList, objForm._id);
  1297.  
  1298.  
  1299.  
  1300. if (!!_.findWhere(posts.votes, {'user_id': user.id}))
  1301. {
  1302. var posti = _.findWhere(posts.votes, {'user_id': user.id});
  1303. objForm.myVote = posti.type;
  1304.  
  1305. }
  1306. postobj.push(objForm);
  1307.  
  1308. });
  1309.  
  1310. res.json({success: true, posts: postobj});
  1311.  
  1312.  
  1313.  
  1314. }
  1315. });
  1316.  
  1317.  
  1318.  
  1319.  
  1320. });
  1321.  
  1322.  
  1323. };
  1324.  
  1325.  
  1326.  
  1327. module.exports.getPost = function (req, res)
  1328. {
  1329. Post.findById(req.params.id, function (error, post) {
  1330.  
  1331. var relatedposts;
  1332.  
  1333.  
  1334. res.json({success: true, post: post, relatedposts: relatedposts});
  1335.  
  1336. });
  1337. };
  1338.  
  1339.  
  1340. module.exports.bookmarkPost = function (req, res)
  1341. {
  1342.  
  1343. User
  1344. .findOne({'email': req.body.email})
  1345. .exec(function (err, user) {
  1346. if (err)
  1347. res.status(500).send('Unexpected error. Contact Administrator.');
  1348. else if (!user)
  1349. res.status(404).send('Sorry, not email found.');
  1350. else {
  1351.  
  1352.  
  1353. user.bookmarks.push(req.body.postId);
  1354. user.save(function (err, user) {
  1355.  
  1356. res.json({success: true});
  1357. });
  1358.  
  1359.  
  1360.  
  1361.  
  1362. }
  1363. });
  1364.  
  1365.  
  1366.  
  1367.  
  1368. };
  1369.  
  1370. module.exports.unBookmarkPost = function (req, res)
  1371. {
  1372.  
  1373. User
  1374. .findOne({'email': req.body.email})
  1375. .exec(function (err, user) {
  1376. if (err)
  1377. res.status(500).send('Unexpected error. Contact Administrator.');
  1378. else if (!user)
  1379. res.status(404).send('Sorry, not email found.');
  1380. else {
  1381.  
  1382.  
  1383. var value = req.body.postId;
  1384.  
  1385.  
  1386. user.bookmarks.remove(value);
  1387. //
  1388.  
  1389. user.save(function (err, user) {
  1390.  
  1391. res.json({success: true});
  1392. });
  1393.  
  1394.  
  1395.  
  1396.  
  1397. }
  1398. });
  1399.  
  1400.  
  1401.  
  1402.  
  1403. };
  1404.  
  1405. module.exports.getMyBookmarks = function (req, res)
  1406. {
  1407. User
  1408. .findOne({'email': req.body.email})
  1409. .exec(function (err, user) {
  1410. if (err)
  1411. res.status(500).send('Unexpected error. Contact Administrator.');
  1412. else if (!user)
  1413. res.status(404).send('Sorry, not email found.');
  1414. else {
  1415.  
  1416.  
  1417.  
  1418. Post.find({'_id': {$in: user.bookmarks}}, function (err, posts) {
  1419.  
  1420. res.json({success: true, posts: posts});
  1421. }).populate('author', "username name");
  1422.  
  1423.  
  1424.  
  1425. }
  1426. });
  1427.  
  1428. };
  1429.  
  1430. module.exports.getMyPosts = function (req, res)
  1431. {
  1432. User
  1433. .findOne({'email': req.body.email})
  1434. .exec(function (err, user) {
  1435. if (err)
  1436. res.status(500).send('Unexpected error. Contact Administrator.');
  1437. else if (!user)
  1438. res.status(404).send('Sorry, not email found.');
  1439. else {
  1440.  
  1441.  
  1442.  
  1443. Post.find({'_id': {$in: user.posts}}, function (err, posts) {
  1444.  
  1445. res.json({success: true, posts: posts});
  1446. }).populate('author', "username name");
  1447.  
  1448.  
  1449.  
  1450. }
  1451. });
  1452.  
  1453. };
  1454.  
  1455.  
  1456. module.exports.upvotePost = function (req, res)
  1457. {
  1458. Post
  1459. .findOne({'_id': req.body.postId})
  1460. .exec(function (err, post) {
  1461. if (err)
  1462. res.status(500).send('Unexpected error. Contact Administrator.');
  1463. else if (!post)
  1464. res.status(404).send('Sorry, not post found.');
  1465. else {
  1466.  
  1467. var counter = post.votesCount;
  1468. post.votesCount = counter + 1;
  1469.  
  1470. var allVotes = post.votes;
  1471.  
  1472. User.findOne({'email': req.body.email})
  1473. .exec(function (err, user) {
  1474. if (err)
  1475. res.status(500).send('Unexpected error. Contact Administrator.');
  1476. else if (!user)
  1477. res.status(404).send('Sorry, not user found.');
  1478. else {
  1479. var voteId = user.id; //id e userit
  1480.  
  1481.  
  1482.  
  1483. if (!!_.findWhere(allVotes, {'user_id': voteId}))
  1484. {
  1485. var posti = _.findWhere(allVotes, {'user_id': voteId});
  1486.  
  1487. posti.type = 1;
  1488. } else
  1489. {
  1490. var newvotes = {user_id: user.id, type: 1}
  1491. post.votes.push(newvotes); // me kriju json te ri
  1492.  
  1493. }
  1494.  
  1495.  
  1496. post.save(function (err, user) {
  1497.  
  1498. res.json({success: true});
  1499.  
  1500. });
  1501.  
  1502.  
  1503.  
  1504. }
  1505. });
  1506.  
  1507.  
  1508.  
  1509.  
  1510.  
  1511.  
  1512.  
  1513.  
  1514. }
  1515. });
  1516.  
  1517. // User.findByIdAndUpdate("580feb019c4bb730045a7629", {$push: {'addresses': req.body.address}}, {upsert: true}, function (err, doc) {
  1518. // if (err) {
  1519. // console.log(err);
  1520. // } else {
  1521. // console.log("Successfully added");
  1522. // res.json({success: true, id: doc._id});
  1523. // }
  1524. // });
  1525.  
  1526.  
  1527. };
  1528.  
  1529. module.exports.downvotePost = function (req, res)
  1530. {
  1531. Post
  1532. .findOne({'_id': req.body.postId})
  1533. .exec(function (err, post) {
  1534. if (err)
  1535. res.status(500).send('Unexpected error. Contact Administrator.');
  1536. else if (!post)
  1537. res.status(404).send('Sorry, not post found.');
  1538. else {
  1539.  
  1540. var counter = post.votesCount;
  1541. post.votesCount = counter - 1;
  1542.  
  1543. var allVotes = post.votes;
  1544.  
  1545. User.findOne({'email': req.body.email})
  1546. .exec(function (err, user) {
  1547. if (err)
  1548. res.status(500).send('Unexpected error. Contact Administrator.');
  1549. else if (!user)
  1550. res.status(404).send('Sorry, not user found.');
  1551. else {
  1552. var voteId = user.id; //id e userit
  1553.  
  1554.  
  1555.  
  1556. if (!!_.findWhere(allVotes, {'user_id': voteId}))
  1557. {
  1558. var posti = _.findWhere(allVotes, {'user_id': voteId});
  1559.  
  1560. posti.type = -1;
  1561. } else
  1562. {
  1563. var newvotes = {user_id: user.id, type: -1};
  1564. post.votes.push(newvotes); // me kriju json te ri
  1565.  
  1566. }
  1567.  
  1568.  
  1569. post.save(function (err, user) {
  1570.  
  1571. res.json({success: true});
  1572.  
  1573. });
  1574.  
  1575.  
  1576.  
  1577. }
  1578. });
  1579.  
  1580.  
  1581.  
  1582.  
  1583.  
  1584.  
  1585.  
  1586.  
  1587. }
  1588. });
  1589.  
  1590. // User.findByIdAndUpdate("580feb019c4bb730045a7629", {$push: {'addresses': req.body.address}}, {upsert: true}, function (err, doc) {
  1591. // if (err) {
  1592. // console.log(err);
  1593. // } else {
  1594. // console.log("Successfully added");
  1595. // res.json({success: true, id: doc._id});
  1596. // }
  1597. // });
  1598.  
  1599.  
  1600. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement