MessMenu-Backend / routes / messdetails.js
messdetails.js
Raw
require("dotenv").config();
var CryptoJS = require("crypto-js");
const { ClickAwayListener } = require("@material-ui/core");
const express = require("express");
const router = express.Router();
const MessDetail = require("../models/messdetail");
const azureblobimport = require("./azureblob");

router.get("/", async (req, res) => {
  try {
    // res.send("Get Request");
    const messdetails = await MessDetail.find();
    res.json(messdetails);
  } catch (err) {
    res.send("Error -" + err);
  }
});

router.get("/getone/:id", async (req, res) => {
  try {
    // res.send("Get Request");
    const messdetail = await MessDetail.findById(req.params.id);
    res.json(messdetail);
  } catch (err) {
    res.send("Error -" + err);
  }
});

router.post("/auth", async (req, res) => {
  // Pass lenght for 128bit AES is max 16char.....
  try {
    // Encrypting the pass
    key = CryptoJS.enc.Base64.parse(process.env.SECRET_KEY);
    iv = CryptoJS.enc.Base64.parse(process.env.SECRET_IV);
    var cipherData = CryptoJS.AES.encrypt(req.body.pass, key, {
      iv: iv,
    }).toString();

    // Decrypt
    // var data = CryptoJS.AES.decrypt(cipherData, key, { iv: iv });

    // console.log(cipherData);
    // res.send("Get Request");
    const messdetail = await MessDetail.findOne({
      email: req.body.email,
      pass: cipherData,
    });
    res.json(messdetail);
    console.log("Auth Route");
    console.log("mail: ", req.body.email);
    console.log("pass: ", req.body.pass);
  } catch (err) {
    res.send("Error -" + err);
  }
});

router.post("/", async (req, res) => {
  // Encrypting the pass
  key = CryptoJS.enc.Base64.parse(process.env.SECRET_KEY);
  iv = CryptoJS.enc.Base64.parse(process.env.SECRET_IV);
  var pcipherData = CryptoJS.AES.encrypt(req.body.pass, key, {
    iv: iv,
  }).toString();
  // console.log(pcipherData);
  const messdetail = new MessDetail({
    messname: req.body.messname,
    messaddress: req.body.messaddress,
    messcontact: req.body.messcontact,
    messthaliprice: req.body.messthaliprice,
    messthaliprice: req.body.messmonthlyprice,
    messthaliviews: req.body.messviews,
    messimage: req.body.messimage,
    messmenuimage: req.body.messmenuimage,
    messveg: req.body.messveg,
    messnonveg: req.body.messnonveg,
    messparcel: req.body.messparcel,
    messonline: req.body.messonline,
    email: req.body.email,
    pass: pcipherData,
  });

  try {
    const a1 = await messdetail.save();
    res.json(a1);
  } catch (err) {
    res.send("Error -" + err);
  }
});

router.patch("/:id", async (req, res) => {
  try {
    // Encrypting the pass
    key = CryptoJS.enc.Base64.parse(process.env.SECRET_KEY);
    iv = CryptoJS.enc.Base64.parse(process.env.SECRET_IV);
    var ucipherData = CryptoJS.AES.encrypt(req.body.pass, key, {
      iv: iv,
    }).toString();
    const messdetail = await MessDetail.findByIdAndUpdate(req.params.id);
    if (req.body.messname != null) {
      messdetail.messname = req.body.messname;
    }
    if (req.body.messaddress != null) {
      messdetail.messaddress = req.body.messaddress;
    }
    if (req.body.messcontact != null) {
      messdetail.messcontact = req.body.messcontact;
    }
    if (req.body.messviews != null) {
      messdetail.messviews = req.body.messviews;
    }
    if (req.body.messthaliprice != null) {
      messdetail.messthaliprice = req.body.messthaliprice;
    }
    if (req.body.messmonthlyprice != null) {
      messdetail.messmonthlyprice = req.body.messmonthlyprice;
    }
    if (req.body.messimage != null) {
      messdetail.messimage = req.body.messimage;
    }
    if (req.body.messmenuimage != null) {
      messdetail.messmenuimage = req.body.messmenuimage;
    }
    if (req.body.messveg != null) {
      messdetail.messveg = req.body.messveg;
    }
    if (req.body.messnonveg != null) {
      messdetail.messnonveg = req.body.messnonveg;
    }
    if (req.body.messparcel != null) {
      messdetail.messparcel = req.body.messparcel;
    }
    if (req.body.messonline != null) {
      messdetail.messonline = req.body.messonline;
    }
    if (req.body.email != null) {
      messdetail.email = req.body.email;
    }
    if (req.body.pass != null) {
      messdetail.pass = ucipherData;
    }
    const a1 = await messdetail.save();
    res.json(a1);
  } catch (err) {
    res.send("Error -" + err);
  }
});

router.patch("/upmessimages/:id", async (req, res) => {
  try {
    // console.log(req.body);

    let imageb64 = req.body.imageb64;
    let idnow = req.body.messid;
    let imageto = req.body.imageto;
    // const messinfo = req.params;
    var fres = await azureblobimport.azureblob(idnow, imageto, imageb64);

    // Updating Mongo DB
    const messdetail = await MessDetail.findByIdAndUpdate(idnow);
    if (imageto == "messmenuimages") {
      // console.log("in 1");
      messdetail.messmenuimage =
        "https://blobstorageformessmenu.blob.core.windows.net/messmenuimages/" +
        idnow +
        ".jpeg";
    } else if (imageto == "messimages") {
      // console.log("in 2");
      messdetail.messimage =
        "https://blobstorageformessmenu.blob.core.windows.net/messimages/" +
        idnow +
        ".jpeg";
    } else {
      console.log("Wrong path");
    }
    if (
      messdetail.messimage != req.body.messimagep ||
      messdetail.messmenuimage != req.body.messmenuimagep
    ) {
      // console.log(messdetail.messimage != req.body.messimagep);
      // console.log(messdetail.messmenuimage != req.body.messmenuimagep);
      // console.log(messdetail.messmenuimage);
      // console.log(req.body.messmenuimagep);
      // console.log("New");
      const mongoimageurl = await messdetail.save();
    } else {
      // console.log("old");
      // const mongoimageurl = null;
    }
    // console.log("Whats going on :", mongoimageurl);
    res.json({ fres, mongoimageurl });
  } catch (err) {
    res.send("Error -" + err);
  }
});

router.delete("/:id", async (req, res) => {
  try {
    const messdetail = await MessDetail.findById(req.params.id);
    const a1 = await messdetail.remove();
    res.json(a1);
  } catch (err) {
    res.send("Error -" + err);
  }
});

module.exports = router;