currency.js 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. const Currency = require("../models/currency.js");
  2. const Uploader = require("../models/uploader.js");
  3. const createId = require("./createId.js");
  4. module.exports = {
  5. /*
  6. POST: create a new currency
  7. req.body = {
  8. uploader: String (id of owner)
  9. password: String
  10. location: String
  11. type: String (paper/coin)
  12. year: Number
  13. comment: String
  14. name: String
  15. currencyCode: String
  16. value: Number
  17. }
  18. req.files = {
  19. frontImage: Image
  20. backImage: Image
  21. }
  22. redirect: /currency
  23. */
  24. create: function(req, res){
  25. Uploader.findOne({_id: req.body.uploader})
  26. .then((uploader)=>{
  27. if(!uploader) throw "uploader";
  28. if(req.body.password !== uploader.password) throw "pass";
  29. let createImage = (image)=>{
  30. let fileString = `/currencyimages/${createId(25)}.jpg`;
  31. image.mv(`${__dirname}/..${fileString}`);
  32. return fileString;
  33. }
  34. let currency = new Currency({
  35. location: req.body.location,
  36. name: req.body.name,
  37. currencyCode: req.body.currencyCode,
  38. value: req.body.value,
  39. type: req.body.type,
  40. year: req.body.year,
  41. comment: req.body.comment,
  42. frontImage: createImage(req.files.frontImage),
  43. backImage: createImage(req.files.backImage)
  44. });
  45. return currency.save();
  46. })
  47. .then((currency)=>{
  48. return res.redirect("/");
  49. })
  50. .catch((err)=>{
  51. switch(err){
  52. case "uploader": return res.redirect("/");
  53. case "pass": return res.redirect("/");
  54. default:
  55. console.error(err);
  56. return res.redirect("/");
  57. }
  58. });
  59. },
  60. getData: function(req, res){
  61. Currency.find()
  62. .then((currencies)=>{
  63. return res.json(currencies);
  64. })
  65. .catch((err)=>{
  66. console.error(err);
  67. });
  68. }
  69. }