Files
amble_api/controllers/.filepart

2911 lines
100 KiB
Plaintext
Raw Normal View History

2025-07-15 15:54:43 +05:30
var express = require('express')
, router = express.Router()
var rpguser_data = require('../models/rpguserlist');
var rpgwalk_data = require('../models/rpgwalklist');
var rpgcategory_data = require("../models/rpgcategorylist");
var rpgcategoryuser_data = require("../models/rpgcategoryuserlist");
var rpgwalkcategory_data= require('../models/rpgwalkcategory');
var rpgusermaprating_data = require('../models/rpgusermaprating');
var rpguserapprating_data = require("../models/rpguserapprating");
var rpgratingquestion = require('../models/rpgratingquestion');
var rpgtoggle_data = require('../models/licensingmodel');
var zlib = require('zlib');
var base64 = require('file-base64');
var zipper = require("zip-local");
var rimraf = require("rimraf");
var ReadableData = require('stream').Readable
var fetch = require("node-fetch");
var path = require('path');
var keys = require('../keysfile');
var multer = require('multer');
var fs = require('fs');
const { isNull, update } = require('lodash');
var client = require('twilio')(keys.twilio.accountSid, keys.twilio.authToken,{lazyLoading: true});
const isNullOrUndefined = (val)=> val === null || val === undefined || val === '' || val === [];
function randomString(length, chars) {
var result = '';
for (var i = length; i > 0; --i) result += chars[Math.round(Math.random() * (chars.length - 1))];
return result;
};
router.get('/',function(req, res) {
res.render('layout',{layout:'api'});
});
router.post('/addrpguser',function(req,res){
var Userid = randomString(10,'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ');
var Firstname = req.body.Firstname ;
var Lastname = req.body.Lastname ;
var Email = req.body.Email ;
var BirthYear = req.body.BirthYear ;
var Gender = req.body.Gender ;
var DeviceID = req.body.DeviceID ;
var Categories = ""
var Platform = req.body.Platform ;
var Username = Firstname+' '+Lastname;
var Userrole = req.body.Userrole ;
var Password = req.body.Password ;
if(isNullOrUndefined(req.body.ProfilePic)){
var ProfilePic = "https://ensoimmersiveweb.com/images/UserProfile/avatardefault.png" ;
}else{
var ProfilePic = req.body.ProfilePic;
}
var Language = req.body.Language ;
var MobileNo = req.body.MobileNo ;
var TotalPoints= '';
var StepsTaken = '';
rpguser_data.findOne({ Userid : Userid }).then((result) => {
if(result){
Userid = randomString(10,'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ');
}
else{
rpguser_data.findOne({ Email : Email, MobileNo : MobileNo,DeviceID:DeviceID }).then((result) => {
if(result)
{
res.status(404).send({code:404,msg:"user already exists"});
}else{
new rpguser_data({
Userid :Userid ,
Firstname :Firstname ,
Lastname :Lastname ,
Categories :Categories,
Email :Email ,
BirthYear :BirthYear ,
Gender :Gender ,
DeviceID :DeviceID ,
Platform :Platform ,
Username :Username ,
Userrole :Userrole ,
Password :Password ,
ProfilePic :ProfilePic ,
Language :Language ,
MobileNo :MobileNo ,
TotalPoints:TotalPoints,
StepsTaken :StepsTaken ,
DateofRegistration: new Date()
}).save(
function(err,result){
if(err){
res.status(404).send({code:404,msg:"user details not added"});
}else{
res.status(200).send({code:200,msg:"user details added",result});
}
});
}
});
}
});
});
router.post('/rpguserlogin',function(req,res){
var Email = req.body.Email;
var Password = req.body.Password;
rpguser_data.findOne({ Email : Email , Password : Password }).then((result) => {
if(result)
{
res.status(200).send({code:200,msg:"user details found",data:result});
}else{
res.status(404).send({code:404,msg:"user not found"});
}
});
});
router.post('/rpgusergenerateopt',function(req,res){
var MobileNo = req.body.MobileNo;
var MobileOTP = randomString(6,'0123456789');
var OTPValidity = req.body.OTPValidity;
rpguser_data.findOne({ MobileNo : MobileNo }).then((result) => {
if(result)
{
console.log("user otp generated");
var resnum1 = result.MobileNo;
var phonenumber;
var resnum = resnum1.substring(0, 3);
if(resnum !== '+91' && resnum1.length == 10){
phonenumber = '+91'.concat(resnum1);
}
else if(resnum === '+91' && resnum1.length == 13){
phonenumber = result.MobileNo;
}
var data = {};
client.messages.create({
body: 'Amble RPG Walk: '+ MobileOTP +' is your otp. This otp will be valid only for '+OTPValidity+' seconds.',
from: '+13605487039',
to: phonenumber,
}).then((message) => {
if(message){
data = {
message : message.body,
from : message.from,
to : message.to ,
otp : MobileOTP
};
console.log(data);
}
else{
res.status(404).send({code:404,msg:"OTP sending failed"});
}
}).done();
setTimeout(function(){
rpguser_data.findOneAndUpdate({ MobileNo : MobileNo },{$set:{ MobileOTP : null }},{new: true}).then((result) => {
if(result)
{
console.log({code:200,msg:"otp cleared",data:result});
}else{
console.log({code:404,msg:"otp clearing failed"});
}
});
},OTPValidity*1000);
rpguser_data.findOneAndUpdate({ MobileNo : MobileNo },{$set:{ MobileOTP : MobileOTP }}).then((result) => {
if(result)
{
res.status(200).send({code:200,msg:"OTP sent successfully",data:result});
}else{
res.status(404).send({code:404,msg:"user not found"});
}
});
}else{
res.status(404).send({code:404,msg:"user not found"});
}
});
});
router.post('/rpguserremoveopt',function(req,res){
var MobileNo = req.body.MobileNo;
rpguser_data.findOneAndUpdate({ MobileNo : MobileNo },{$set:{ MobileOTP : null }},{new: true}).then((result) => {
if(result)
{
res.status(200).send({code:200,msg:"otp cleared",data:result});
}else{
res.status(404).send({code:404,msg:"otp clearing failed"});
}
});
});
router.post('/rpguserotplogin',function(req,res){
var MobileNo = req.body.MobileNo;
var MobileOTP= req.body.MobileOTP;
rpguser_data.findOne({ MobileNo : MobileNo , MobileOTP : MobileOTP }).then((result) => {
if(result)
{
res.status(200).send({code:200,msg:"user validated via otp",data:result});
}else{
res.status(404).send({code:404,msg:"user validation failed"});
}
});
});
router.post("/addrpgcategoryuser",async function(req,res){
var UserID = req.body.UserID;
var Categories = req.body.Categories;
var separatedArray = new Array();
separatedArray = Categories.split(',')
Categories = [...new Set(separatedArray)]
if(isNullOrUndefined(UserID) && isNullOrUndefined(Categories)){
res.status(404).send({code:404,msg:"Empty Category found"});
}else{
var result1 = await rpguser_data.findOne({Userid:UserID});
if(isNullOrUndefined(result1) || result1.length == 0){
res.status(404).send({code:404,msg:"No User Found"})
}else{
var result = await rpguser_data.findOneAndUpdate({Userid:UserID},{$set:{Categories:Categories}},{new:true})
if(isNullOrUndefined(result) || result.length == 0){
res.status(404).send({code:404,msg:"Failed"})
}else{
res.status(200).send({code:200,msg:"Sucess",result})
}
}
}
})
router.post("/addrpgcategory", async function(req,res){
var Category = req.body.Category;
if(isNullOrUndefined(Category)){
res.status(404).send({code:404,msg:"Empty Category Found"});
}else{
await new rpgcategory_data({Category:Category}).save();
res.status(200).send({code:200,msg:"Category added successfully"});
}
});
router.post("/addfeedbackquestion", async function(req,res){
var AppQuestions = req.body.AppQuestions;
var MapQuestions = req.body.MapQuestions;
await rpgratingquestion.findOneAndUpdate({id:"1"},{$set:{MapQuestions:MapQuestions,AppQuestions:AppQuestions}},{new:true}).then(async(data)=>{
if(!isNullOrUndefined(data)){
res.status(200).send({code:200,msg:"Success"});
}else{
await new rpgratingquestion({
id:"1",
MapQuestions:MapQuestions,
AppQuestions:AppQuestions
}).save(function(err,data){
if(err){
res.status(404).send({code:404,msg:"Failed"});
}else{
res.status(200).send({code:200,msg:"Success"});
}
})
}
});
})
router.get("/getfeedbackquestion",async function(req,res){
var result = await rpgratingquestion.find({});
console.log(result[0].MapQuestions[0].Mapquestionid)
if(isNullOrUndefined(result)){
res.status(404).send({code:404,msg:"No Question Found"})
}else{
result = result[0];
res.status(200).send({code:200,result});
}
})
router.post("/addPostMyWalks" , async function(req,res){
var Userid = req.body.Userid;
var Categories = req.body.Categories;
var MapId = req.body.MapId;
var MapName = req.body.MapName;
var Rating = req.body.Rating;
var NoofPOIVisited = req.body.NoofPOIVisited;
var Map_Thumbnail = req.body.Map_Thumbnail;
if(isNullOrUndefined(Map_Thumbnail)){
const result = await rpgwalk_data.findOne({Map_ID:MapId})
if( isNullOrUndefined(result)){
Map_Thumbnail = Map_Thumbnail
}else{
Map_Thumbnail = result.Map_Thumbnail_URL
}
}else{
Map_Thumbnail = Map_Thumbnail
}
if(isNullOrUndefined(NoofPOIVisited)){
NoofPOIVisited = "0"
}else{
NoofPOIVisited = NoofPOIVisited
}
if(isNullOrUndefined(Rating)){
Rating = "0"
}else{
Rating = Rating
}
var TotalNoOfPOI = req.body.TotalNoOfPOI;
var Language = req.body.Language;
var POI_TimeTaken = req.body.POI_TimeTaken;
var result = await rpgcategoryuser_data.findOne({Userid:Userid,MapId:MapId});
if(!result){
await new rpgcategoryuser_data({Categories:Categories,MapId:MapId,Userid:Userid,MapName:MapName,Rating:Rating,NoofPOIVisited:NoofPOIVisited,Map_Thumbnail:Map_Thumbnail,TotalNoOfPOI:TotalNoOfPOI,Language:Language,POI_TimeTaken:POI_TimeTaken}).save(function(err,result){
res.status(200).send({code:200,msg:"Data added successfully",result});
});
}
else{
const result = await rpgcategoryuser_data.findOneAndUpdate({Userid:Userid,MapId:MapId},{$set : {
Categories:Categories,
MapName : MapName,
Rating : Rating,
Map_Thumbnail:Map_Thumbnail,
NoofPOIVisited : NoofPOIVisited,
TotalNoOfPOI : TotalNoOfPOI,
Language : Language,
POI_TimeTaken : POI_TimeTaken
}},{new:true});
res.status(200).send({code:200,msg:"Data Updated successfully",result});
}
});
router.post("/getMyWalks",async function(req,res){
var Userid = req.body.Userid;
var result = await rpgcategoryuser_data.find({Userid:Userid});
if(result.length==0 || isNullOrUndefined(result)){
res.status(404).send({code:404,msg:"No Walk detail found"});
}else{
res.status(200).send({code:200,result});
}
})
router.post("/rpgusermapfeedback" , async function(req,res){
var UserID = req.body.UserID;
var Map_ID = req.body.Map_ID;
var MapQuestion_ID = req.body.MapQuestion_ID;
var Question = req.body.Question;
var Rating = req.body.Rating;
var Feedback_Map = req.body.Feedback_Map;
await rpgusermaprating_data.findOne({UserID:UserID,Map_ID:Map_ID}).then((data)=>{
if(!isNullOrUndefined(data)){
var m=0;
for(let i=0;i<data.MapQuestions.length;i++){
if(data.MapQuestions[i].MapQuestion_ID == MapQuestion_ID){
m=i;
}
}
rpgusermaprating_data.findOneAndUpdate({UserID:UserID,Map_ID:Map_ID,'MapQuestions.MapQuestion_ID':MapQuestion_ID},{$set:{
['MapQuestions.'+m+'.Question']:Question,
['MapQuestions.'+m+'.Rating']:Rating,
['MapQuestions.'+m+'.Feedback_Map']:Feedback_Map
}},{new:true}).then((result)=>{
if(!isNullOrUndefined(result)){
res.status(200).send({code:200,msg:"Success",result});
}else{
rpgusermaprating_data.findOneAndUpdate({UserID:UserID,Map_ID:Map_ID},{$push:{
MapQuestions:{
MapQuestion_ID:MapQuestion_ID,
Question:Question,
Rating:Rating,
Feedback_Map:Feedback_Map
}}},{new:true}).then((result)=>{
if(!isNullOrUndefined(result)){
res.status(200).send({code:200,msg:"Success",result});
}else{
res.status(404).send({code:404,msg:"Failed"});
}
})
}
})
}else{
new rpgusermaprating_data({
UserID:UserID,
Map_ID:Map_ID,
MapQuestions:[{
MapQuestion_ID:MapQuestion_ID,
Question:Question,
Rating:Rating,
Feedback_Map:Feedback_Map
}]
}).save(function(err,result){
if(!isNullOrUndefined(result)){
res.status(200).send({code:200,msg:"Success",result});
}else{
res.status(404).send({code:404,msg:"Failed"});
}
})
}
})
});
router.post("/rpguserappfeedback" , async function(req,res){
var UserID = req.body.UserID;
var AppQuestion_ID = req.body.AppQuestion_ID;
var Question = req.body.Question;
var Rating = req.body.Rating;
var Feedback_App = req.body.Feedback_App;
await rpguserapprating_data.findOne({UserID:UserID}).then((data)=>{
if(!isNullOrUndefined(data)){
var m=0;
for(let i=0;i<data.AppQuestions.length;i++){
if(data.AppQuestions[i].AppQuestion_ID == AppQuestion_ID){
m=i;
}
}
rpguserapprating_data.findOneAndUpdate({UserID:UserID,'AppQuestions.AppQuestion_ID':AppQuestion_ID},{$set:{
['AppQuestions.'+m+'.Question']:Question,
['AppQuestions.'+m+'.Rating']:Rating,
['AppQuestions.'+m+'.Feedback_App']:Feedback_App
}},{new:true}).then((result)=>{
if(!isNullOrUndefined(result)){
res.status(200).send({code:200,msg:"Success",result});
}else{
rpguserapprating_data.findOneAndUpdate({UserID:UserID},{$push:{
AppQuestions:{
AppQuestion_ID:AppQuestion_ID,
Question:Question,
Rating:Rating,
Feedback_App:Feedback_App
}}},{new:true}).then((result)=>{
if(!isNullOrUndefined(result)){
res.status(200).send({code:200,msg:"Success",result});
}else{
res.status(404).send({code:404,msg:"Failed"});
}
})
}
})
}else{
new rpguserapprating_data({
UserID:UserID,
AppQuestions:[{
AppQuestion_ID:AppQuestion_ID,
Question:Question,
Rating:Rating,
Feedback_App:Feedback_App
}]
}).save(function(err,result){
if(!isNullOrUndefined(result)){
res.status(200).send({code:200,msg:"Success",result});
}else{
res.status(404).send({code:404,msg:"Failed"});
}
})
}
})
});
router.post("/getrpguserfeedback",async function(req,res){
var UserID = req.body.UserID;
var Map_ID = req.body.Map_ID;
var map_result = await rpgusermaprating_data.find({UserID:UserID,Map_ID:Map_ID})
var App_result = await rpguserapprating_data.find({UserID:UserID});
if(isNullOrUndefined(map_result) || isNullOrUndefined(App_result)){
res.status(404).send({code:404,msg:"No Feedback Detail found"});
}else{
map_result = map_result[0];
App_result = App_result[0];
res.status(200).send({code:200,map_result,App_result});
}
})
router.post("/addiosperiscopearscene",async function(req,res){
var storage = multer.diskStorage({
destination: function(req,file,cb){
const storagepath = './public/AssetBundle/';
fs.exists(storagepath, exist => {
if (!exist) {
fs.mkdir(storagepath, { recursive: true }, (err) => {
if (err)
{
throw err;
}
else{
return cb(null, storagepath)
}
});
}
else{
return cb(null, storagepath)
}
})
},
filename: function(req,file,cb){
cb(null,file.originalname);
}
});
var upload = multer({ storage : storage,
limits: {fieldSize: 50000000}}).single('file');
upload(req, res, async function(err){
// check for error thrown by multer- file size etc
if (err) {
// An unknown error occurred when uploading.
//console.log("Unknown error occured",err);
res.status(404).send({message:"Unknown error occured",err : err});
}
else{
// Everything went fine.
var file = req.file
if (!file) {
//console.log('Please choose a file');
res.status(404).send({message:"Please choose a file"});
}else {
var Map_ID = req.body.MapId;
var PeriscopeARScene_IOS_URL = "";
var newfilename = Map_ID + 'PeriscopeARScene_IOS';
var securelink = req.hostname == 'localhost' || req.hostname == '127.0.0.1' ? 'http' : 'https';
var urlpath = securelink + '://' + req.get('host');
var filename = file.filename;
var filenamepath = "public/AssetBundle/" + filename;
var newfilenamepath = "public/AssetBundle/" + newfilename;
var fullnewfilenamepath = urlpath + "/AssetBundle/" + newfilename;
PeriscopeARScene_IOS_URL = fullnewfilenamepath;
console.log(fullnewfilenamepath);
fs.rename(filenamepath,newfilenamepath, function(err) {
if (err) {
console.log('ERROR: ' + err);
}
else{
const query = {Map_ID : Map_ID };
const updateDocument = {
$set: {PeriscopeARScene_IOS_URL: PeriscopeARScene_IOS_URL }
};
rpgwalk_data.findOneAndUpdate(query,updateDocument,{new:true}).then( async (result) => {
if(result)
{
res.status(200).send({msg:"PeriscopeARSceneIOS updated",data:result});
}
else{
res.status(404).send({msg:"map details not found"});
}
});
}
});
}
}
})
})
router.post("/addperiscopearscene",async function(req,res){
var storage = multer.diskStorage({
destination: function(req,file,cb){
const storagepath = './public/AssetBundle/';
fs.exists(storagepath, exist => {
if (!exist) {
fs.mkdir(storagepath, { recursive: true }, (err) => {
if (err)
{
throw err;
}
else{
return cb(null, storagepath)
}
});
}
else{
return cb(null, storagepath)
}
})
},
filename: function(req,file,cb){
cb(null,file.originalname);
}
});
var upload = multer({ storage : storage,
limits: {fieldSize: 50000000}}).single('file');
upload(req, res, async function(err){
// check for error thrown by multer- file size etc
if (err) {
// An unknown error occurred when uploading.
//console.log("Unknown error occured",err);
res.status(404).send({message:"Unknown error occured",err : err});
}
else{
// Everything went fine.
var file = req.file
if (!file) {
//console.log('Please choose a file');
res.status(404).send({message:"Please choose a file"});
}else {
var Map_ID = req.body.MapId;
var PeriscopeARScene_URL = "";
var PeriscopeARScene_Name = req.body.PeriscopeARScene_Name;
var newfilename = Map_ID + 'PeriscopeARScene';
var securelink = req.hostname == 'localhost' || req.hostname == '127.0.0.1' ? 'http' : 'https';
var urlpath = securelink + '://' + req.get('host');
var filename = file.filename;
var filenamepath = "public/AssetBundle/" + filename;
var newfilenamepath = "public/AssetBundle/" + newfilename;
var fullnewfilenamepath = urlpath + "/AssetBundle/" + newfilename;
PeriscopeARScene_URL = fullnewfilenamepath;
console.log(fullnewfilenamepath);
fs.rename(filenamepath,newfilenamepath, function(err) {
if (err) {
console.log('ERROR: ' + err);
}
else{
const query = {Map_ID : Map_ID };
const updateDocument = {
$set: {PeriscopeARScene_URL: PeriscopeARScene_URL,PeriscopeARScene_Name:PeriscopeARScene_Name }
};
rpgwalk_data.findOneAndUpdate(query,updateDocument,{new:true}).then( async (result) => {
if(result)
{
res.status(200).send({msg:"PeriscopeARScene updated",data:result});
}
else{
res.status(404).send({msg:"map details not found"});
}
});
}
});
}
}
})
})
router.post("/addmapzipurl",async function(req,res){
var Map_ID = req.body.Map_ID;
var Map_Zip_Url = req.body.Map_Zip_Url
await rpgwalk_data.findOneAndUpdate({Map_ID:Map_ID},{$set:{Map_Zip_Url:Map_Zip_Url}},{new:true}).then((result)=>{
if(result){
res.status(200).send({msg:"Map Detail updated",result})
}else{
res.status(404).send({msg:"No Map detail found"})
}
})
})
router.post("/addassetbundle", async function(req,res){
var storage = multer.diskStorage({
destination: function(req,file,cb){
const storagepath = './public/AssetBundle/';
fs.exists(storagepath, exist => {
if (!exist) {
fs.mkdir(storagepath, { recursive: true }, (err) => {
if (err)
{
throw err;
}
else{
return cb(null, storagepath)
}
});
}
else{
return cb(null, storagepath)
}
})
},
filename: function(req,file,cb){
cb(null,file.originalname);
}
});
var upload = multer({ storage : storage,
limits: {fieldSize: 50000000}}).single('file');
upload(req, res, async function(err){
// check for error thrown by multer- file size etc
if (err) {
// An unknown error occurred when uploading.
//console.log("Unknown error occured",err);
res.status(404).send({message:"Unknown error occured",err : err});
}
else{
// Everything went fine.
var file = req.file
if (!file) {
//console.log('Please choose a file');
res.status(404).send({message:"Please choose a file"});
}else {
var Map_ID = req.body.MapId;
var Arscene = "";
var ArPoi = req.body.ArPoi;
var AssetBundle_Name = req.body.AssetBundle_Name;
var newfilename = Map_ID + 'Arscene';
var securelink = req.hostname == 'localhost' || req.hostname == '127.0.0.1' ? 'http' : 'https';
var urlpath = securelink + '://' + req.get('host');
var filename = file.filename;
var filenamepath = "public/AssetBundle/" + filename;
var newfilenamepath = "public/AssetBundle/" + newfilename;
var fullnewfilenamepath = urlpath + "/AssetBundle/" + newfilename;
Arscene = fullnewfilenamepath;
console.log(fullnewfilenamepath);
fs.rename(filenamepath,newfilenamepath, function(err) {
if (err) {
console.log('ERROR: ' + err);
}
else{
const query = {Map_ID : Map_ID };
const updateDocument = {
$set: {ArScene_AB_Url: Arscene,ArPoi:ArPoi,AssetBundle_Name:AssetBundle_Name }
};
rpgwalk_data.findOneAndUpdate(query,updateDocument,{new:true}).then( async (result) => {
if(result)
{
res.status(200).send({msg:"Arscene updated",data:result});
}
else{
res.status(404).send({msg:"map details not found"});
}
});
}
});
}
}
})
})
router.post("/addiosassetbundle", async function(req,res){
var storage = multer.diskStorage({
destination: function(req,file,cb){
const storagepath = './public/AssetBundle/';
fs.exists(storagepath, exist => {
if (!exist) {
fs.mkdir(storagepath, { recursive: true }, (err) => {
if (err)
{
throw err;
}
else{
return cb(null, storagepath)
}
});
}
else{
return cb(null, storagepath)
}
})
},
filename: function(req,file,cb){
cb(null,file.originalname);
}
});
var upload = multer({ storage : storage,
limits: {fieldSize: 50000000}}).single('file');
upload(req, res, async function(err){
// check for error thrown by multer- file size etc
if (err) {
// An unknown error occurred when uploading.
//console.log("Unknown error occured",err);
res.status(404).send({message:"Unknown error occured",err : err});
}
else{
// Everything went fine.
var file = req.file
if (!file) {
//console.log('Please choose a file');
res.status(404).send({message:"Please choose a file"});
}else {
var Map_ID = req.body.MapId;
var ArScene_AB_IOS_Url = "";
var newfilename = Map_ID + 'ArScene_AB_IOS';
var securelink = req.hostname == 'localhost' || req.hostname == '127.0.0.1' ? 'http' : 'https';
var urlpath = securelink + '://' + req.get('host');
var filename = file.filename;
var filenamepath = "public/AssetBundle/" + filename;
var newfilenamepath = "public/AssetBundle/" + newfilename;
var fullnewfilenamepath = urlpath + "/AssetBundle/" + newfilename;
ArScene_AB_IOS_Url = fullnewfilenamepath;
console.log(fullnewfilenamepath);
fs.rename(filenamepath,newfilenamepath, function(err) {
if (err) {
console.log('ERROR: ' + err);
}
else{
const query = {Map_ID : Map_ID };
const updateDocument = {
$set: {ArScene_AB_IOS_Url: ArScene_AB_IOS_Url }
};
rpgwalk_data.findOneAndUpdate(query,updateDocument,{new:true}).then( async (result) => {
if(result)
{
res.status(200).send({msg:"Arscene updated",data:result});
}
else{
res.status(404).send({msg:"map details not found"});
}
});
}
});
}
}
})
})
router.post('/getuserlocation', function(req,res){
var latitude = req.body.latitude;
var longitude = req.body.longitude;
var ACCESS_TOKEN = "pk.eyJ1IjoiZW5zby1pbW1lcnNpdmUiLCJhIjoiY2toMW01ODE4MTk0NzJxbnZyYzhsMHB1cyJ9.02d-FQX0o80XjwRPNQXzoA"
var url = 'https://api.mapbox.com/geocoding/v5/mapbox.places/'
+ longitude + ', ' + latitude
+ '.json?access_token=' + ACCESS_TOKEN;
async function ResponseData(){
const resp = await fetch(url);
const response = await resp.json();
return response
}
ResponseData().then((resp)=>{
var geoData = resp.features[0].context;
var region,city,postcode;
for(i=0;i<geoData.length;i++){
if(geoData[i].id.indexOf('region')>=0){
region =geoData[i].text;
}
if(geoData[i].id.indexOf('place')>=0){
city = geoData[i].text;
}
if(geoData[i].id.indexOf('postcode')>=0){
postcode = geoData[i].text;
}
if(isNullOrUndefined(postcode)){
postcode = "000000";
}else{
postcode = postcode;
}
}
if(isNullOrUndefined(region) && isNullOrUndefined(city)){
res.status(404).send({geoData: "Map Detail Not found"});
}else{
res.status(200).send({geoData:{region,city,postcode}});
}
}).catch((err)=>{
res.status(404).json({ err: err.toString() });
})
})
router.post('/getrpguser', async function(req,res){
var Email = req.body.Email;
const result = await rpguser_data.findOne({ Email : Email });
if(result)
{
var result1 = result.Userid
}
else{
var result1 = ""
}
// const Categories = await rpgcategoryuser_data.findOne({Userid:result1});
if(result){
res.status(200).send({code:200,msg:"user details found",result,HyperLink:"Just completed a Heritage Walk in Mumbai, give it a try!",PlayStoreLink:"https://www.maharashtratourism.gov.in/"});
}
else{
res.status(404).send({code:404,msg:"user not found",Email});
}
});
router.get("/categorylist",async function(req,res){
var Category = await rpgcategory_data.find();
if(isNullOrUndefined(Category)){
res.status(404).send({code:404,msg:"No Category Found"});
}else{
var code =`code: ${200}`
res.status(200).send(Category[0]);
}
});
router.post('/updaterpguser',function(req,res){
var Firstname = req.body.Firstname ;
var Lastname = req.body.Lastname ;
var Email = req.body.Email ;
var BirthYear = req.body.BirthYear ;
var Gender = req.body.Gender ;
var Username = Firstname+' '+Lastname;
var Userrole = req.body.Userrole ;
var Password = req.body.Password ;
var ProfilePic = req.body.ProfilePic ;
var Language = req.body.Language ;
var MobileNo = req.body.MobileNo ;
rpguser_data.findOneAndUpdate({ Email : Email },{$set:{
Firstname :Firstname ,
Lastname :Lastname ,
BirthYear :BirthYear ,
Gender :Gender ,
Username :Username ,
Userrole :Userrole ,
Password :Password ,
ProfilePic :ProfilePic ,
Language :Language ,
MobileNo :MobileNo
}},{new: true}).then((result) => {
if(result)
{
res.status(200).send({code:200,msg:"user details updated",result:result});
}else{
res.status(404).send({code:404,msg:"user not found"});
}
});
});
router.post('/updatelicensingtoggledata',function(req,res){
var toggleid = req.body.toggleid ;
var togglename = req.body.togglename;
var togglestatus= req.body.togglestatus;
rpgtoggle_data.findOneAndUpdate({ toggleid : toggleid , togglename : togglename },{$set:{ togglestatus : togglestatus }}).then((result) => {
if(result)
{
res.status(200).send({ message: "toggle status updated" });
}
else {
new rpgtoggle_data({
toggleid : toggleid ,
togglename : togglename ,
togglestatus: togglestatus
}).save();
res.status(200).send({ message: "toggle status update failed but new added" });
}
});
});
router.post('/getlicensingtoggledata',function(req,res){
var toggleid = req.body.toggleid ;
var togglename = req.body.togglename;
rpgtoggle_data.findOne({ toggleid : toggleid , togglename : togglename }).then((result) => {
if(result)
{
console.log(result.togglestatus);
res.status(200).send({code:200, message: result.togglestatus });
}
else {
res.status(404).send({ code:404,message: "toggle status not found" });
}
});
});
router.post('/btffileupload',function(req,res){
var storage = multer.diskStorage({
destination: function(req,file,cb){
const storagepath = './public/anchor/';
fs.exists(storagepath, exist => {
if (!exist) {
fs.mkdir(storagepath, { recursive: true }, (err) => {
if (err)
{
throw err;
}
else{
return cb(null, storagepath)
}
});
}
else{
return cb(null, storagepath)
}
})
},
filename: function(req,file,cb){
cb(null,file.originalname);
}
});
var upload = multer({ storage : storage, limits: {fieldSize: 50000000000}}).array('filey',50);
upload(req, res, async function(err){
// check for error thrown by multer- file size etc
if (err) {
// An unknown error occurred when uploading.
//console.log("Unknown error occured",err);
res.send({message:"Unknown error occured",err : err});
}
else{
// Everything went fine.
var mapname = req.body.mapname;
if(isNullOrUndefined(req.body.worldmap) ){
res.send({message:"file is not present"});
}else{
// Buffer.from(json, 'base64').toString('ascii')
const data = new Uint8Array(Buffer.from(req.body.worldmap));
fs.writeFile(`./public/anchor/${mapname}`,data,function(err) {
if(err) {
return console.log(err);
}
console.log("The file was saved!");
});
// const destination = `./public/anchor/BTF.zip`;
// zlib.gzip(data, (err, response) => {
// if (err) {
// console.log(err);
// }
// fs.writeFile(destination, response, (err, data) => {
// if (err) {
// console.log(err);
// }
// })
// })
// var format1 = "worldmap"
// var filename1 = `${'Latest17_my_session'}.${format1}`;
// fs.writeFile(`./public/anchor/${filename1}`, worldmap, function(err) {
// if(err) {
// return console.log(err);
// }
// console.log("The file was saved!");
// });
if (!mapname ) {
//console.log('Please choose a file');
res.send({message:"Please choose a file"});
}else {
var securelink = req.hostname == 'localhost' || req.hostname == '127.0.0.1' ? 'http' : 'https';
var urlpath = securelink + '://' + req.get('host');
// var filename2 = file[1].filename;
var fullnewfilenamepath1 = urlpath + `/anchor/${mapname}`;
// var fullnewfilenamepath2 = urlpath + "/anchor/"+filename1;
// filename2:fullnewfilenamepath2
res.send({msg:"uploded",filename1:fullnewfilenamepath1});
}
}
}
})
})
router.post('/updaterpguserprofile', async function(req,res){
var storage = multer.diskStorage({
destination: function(req,file,cb){
const storagepath = './public/images/UserProfile/';
fs.exists(storagepath, exist => {
if (!exist) {
fs.mkdir(storagepath, { recursive: true }, (err) => {
if (err)
{
throw err;
}
else{
return cb(null, storagepath)
}
});
}
else{
return cb(null, storagepath)
}
})
},
filename: function(req,file,cb){
cb(null,file.originalname);
}
});
//var upload = multer({ storage : storage, limits: {fieldSize: 50000000}}).single('myFiles');
var upload = multer({ storage : storage, limits: {fieldSize: 50000000}}).array('filey',50);
upload(req, res, async function (err) {
if (err instanceof multer.MulterError) {
// A Multer error occurred when uploading.
//console.log("Something went wrong");
res.status(404).send({code:404,message:"Something went wrong"});
}
else if (err) {
// An unknown error occurred when uploading.
//console.log("Unknown error occured",err);
res.status(404).send({code:404,message:"Unknown error occured",err : err});
}
else{
var file = req.body.file;
if(isNullOrUndefined(file)){
res.status(404).send({code:404,message:"file is not present"});
}else{
var format = "png"
var filename = `${randomString(5,'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ')}.${format}`;
const imageBufferData = Buffer.from(file, 'base64')
var streamObj = new ReadableData()
streamObj.push(imageBufferData)
streamObj.push(null)
streamObj.pipe(fs.createWriteStream(filename));
if (!filename) {
//console.log('Please choose a file');
res.status(404).send({code:404,message:"Please choose a file"});
}else {
var Userid = req.body.Userid;
var ProfilePic= '';
var newfilename = Userid + '-profilepic';
var securelink = req.hostname == 'localhost' || req.hostname == '127.0.0.1' ? 'http' : 'https';
var urlpath = securelink + '://' + req.get('host');
var filename = filename;
var filenamepath = filename;
var newfilenamepath = "public/images/UserProfile/" + newfilename + ".png";
var fullnewfilenamepath = urlpath + "/images/UserProfile/" + newfilename + ".png";
ProfilePic = fullnewfilenamepath;
console.log(fullnewfilenamepath);
await fs.rename(filenamepath,newfilenamepath, async function(err) {
if (err) {
console.log('ERROR: ' + err);
}
else{
await rpguser_data.findOneAndUpdate({ Userid : Userid },{$set:{
ProfilePic : ProfilePic
}},{new:true}).then((result) => {
if(result)
{
res.status(200).send({code:200,msg:"user profilepic updated",result:result});
}
else{
res.status(404).send({code:404,msg:"user profilepic updation failed"});
}
});
}
})
}
}
}
})
});
router.post('/updaterpguserprofilepic',function(req,res){
var storage = multer.diskStorage({
destination: function(req,file,cb){
const storagepath = './public/Walks/';
fs.exists(storagepath, exist => {
if (!exist) {
fs.mkdir(storagepath, { recursive: true }, (err) => {
if (err)
{
throw err;
}
else{
return cb(null, storagepath)
}
});
}
else{
return cb(null, storagepath)
}
})
},
filename: function(req,file,cb){
cb(null,file.originalname);
}
});
var upload = multer({ storage : storage,
fileFilter: (req, file, cb) => {
if (file.mimetype == "image/png" || file.mimetype == "image/gif" || file.mimetype == "image/jpg" || file.mimetype == "image/jpeg") {
cb(null, true);
} else {
cb(null, false);
return cb(new Error('Only .png, .gif, .jpg and .jpeg format allowed!'));
}
},
limits: {fieldSize: 50000000}}).single('rpguserprofilepic');
upload(req, res, async function(err){
// check for error thrown by multer- file size etc
if (err) {
// An unknown error occurred when uploading.
//console.log("Unknown error occured",err);
res.send({message:"Unknown error occured",err : err});
}
else{
// Everything went fine.
var file = req.file;
if (!file) {
//console.log('Please choose a file');
res.send({message:"Please choose a file"});
}else {
var Userid = req.body.Userid;
var ProfilePic= '';
var newfilename = Userid + '-profilepic';
var securelink = req.hostname == 'localhost' || req.hostname == '127.0.0.1' ? 'http' : 'https';
var urlpath = securelink + '://' + req.get('host');
var filename = file.filename;
var filenamepath = "public/Walks/" + filename;
var newfilenamepath = "public/Walks/ProfilePictures/" + newfilename + ".jpeg";
var fullnewfilenamepath = urlpath + "/Walks/ProfilePictures/" + newfilename + ".jpeg";
ProfilePic = fullnewfilenamepath;
console.log(fullnewfilenamepath);
fs.rename(filenamepath,newfilenamepath, function(err) {
if (err) {
console.log('ERROR: ' + err);
}
else{
rpgwalk_data.findOneAndUpdate({ Userid : Userid },{$set:{
ProfilePic : ProfilePic
}}).then((result) => {
if(result)
{
res.send({msg:"user profilepic updated",data:result});
}
else{
res.send({msg:"user profilepic updation failed"});
}
});
}
});
}
}
});
});
router.post('/rpgappratingandfeedback',function(req,res){
var Email = req.body.Email;
var AppFeedback = req.body.AppFeedback;
var AppRating = req.body.AppRating;
rpguser_data.findOneAndUpdate({ Email : Email },{$set:{
AppFeedback:AppFeedback,
AppRating :AppRating
}}).then((result) => {
if(result)
{
res.status(200).send({code:200,msg:"app rated by user",data:result});
}else{
res.status(404).send({code:404,msg:"app rating failed"});
}
});
});
router.post('/updaterpguserdeviceid',function(req,res){
var Email = req.body.Email;
var DeviceID= req.body.DeviceID;
var Platform = req.body.Platform
rpguser_data.findOneAndUpdate({ Email : Email },{$set:{
DeviceID:DeviceID,Platform:Platform
}}).then((result) => {
if(result)
{
res.status(200).send({code:200,msg:"deviceid and Platform for user updated",data:result});
}else{
res.status(404).send({code:404,msg:"deviceid and Platform updation failed"});
}
});
});
router.post('/getuseremail',function(req,res){
var DeviceID = req.body.DeviceID;
rpguser_data.findOne({DeviceID:DeviceID}).then((result)=>{
if(result){
res.status(200).send({code:200,msg:"User found",Email:result.Email})
}else{
res.status(404).send({code:404,msg:"No User found"})
}
});
});
router.post('/findrpguserdeviceid',function(req,res){
var Email = req.body.Email;
var DeviceID= req.body.DeviceID;
rpguser_data.findOne({ Email : Email }).then((result) => {
if(result){
rpguser_data.findOne({ Email : Email , DeviceID : DeviceID }).then((result) => {
if(result){
res.status(200).send({code:200,msg:"deviceid for user exists"});
}
else{
res.status(404).send({code:404,msg:"no deviceid for user found"});
}
});
}
else{
res.status(404).send({code:404,msg:"user not found"});
}
});
});
router.post('/updaterpguserpoints',function(req,res){
var Email = req.body.Email;
var TotalPoints= req.body.TotalPoints;
rpguser_data.findOneAndUpdate({ Email : Email },{$set:{
TotalPoints:TotalPoints
}}).then((result) => {
if(result)
{
res.status(200).send({code:200,msg:"points for user added/updated",data:result});
}else{
res.status(404).send({code:404,msg:"points addition/updation failed"});
}
});
});
router.post('/updaterpgusersteps',function(req,res){
var Email = req.body.Email;
var StepsTaken= req.body.StepsTaken;
rpguser_data.findOneAndUpdate({ Email : Email },{$set:{
StepsTaken:StepsTaken
}}).then((result) => {
if(result)
{
res.status(200).send({code:200,msg:"steps for user added/updated",data:result});
}else{
res.status(404).send({code:404,msg:"steps addition/updation failed"});
}r
});
});
router.post('/rpgaddupdateuserwalkdetails',function(req,res){
var Userid = req.body.Userid ;
var Map_ID = req.body.Map_ID ;
var Map_Feedback = req.body.Map_Feedback ;
var Map_StartTime= req.body.Map_StartTime;
var Map_Endtime = req.body.Map_Endtime ;
var Map_Status = req.body.Map_Status ;
var Map_Rating = req.body.Map_Rating ;
rpguser_data.findOneAndUpdate({ Userid : Userid , "WalkDetails.Map_ID" : Map_ID },{$set:{
Map_Feedback :Map_Feedback ,
Map_StartTime:Map_StartTime,
Map_Endtime :Map_Endtime ,
Map_Status :Map_Status ,
Map_Rating :Map_Rating
}}).then((result) => {
if(result)
{
res.status(200).send({msg:"walk details for user updated",data:result});
}else{
var WalkDetails = {
Map_ID :Map_ID ,
Map_Feedback :Map_Feedback ,
Map_StartTime:Map_StartTime,
Map_Endtime :Map_Endtime ,
Map_Status :Map_Status ,
Map_Rating :Map_Rating ,
POI_Data :[]
}
rpguser_data.findOneAndUpdate({ Userid : Userid },{$push:{ WalkDetails : WalkDetails}}).then((result) => {
if(result)
{
res.status(200).send({msg:"walk details for user updated",data:result});
}else{
res.status(200).send({msg:"walk details for user updated",data:result});
}
});
}
});
});
router.get('/rpggetwalkrating', async function(req,res){
const result = await rpgusermaprating_data.find({});
if(result.length == 0 || isNullOrUndefined(result)){
res.status(404).send({code:404,avg:"5"})
}else{
var avg;
var sum1 = 0;
for(let i=0;i<result.length;i++){
var sum =0;
for(let j=0;j<result[i].MapQuestions.length;j++){
sum += Number(result[i].MapQuestions[j].Rating)
}
if(sum < 9){
sum = 13
}else{
sum = sum
}
sum1 += Number(sum/result[i].MapQuestions.length)
}
avg = Number(sum1/result.length)
res.status(200).send({code:200,avg:avg.toFixed(1)})
}
})
router.get('/rpggetmaprating', async function(req,res){
var result = await rpgusermaprating_data.find({});
if(result.length == 0 || isNullOrUndefined(result)){
res.status(404).send({code:404,avg:"Not Updating"})
}else{
var Map_ID;
for(let z=0;z<result.length;z++){
Map_ID = result[z].Map_ID
var data = await rpgusermaprating_data.find({Map_ID:Map_ID});
var avg;
var sum1 =0;
for(i=0;i<data.length;i++){
var sum =0
for(let j=0;j<data[i].MapQuestions.length;j++){
sum += Number(data[i].MapQuestions[j].Rating)
}
if(sum <= 9){
sum = 13
}else{
sum = sum
}
sum1+= Number(sum/data[i].MapQuestions.length)
}
avg = Number(sum1/data.length)
await rpgwalk_data.findOneAndUpdate({Map_ID:Map_ID},{$set:{Map_Ratting:avg.toFixed(1)}},{new:true}).then((result)=>{
if(result){
var initfilename = `/Database/MapPoiContent/${Map_ID}/MapDetails/0.txt`;
var initfilepath = './public' + initfilename;
var strresult = JSON.stringify(result);
fs.writeFile(initfilepath, strresult, function (err) {
if (err){
console.log("map info file updation failed");
}
else{
var securelink = req.hostname == 'localhost' || req.hostname == '127.0.0.1' ? 'http' : 'https';
var urlpath = securelink + '://' + req.get('host');
var fileurl = urlpath + initfilename;
var ZipFileurl = urlpath + "/Database.zip"
zipper.sync.zip(`./public/Database/MapPoiContent/${Map_ID}`).compress().save(`./public/Database/MapPoiContent/${Map_ID}.zip`);
console.log("map details updated");
}
});
}else{
console.log("Map detail not found")
}
})
}
res.status(200).send({code:200,msg:"Rating Updated"})
}
})
router.get('/rpggetapprating',async function(req,res){
const result = await rpguserapprating_data.find({});
if(isNullOrUndefined(result) || result.length == 0){
res.send({avg:"5"})
}else{
var avg;
var sum1 =0;
for(let i=0;i<result.length;i++){
var sum =0
for(let j=0;j<result[i].AppQuestions.length;j++){
sum += Number(result[i].AppQuestions[j].Rating)
}
if(sum < 9){
sum = 13
}else{
sum = sum
}
sum1+= Number(sum/result[i].AppQuestions.length)
}
avg = Number(sum1/result.length)
res.status(200).send({avg:avg.toFixed(1)})
}
})
router.post('/rpggetwalkratingdetails',function(req,res){
var Map_ID = req.body.Map_ID;
rpguser_data.find({Map_ID:Map_ID}).then((results) => {
if(results){
var sum;
for(var i=0, len = results.length ; i < len ; i++){
sum += parseInt( results[i].Map_Rating, 10 ); //don't forget to add the base
}
var avg = sum/results.length;
rpgwalk_data.findOneAndUpdate({ Userid : Userid },{$push:{ Map_Rating : avg}}).then((result) => {
if(result)
{
res.status(200).send({code:200,msg:"walk ratings updated",data:result});
}else{
res.status(404).send({code:404,msg:"walk ratings updation failed"});
}
});
}
else{
res.status(404).send({code:404,msg:"no user details found"});
}
});
});
router.post('/rpgaddupdateuserpoidetails',function(req,res){
var Userid = req.body.Userid ;
var Map_ID = req.body.Map_ID ;
var POI_ID = req.body.POI_ID ;
var AmbleFeedback = req.body.AmbleFeedback ;
var AmbleStartTime= req.body.AmbleStartTime;
var AmbleEndtime = req.body.AmbleEndtime ;
var AmbleStatus = req.body.AmbleStatus ;
var AmbleRating = req.body.AmbleRating ;
rpguser_data.findOneAndUpdate({ Userid : Userid , "WalkDetails.Map_ID" : Map_ID , "WalkDetails.POI_Data.POI_ID" : POI_ID },{$set:{
AmbleFeedback :AmbleFeedback ,
AmbleStartTime:AmbleStartTime,
AmbleEndtime :AmbleEndtime ,
AmbleStatus :AmbleStatus ,
AmbleRating :AmbleRating
}}).then((result) => {
if(result)
{
res.status(200).send({msg:"walk details for user updated",data:result});
}else{
var POI_Data = {
Map_ID :Map_ID ,
Map_Feedback :Map_Feedback ,
Map_StartTime:Map_StartTime,
Map_Endtime :Map_Endtime ,
Map_Status :Map_Status ,
Map_Rating :Map_Rating ,
POI_Data :[]
}
rpguser_data.findOneAndUpdate({ Userid : Userid },{$push:{ POI_Data : POI_Data }}).then((result) => {
if(result)
{
res.status(200).send({msg:"walk details for user updated",data:result});
}else{
res.status(200).send({msg:"walk details for user updated",data:result});
}
});
}
});
});
router.post('/rpgaddMapversion',async function(req,res){
var Map_ID = req.body.Map_ID;
var Map_Version = req.body.Map_Version;
await rpgwalk_data.findOneAndUpdate({ Map_ID : Map_ID },{$set:{Map_Version:Map_Version}},{new:true}).then((result) => {
if(result)
{
res.status(200).send({result})
}else{
res.status(404).send({msg:"no Detail updated"})
}
})
})
router.post('/rpgaddupdatewalkdetails', (req, res)=>{
var Map_ID = req.query.mapid;
console.log(Map_ID)
var folder = `./public/Database/MapPoiContent/${Map_ID}`;
var subfolder1 = `./public/Database/MapPoiContent/${Map_ID}/Image`;
var subfolder = `./public/Database/MapPoiContent/${Map_ID}/MapDetails`;
if (!fs.existsSync(folder)){
fs.mkdirSync(folder);
}
if(!fs.existsSync(subfolder)){
fs.mkdirSync(subfolder)
}
if(!fs.existsSync(subfolder1)){
fs.mkdirSync(subfolder1)
}
var storage = multer.diskStorage({
destination: function(req,file,cb){
const storagepath = `./public/Database/MapPoiContent/${Map_ID}/Image/`
fs.exists(storagepath, exist => {
if (!exist) {
fs.mkdir(storagepath, { recursive: true }, (err) => {
if (err)
{
throw err;
}
else{
return cb(null, storagepath)
}
});
}
else{
return cb(null, storagepath)
}
})
},
filename: function(req,file,cb){
cb(null,file.originalname);
}
});
var upload = multer({ storage : storage,
fileFilter: (req, file, cb) => {
if (file.mimetype == "image/png" || file.mimetype == "image/gif" || file.mimetype == "image/jpg" || file.mimetype == "image/jpeg") {
cb(null, true);
} else {
cb(null, false);
return cb(new Error('Only .png, .gif, .jpg and .jpeg format allowed!'));
}
},
limits: {fieldSize: 50000000}}).fields(
[
{
name: 'mapthumbnail',
maxCount: 1
}
]
);
upload(req, res, async function(err){
// check for error thrown by multer- file size etc
if (err) {
// An unknown error occurred when uploading.
//console.log("Unknown error occured",err);
res.status(404).send({message:"Unknown error occured",err : err});
}
else{
// Everything went fine.
var files = req.files;
console.log(files)
if (!files) {
//console.log('Please choose a file');
res.status(404).send({message:"Please choose a file"});
} else {
//var Map_ID = randomString(10,'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ');
if(files.mapthumbnail !== undefined){
var Map_ID = req.body.mapid;
var Map_Version = 0 ;
var Map_Name = req.body.mapname;
var Map_Description = req.body.mapdescription;
var Map_Thumbnail_URL= '';
var Map_Category = req.body.mapcategory;
var Total_POI = req.body.totalpoi;
var Map_Startlongitude= req.body.startlongitude;
var Map_Startlatitude = req.body.startlatitude;
var newfilename = "0";
var securelink = req.hostname == 'localhost' || req.hostname == '127.0.0.1' ? 'http' : 'https';
var urlpath = securelink + '://' + req.get('host');
var filename = files.mapthumbnail[0].filename;
var filenamepath = `public/Database/MapPoiContent/${Map_ID}/Image/` + filename;
var newfilenamepath = `public/Database/MapPoiContent/${Map_ID}/Image/` + newfilename + ".png";
var fullnewfilenamepath = urlpath + `/Database/MapPoiContent/${Map_ID}/Image/` + newfilename + ".png";
var Map_Zip_Url = urlpath + `/Database/MapPoiContent/${Map_ID}.zip`;
var Total_Trivia = req.body.Total_Trivia;
// var image = await sharp(req.file.buffer).resize({ width: 400, height:400 })// Resize if you want
// .jpeg({
// quality: 40,
// }).toFile("public/Walks/" + newfilename + "_Pavan.jpeg")
// .catch( err => { console.log('error: ', err) })
Map_Thumbnail_URL = fullnewfilenamepath;
console.log(fullnewfilenamepath);
await rpgwalk_data.find({}).then((result)=>{
if(isNullOrUndefined(result) || result.length == 0){
Map_Version = Map_Version
}else{
Map_Version = Number(result[0].Map_Version)+1
rpgwalk_data.updateMany({},{$set:{Map_Version:Map_Version}}).then((resu)=>{
console.log(resu)
})
}
})
fs.rename(filenamepath,newfilenamepath, async function(err) {
if (err) {
console.log('ERROR: ' + err);
}
else{
rpgwalk_data.findOneAndUpdate({ Map_ID : Map_ID },{$set:{
Map_Name :Map_Name ,
Map_Description :Map_Description ,
Map_Thumbnail_URL :Map_Thumbnail_URL,
Map_Category :Map_Category ,
Total_POI :Total_POI ,
Map_Startlongitude:Map_Startlongitude,
Map_Startlatitude :Map_Startlatitude ,
Map_Zip_Url :Map_Zip_Url ,
Total_Trivia :Total_Trivia
}},{new:true}).then( async (result) => {
if(result)
{
var initfilename = `/Database/MapPoiContent/${Map_ID}/MapDetails/0.txt`;
var initfilepath = './public' + initfilename;
var strresult = JSON.stringify(result);
fs.writeFile(initfilepath, strresult, function (err) {
if (err){
res.status(404).send({msg:"map info file updation failed"});
}
else{
var securelink = req.hostname == 'localhost' || req.hostname == '127.0.0.1' ? 'http' : 'https';
var urlpath = securelink + '://' + req.get('host');
var fileurl = urlpath + initfilename;
var ZipFileurl = urlpath + "/Database.zip"
zipper.sync.zip(`./public/Database/MapPoiContent/${Map_ID}`).compress().save(`./public/Database/MapPoiContent/${Map_ID}.zip`);
res.status(200).send({msg:"map details updated",data:result});
}
});
}
else{
console.log(Map_Version)
new rpgwalk_data({
Map_ID :Map_ID ,
Map_Name :Map_Name ,
Trivia_List :[] ,
Map_Description :Map_Description ,
Map_Thumbnail_URL :Map_Thumbnail_URL,
Map_Status :'Published' ,
Map_Type :'Normal' ,
Map_Category :Map_Category ,
Total_POI :Total_POI ,
Map_Version :Map_Version ,
Map_Startlongitude:Map_Startlongitude,
Map_Startlatitude :Map_Startlatitude ,
Map_Polycoords :[] ,
POI_Data :[] ,
Map_Zip_Url :Map_Zip_Url ,
Total_Trivia :Total_Trivia,
DateofRegistration: new Date()
}).save(function(err,result) {
var initfilename = `/Database/MapPoiContent/${Map_ID}/MapDetails/0.txt`;
var initfilepath = './public' + initfilename;
if(result)
{
console.log(result)
var strresult = JSON.stringify(result);
fs.writeFile(initfilepath, strresult, function (err) {
if (err){
res.status(404).send({msg:"map info file updation failed"});
}
else{
var securelink = req.hostname == 'localhost' || req.hostname == '127.0.0.1' ? 'http' : 'https';
var urlpath = securelink + '://' + req.get('host');
var fileurl = urlpath + initfilename;
var ZipFileurl = urlpath + "/Database.zip"
zipper.sync.zip(`./public/Database/MapPoiContent/${Map_ID}`).compress().save(`./public/Database/MapPoiContent/${Map_ID}.zip`);
res.status(200).send({msg:"new map details added"});
}
});
}else{
res.status(404).send({msg:"all map info not found"});
}
})
}
});
}
});
}else{
console.log("else ")
var Map_ID = req.body.mapid;
var Map_Name = req.body.mapname;
var Map_Description = req.body.mapdescription;
var Map_Thumbnail_URL= '';
var Map_Category = req.body.mapcategory;
var Total_POI = req.body.totalpoi;
var Map_Startlongitude= req.body.startlongitude;
var Map_Startlatitude = req.body.startlatitude;
var securelink = req.hostname == 'localhost' || req.hostname == '127.0.0.1' ? 'http' : 'https';
var urlpath = securelink + '://' + req.get('host');
var Map_Zip_Url = urlpath + `/Database/MapPoiContent/${Map_ID}.zip`;
var Total_Trivia = req.body.Total_Trivia;
console.log(Total_Trivia)
rpgwalk_data.findOne({Map_ID : Map_ID}).then((result)=>{
if(result){
Map_Thumbnail_URL=result.Map_Thumbnail_URL
rpgwalk_data.findOneAndUpdate({ Map_ID : Map_ID },{$set:{
Map_Name :Map_Name ,
Map_Description :Map_Description ,
Map_Thumbnail_URL :Map_Thumbnail_URL,
Map_Category :Map_Category ,
Total_POI :Total_POI ,
Map_Startlongitude:Map_Startlongitude,
Map_Startlatitude :Map_Startlatitude ,
Map_Zip_Url :Map_Zip_Url ,
Total_Trivia :Total_Trivia
}},{new:true}).then((result) => {
if(result)
{
var initfilename = `/Database/MapPoiContent/${Map_ID}/MapDetails/0.txt`;
var initfilepath = './public' + initfilename;
var strresult = JSON.stringify(result);
fs.writeFile(initfilepath, strresult, function (err) {
if (err){
res.status(404).send({msg:"map info file updation failed"});
}
else{
var securelink = req.hostname == 'localhost' || req.hostname == '127.0.0.1' ? 'http' : 'https';
var urlpath = securelink + '://' + req.get('host');
var fileurl = urlpath + initfilename;
var ZipFileurl = urlpath + "/Database.zip"
zipper.sync.zip(`./public/Database/MapPoiContent/${Map_ID}`).compress().save(`./public/Database/MapPoiContent/${Map_ID}.zip`);
res.status(200).send({msg:"map details updated",data:result});
}
});
}else{
res.status(404).send({msg:"map detail not found"})
}
});
}
});
}
}
}
});
});
router.post("/rpgaddtotalwalkdistance",async function(req,res){
var Map_ID = req.body.Map_ID;
var TotalWalkDistance = req.body.TotalWalkDistance;
await rpgwalk_data.findOneAndUpdate({Map_ID:Map_ID},{$set:{TotalWalkDistance:TotalWalkDistance}},{new:true}).then((result)=>{
if(result){
var initfilename = `/Database/MapPoiContent/${Map_ID}/MapDetails/0.txt`;
var initfilepath = './public' + initfilename;
var strresult = JSON.stringify(result);
fs.writeFile(initfilepath, strresult, function (err) {
if (err){
res.status(404).send({msg:"map info file updation failed"});
}
else{
var securelink = req.hostname == 'localhost' || req.hostname == '127.0.0.1' ? 'http' : 'https';
var urlpath = securelink + '://' + req.get('host');
var fileurl = urlpath + initfilename;
var ZipFileurl = urlpath + "/Database.zip"
zipper.sync.zip(`./public/Database/MapPoiContent/${Map_ID}`).compress().save(`./public/Database/MapPoiContent/${Map_ID}.zip`);
res.status(200).send({msg:"Sucess",result})
}
});
}else{
res.status(404).send({msg:"No walk detail found"})
}
})
})
router.post('/rpgaddupdatewalkpolydetails', (req, res)=>{
var Map_ID = req.body.Map_ID;
var Map_Polycoords= req.body.Map_Polycoords;
console.log(Map_Polycoords);
rpgwalk_data.findOneAndUpdate({ Map_ID : Map_ID },{$set:{ Map_Polycoords : Map_Polycoords }}).then((result) => {
if(result)
{
var initfilename = `/Database/MapPoiContent/${Map_ID}/MapDetails/0.txt`;
var initfilepath = './public' + initfilename;
var strresult = JSON.stringify(result);
fs.writeFile(initfilepath, strresult, function (err) {
if (err){
res.status(404).send({msg:"map info file updation failed"});
}
else{
var securelink = req.hostname == 'localhost' || req.hostname == '127.0.0.1' ? 'http' : 'https';
var urlpath = securelink + '://' + req.get('host');
zipper.sync.zip(`./public/Database/MapPoiContent/${Map_ID}`).compress().save(`./public/Database/MapPoiContent/${Map_ID}.zip`);
res.status(200).send({msg:"map polgon details updated",data:result});
}
});
}else{
res.status(404).send({msg:"map polygon details updation failed"});
}
});
});
router.post('/rpgaddupdatewalkpoidetails', (req, res)=>{
var Map_ID = req.query.mapid;
console.log(Map_ID)
var folder = `./public/Database/MapPoiContent/${Map_ID}`;
var subfolder1 = `./public/Database/MapPoiContent/${Map_ID}/POI`;
var subfolder = `./public/Database/MapPoiContent/${Map_ID}/Audio`;
if (!fs.existsSync(folder)){
fs.mkdirSync(folder);
}
if(!fs.existsSync(subfolder)){
fs.mkdirSync(subfolder)
}
if(!fs.existsSync(subfolder1)){
fs.mkdirSync(subfolder1)
}
var storage = multer.diskStorage({
destination: function(req,file,cb){
const storagepath = `./public/Database/MapPoiContent/${Map_ID}/`;
fs.exists(storagepath, exist => {
if (!exist) {
fs.mkdir(storagepath, { recursive: true }, (err) => {
if (err)
{
throw err;
}
else{
return cb(null, storagepath)
}
});
}
else{
return cb(null, storagepath)
}
})
},
filename: function(req,file,cb){
cb(null,file.originalname);
}
});
var upload = multer({ storage : storage,
fileFilter: (req, file, cb) => {
if (file.mimetype == "audio/mpeg" || file.mimetype == "audio/mp3" || file.mimetype == "image/png" || file.mimetype == "image/gif" || file.mimetype == "image/jpg" || file.mimetype == "image/jpeg") {
cb(null, true);
} else {
cb(null, false);
return cb(new Error('Only .png, .gif, .jpg and .jpeg format allowed!'));
}
},
limits: {fieldSize: 50000000}}).fields(
[
{
name: 'poithumbnail',
maxCount: 1
},
{
name: 'contenturl',
maxCount: 1
}
]
);
upload(req, res, async function(err){
// check for error thrown by multer- file size etc
if (err) {
// An unknown error occurred when uploading.
//console.log("Unknown error occured",err);
res.status(404).send({message:"Unknown error occured",err : err});
}
else{
// Everything went fine.
var files = req.files;
if (!files) {
//console.log('Please choose a file');
res.status(404).send({message:"Please choose files correctly"});
} else {
if(files.poithumbnail !== undefined && files.contenturl !== undefined){
var Map_ID = req.body.mapid2 ;
var POI_ID = req.body.poiid ;
var POI_Name = req.body.poiname ;
var POI_Description = req.body.poidesc ;
var POI_Type = req.body.poitype ;
var POI_Thumbnail_URL= '' ;
var POI_Status = req.body.poistatus ;
var POI_Content_Type = req.body.contenttype;
var POI_Content_URL = '' ;
var POI_Trigger_Area = req.body.triggerarea;
var Latitude = req.body.latitude ;
var Longitude = req.body.longitude ;
var newfilename0 = req.body.mapaudio;
var newfilename1 = req.body.mapaudio;
var securelink = req.hostname == 'localhost' || req.hostname == '127.0.0.1' ? 'http' : 'https';
var urlpath = securelink + '://' + req.get('host');
var filename0 = files.poithumbnail[0].filename;
var filename1 = files.contenturl[0].filename;
var filenamepath0 = `public/Database/MapPoiContent/${Map_ID}/` + filename0;
var filenamepath1 = `public/Database/MapPoiContent/${Map_ID}/` + filename1;
var newfilenamepath0 = `public/Database/MapPoiContent/${Map_ID}/POI/` + newfilename0 + ".png";
var newfilenamepath1 = `public/Database/MapPoiContent/${Map_ID}/Audio/` + newfilename1 + ".mp3";
var fullnewfilenamepath0 = 'https://ensoimmersiveweb.com'+`/Database/MapPoiContent/${Map_ID}/POI/` + newfilename0 + ".png";
var fullnewfilenamepath1 = 'https://ensoimmersiveweb.com' + `/Database/MapPoiContent/${Map_ID}/Audio/` + newfilename1 + ".mp3";
// var image = await sharp(req.file.buffer).resize({ width: 400, height:400 })// Resize if you want
// .jpeg({
// quality: 40,
// }).toFile("public/Walks/" + newfilename + "_Pavan.jpeg")
// .catch( err => { console.log('error: ', err) })
POI_Thumbnail_URL= fullnewfilenamepath0;
POI_Content_URL = fullnewfilenamepath1;
fs.rename(filenamepath0,newfilenamepath0, function(err) {
if (err) {
console.log('ERROR: ' + err);
}
else{
fs.rename(filenamepath1,newfilenamepath1, function(err) {
if (err) {
console.log('ERROR: ' + err);
}
else{
console.log('File Renamed');
}
});
rpgwalk_data.findOne({ Map_ID : Map_ID }).then((result) => {
if(result)
{
var poidata = result.POI_List;
var NewPOI_number;
for(var i=0;i<poidata.length;i++){
if(POI_ID == poidata[i].POI_ID){
console.log(POI_ID,poidata[i].POI_ID);
NewPOI_number = poidata[i].POI_Number;
}
};
rpgwalk_data.findOneAndUpdate({ Map_ID : Map_ID , 'POI_List.POI_ID': POI_ID },{$set:{
["POI_List."+NewPOI_number+".POI_Name"] :POI_Name ,
["POI_List."+NewPOI_number+".POI_Description"] :POI_Description ,
["POI_List."+NewPOI_number+".POI_Type"] :POI_Type ,
["POI_List."+NewPOI_number+".POI_Thumbnail_URL"]:POI_Thumbnail_URL,
["POI_List."+NewPOI_number+".POI_Status"] :POI_Status ,
["POI_List."+NewPOI_number+".POI_Content_Type"] :POI_Content_Type ,
["POI_List."+NewPOI_number+".POI_Content_URL"] :POI_Content_URL ,
["POI_List."+NewPOI_number+".POI_Trigger_Area"] :POI_Trigger_Area ,
["POI_List."+NewPOI_number+".Latitude"] :Latitude ,
["POI_List."+NewPOI_number+".Longitude"] :Longitude ,
}},{new:true}).then((result) => {
if(result)
{
console.log("with file",result)
var initfilename = `/Database/MapPoiContent/${Map_ID}/MapDetails/0.txt`;
var initfilepath = './public' + initfilename;
var strresult = JSON.stringify(result);
fs.writeFile(initfilepath, strresult, function (err) {
if (err){
res.status(404).send({msg:"map info file updation failed"});
}
else{
var securelink = req.hostname == 'localhost' || req.hostname == '127.0.0.1' ? 'http' : 'https';
var urlpath = securelink + '://' + req.get('host');
var fileurl = urlpath + initfilename;
var ZipFileurl = urlpath + "/Database.zip"
zipper.sync.zip(`./public/Database/MapPoiContent/${Map_ID}`).compress().save(`./public/Database/MapPoiContent/${Map_ID}.zip`);
res.status(200).send({msg:"poi details updated",data:result});
}
});
}
else{
rpgwalk_data.findOne({ Map_ID : Map_ID }).then((result) => {
if(result)
{
var poidata = result.POI_List;
console.log(poidata);
var POI_Number;
if(poidata.length == 0){
POI_Number = 0;
}
else{
for(var i=0; i<poidata.length; i++){
// if(poidata[i].POI_Number.indexOf(i)){
// }
if(i !== poidata[i].POI_Number){
POI_Number = i;
break;
}
else{
POI_Number = poidata.length;
}
}
}
var POI_List = {
POI_ID :POI_ID ,
POI_Name :POI_Name ,
POI_Description :POI_Description ,
POI_Type :POI_Type ,
POI_Thumbnail_URL:POI_Thumbnail_URL,
POI_Number :POI_Number ,
POI_Status :POI_Status ,
POI_Content_Type :POI_Content_Type ,
POI_Content_URL :POI_Content_URL ,
POI_Trigger_Area :POI_Trigger_Area ,
Latitude :Latitude ,
Longitude :Longitude
};
rpgwalk_data.findOneAndUpdate({ Map_ID : Map_ID },{$push:{
POI_List :POI_List
}},{new:true}).then((result) => {
if(result)
{
console.log("new poi",result)
var initfilename = `/Database/MapPoiContent/${Map_ID}/MapDetails/0.txt`;
var initfilepath = './public' + initfilename;
var strresult = JSON.stringify(result);
fs.writeFile(initfilepath, strresult, function (err) {
if (err){
res.status(404).send({msg:"map info file updation failed"});
}
else{
var securelink = req.hostname == 'localhost' || req.hostname == '127.0.0.1' ? 'http' : 'https';
var urlpath = securelink + '://' + req.get('host');
var fileurl = urlpath + initfilename;
var ZipFileurl = urlpath + "/Database.zip"
zipper.sync.zip(`./public/Database/MapPoiContent/${Map_ID}`).compress().save(`./public/Database/MapPoiContent/${Map_ID}.zip`);
res.status(200).send({msg:"poi details added",data:result});
}
});
}
else{
res.status(404).send({msg:"poi details addition failed"});
}
});
}
else{
res.status(404).send({msg:"map details not found"});
}
});
}
});
}
else{
res.status(404).send({msg:"map details not found"});
}
});
}
});
}else if(files.poithumbnail !== undefined && files.contenturl === undefined){
var Map_ID = req.body.mapid2 ;
var POI_ID = req.body.poiid ;
var POI_Name = req.body.poiname ;
var POI_Description = req.body.poidesc ;
var POI_Type = req.body.poitype ;
var POI_Thumbnail_URL= '' ;
var POI_Status = req.body.poistatus ;
var POI_Content_Type = req.body.contenttype;
var POI_Content_URL = '' ;
var POI_Trigger_Area = req.body.triggerarea;
var Latitude = req.body.latitude ;
var Longitude = req.body.longitude ;
var newfilename0 = req.body.mapaudio;
var newfilename1 = req.body.mapaudio;
var securelink = req.hostname == 'localhost' || req.hostname == '127.0.0.1' ? 'http' : 'https';
var urlpath = securelink + '://' + req.get('host');
var filename0 = files.poithumbnail[0].filename;
var filenamepath0 = `public/Database/MapPoiContent/${Map_ID}/` + filename0;
var newfilenamepath0 = `public/Database/MapPoiContent/${Map_ID}/POI/` + newfilename0 + ".png";
var fullnewfilenamepath0 = urlpath +`/Database/MapPoiContent/${Map_ID}/POI/` + newfilename0 + ".png";
// var image = await sharp(req.file.buffer).resize({ width: 400, height:400 })// Resize if you want
// .jpeg({
// quality: 40,
// }).toFile("public/Walks/" + newfilename + "_Pavan.jpeg")
// .catch( err => { console.log('error: ', err) })
POI_Thumbnail_URL= fullnewfilenamepath0;
fs.rename(filenamepath0,newfilenamepath0, function(err) {
if (err) {
console.log('ERROR: ' + err);
}
else{
rpgwalk_data.findOne({Map_ID : Map_ID , 'POI_List.POI_ID': POI_ID}).then((result)=>{
if(result){
var poidata = result.POI_List;
var NewPOI_number;
for(var i=0;i<poidata.length;i++){
if(POI_ID == poidata[i].POI_ID){
console.log(POI_ID,poidata[i].POI_ID);
NewPOI_number = poidata[i].POI_Number;
POI_Content_URL = poidata[i].POI_Content_URL;
}
}
rpgwalk_data.findOneAndUpdate({ Map_ID : Map_ID , 'POI_List.POI_ID': POI_ID },{$set:{
["POI_List."+NewPOI_number+".POI_Name"] :POI_Name ,
["POI_List."+NewPOI_number+".POI_Description"] :POI_Description ,
["POI_List."+NewPOI_number+".POI_Type"] :POI_Type ,
["POI_List."+NewPOI_number+".POI_Thumbnail_URL"]:POI_Thumbnail_URL,
["POI_List."+NewPOI_number+".POI_Status"] :POI_Status ,
["POI_List."+NewPOI_number+".POI_Content_Type"] :POI_Content_Type ,
["POI_List."+NewPOI_number+".POI_Content_URL"] :POI_Content_URL ,
["POI_List."+NewPOI_number+".POI_Trigger_Area"] :POI_Trigger_Area ,
["POI_List."+NewPOI_number+".Latitude"] :Latitude ,
["POI_List."+NewPOI_number+".Longitude"] :Longitude ,
}},{new:true}).then((result) => {
if(result)
{
console.log("no file",result)
var initfilename = `/Database/MapPoiContent/${Map_ID}/MapDetails/0.txt`;
var initfilepath = './public' + initfilename;
var strresult = JSON.stringify(result);
fs.writeFile(initfilepath, strresult, function (err) {
if (err){
res.status(404).send({msg:"map info file updation failed"});
}
else{
var securelink = req.hostname == 'localhost' || req.hostname == '127.0.0.1' ? 'http' : 'https';
var urlpath = securelink + '://' + req.get('host');
var fileurl = urlpath + initfilename;
var ZipFileurl = urlpath + "/Database.zip"
zipper.sync.zip(`./public/Database/MapPoiContent/${Map_ID}`).compress().save(`./public/Database/MapPoiContent/${Map_ID}.zip`);
res.status(200).send({msg:"poi details updated",data:result});
}
});
}else{
res.status(404).send({msg:"poi detail not found"})
}
})
}else{
res.status(404).send({msg:"map detail not found"})
}
})
}
});
}else if(files.poithumbnail === undefined && files.contenturl !== undefined){
var Map_ID = req.body.mapid2 ;
var POI_ID = req.body.poiid ;
var POI_Name = req.body.poiname ;
var POI_Description = req.body.poidesc ;
var POI_Type = req.body.poitype ;
var POI_Thumbnail_URL= '' ;
var POI_Status = req.body.poistatus ;
var POI_Content_Type = req.body.contenttype;
var POI_Content_URL = '' ;
var POI_Trigger_Area = req.body.triggerarea;
var Latitude = req.body.latitude ;
var Longitude = req.body.longitude ;
var newfilename0 = req.body.mapaudio;
var newfilename1 = req.body.mapaudio;
var filename1 = files.contenturl[0].filename;
var securelink = req.hostname == 'localhost' || req.hostname == '127.0.0.1' ? 'http' : 'https';
var urlpath = securelink + '://' + req.get('host');
var filenamepath1 = `public/Database/MapPoiContent/${Map_ID}/` + filename1;
var newfilenamepath1 = `public/Database/MapPoiContent/${Map_ID}/Audio/` + newfilename1 + ".mp3";
var fullnewfilenamepath1 = urlpath + `/Database/MapPoiContent/${Map_ID}/Audio/` + newfilename1 + ".mp3";
POI_Content_URL = fullnewfilenamepath1;
fs.rename(filenamepath1,newfilenamepath1, function(err) {
if (err) {
console.log('ERROR: ' + err);
}
else{
rpgwalk_data.findOne({Map_ID : Map_ID , 'POI_List.POI_ID': POI_ID}).then((result)=>{
if(result){
var poidata = result.POI_List;
var NewPOI_number;
for(var i=0;i<poidata.length;i++){
if(POI_ID == poidata[i].POI_ID){
console.log(POI_ID,poidata[i].POI_ID);
NewPOI_number = poidata[i].POI_Number;
POI_Thumbnail_URL = poidata[i].POI_Thumbnail_URL;
}
}
rpgwalk_data.findOneAndUpdate({ Map_ID : Map_ID , 'POI_List.POI_ID': POI_ID },{$set:{
["POI_List."+NewPOI_number+".POI_Name"] :POI_Name ,
["POI_List."+NewPOI_number+".POI_Description"] :POI_Description ,
["POI_List."+NewPOI_number+".POI_Type"] :POI_Type ,
["POI_List."+NewPOI_number+".POI_Thumbnail_URL"]:POI_Thumbnail_URL,
["POI_List."+NewPOI_number+".POI_Status"] :POI_Status ,
["POI_List."+NewPOI_number+".POI_Content_Type"] :POI_Content_Type ,
["POI_List."+NewPOI_number+".POI_Content_URL"] :POI_Content_URL ,
["POI_List."+NewPOI_number+".POI_Trigger_Area"] :POI_Trigger_Area ,
["POI_List."+NewPOI_number+".Latitude"] :Latitude ,
["POI_List."+NewPOI_number+".Longitude"] :Longitude ,
}},{new:true}).then((result) => {
if(result)
{
console.log("no file",result)
var initfilename = `/Database/MapPoiContent/${Map_ID}/MapDetails/0.txt`;
var initfilepath = './public' + initfilename;
var strresult = JSON.stringify(result);
fs.writeFile(initfilepath, strresult, function (err) {
if (err){
res.status(404).send({msg:"map info file updation failed"});
}
else{
var securelink = req.hostname == 'localhost' || req.hostname == '127.0.0.1' ? 'http' : 'https';
var urlpath = securelink + '://' + req.get('host');
var fileurl = urlpath + initfilename;
var ZipFileurl = urlpath + "/Database.zip"
zipper.sync.zip(`./public/Database/MapPoiContent/${Map_ID}`).compress().save(`./public/Database/MapPoiContent/${Map_ID}.zip`);
res.status(200).send({msg:"poi details updated",data:result});
}
});
}else{
res.status(404).send({msg:"poi detail not found"})
}
})
}else{
res.status(404).send({msg:"map detail not found"})
}
})
}
});
}
else{
var Map_ID = req.body.mapid2 ;
var POI_ID = req.body.poiid ;
var POI_Name = req.body.poiname ;
var POI_Description = req.body.poidesc ;
var POI_Type = req.body.poitype ;
var POI_Thumbnail_URL= '' ;
var POI_Status = req.body.poistatus ;
var POI_Content_Type = req.body.contenttype;
var POI_Content_URL = '' ;
var POI_Trigger_Area = req.body.triggerarea;
var Latitude = req.body.latitude ;
var Longitude = req.body.longitude ;
rpgwalk_data.findOne({Map_ID : Map_ID , 'POI_List.POI_ID': POI_ID}).then((result)=>{
if(result){
var poidata = result.POI_List;
var NewPOI_number;
for(var i=0;i<poidata.length;i++){
if(POI_ID == poidata[i].POI_ID){
console.log(POI_ID,poidata[i].POI_ID);
NewPOI_number = poidata[i].POI_Number;
POI_Thumbnail_URL= poidata[i].POI_Thumbnail_URL;
POI_Content_URL = poidata[i].POI_Content_URL;
}
}
rpgwalk_data.findOneAndUpdate({ Map_ID : Map_ID , 'POI_List.POI_ID': POI_ID },{$set:{
["POI_List."+NewPOI_number+".POI_Name"] :POI_Name ,
["POI_List."+NewPOI_number+".POI_Description"] :POI_Description ,
["POI_List."+NewPOI_number+".POI_Type"] :POI_Type ,
["POI_List."+NewPOI_number+".POI_Thumbnail_URL"]:POI_Thumbnail_URL,
["POI_List."+NewPOI_number+".POI_Status"] :POI_Status ,
["POI_List."+NewPOI_number+".POI_Content_Type"] :POI_Content_Type ,
["POI_List."+NewPOI_number+".POI_Content_URL"] :POI_Content_URL ,
["POI_List."+NewPOI_number+".POI_Trigger_Area"] :POI_Trigger_Area ,
["POI_List."+NewPOI_number+".Latitude"] :Latitude ,
["POI_List."+NewPOI_number+".Longitude"] :Longitude ,
}},{new:true}).then((result) => {
if(result)
{
console.log("no file",result)
var initfilename = `/Database/MapPoiContent/${Map_ID}/MapDetails/0.txt`;
var initfilepath = './public' + initfilename;
var strresult = JSON.stringify(result);
fs.writeFile(initfilepath, strresult, function (err) {
if (err){
res.status(404).send({msg:"map info file updation failed"});
}
else{
var securelink = req.hostname == 'localhost' || req.hostname == '127.0.0.1' ? 'http' : 'https';
var urlpath = securelink + '://' + req.get('host');
var fileurl = urlpath + initfilename;
var ZipFileurl = urlpath + "/Database.zip"
zipper.sync.zip(`./public/Database/MapPoiContent/${Map_ID}`).compress().save(`./public/Database/MapPoiContent/${Map_ID}.zip`);
res.status(200).send({msg:"poi details updated",data:result});
}
});
}else{
res.status(404).send({msg:"poi detail not found"})
}
})
}else{
res.status(404).send({msg:"map detail not found"})
}
})
}
}
}
});
});
router.post('/rpggetpoidetail', async function(req,res){
var Map_ID = req.body.mapid;
var POI_ID = req.body.poiid;
await rpgwalk_data.findOne({Map_ID:Map_ID,"POI_List.POI_ID":POI_ID}).then((result)=>{
if(result){
for(let i=0;i<result.POI_List.length;i++){
if(result.POI_List[i].POI_ID == POI_ID){
var POI_Name = result.POI_List[i].POI_Name;
var POI_Description = result.POI_List[i].POI_Description;
var POI_Type = result.POI_List[i].POI_Type;
var POI_Thumbnail_URL = result.POI_List[i].POI_Thumbnail_URL;
var POI_Status = result.POI_List[i].POI_Status
var POI_Content_Type = result.POI_List[i].POI_Content_Type
var POI_Content_URL = result.POI_List[i].POI_Content_URL
var POI_Trigger_Area = result.POI_List[i].POI_Trigger_Area
var Latitude = result.POI_List[i].Latitude
var Longitude = result.POI_List[i].Longitude
res.status(200).send({code:200,msg:"Poi details",POI_Name,POI_Description,POI_Type,POI_Thumbnail_URL,POI_Status,POI_Content_Type,POI_Content_URL,POI_Trigger_Area,Latitude,Longitude})
}
}
}else{
res.status(404).send({code:404,msg:"No poi details found"})
}
})
})
router.post('/rpgremovewalktriviadetails',async function(req,res){
var Map_ID = req.body.mapid;
var Trivia_ID = req.body.triviaid;
rpgwalk_data.findOneAndRemove({ Map_ID : Map_ID,"Trivia_List.Trivia_ID": Trivia_ID }).then((result) => {
if(result)
{
res.status(200).send({msg:"map removed successfully"});
}else{
res.status(404).send({msg:"map info not found"});
}
});
})
router.post('/rpgaddupdatewalktriviadetails', async function(req,res){
var Map_ID = req.body.mapid;
var Trivia = req.body.trivia;
console.log(Trivia)
const query = {Map_ID : Map_ID };
const updateDocument = {
$set: { Trivia_List: Trivia }
};
await rpgwalk_data.findOneAndUpdate(query,updateDocument,{new:true}).then( async (result) => {
if(result)
{
res.status(200).send({msg:"Trivia updated",data:result.Trivia_List});
}
else{
res.status(404).send({msg:"map details not found"});
}
});
});
router.post('/getrpgpublishedwalkinfo',function(req,res){
var Map_ID = req.body.Map_ID;
rpgwalk_data.findOne({ Map_ID : Map_ID , Map_Status : "Published" }).then((result) => {
if(result)
{
var data = {
Map_Name :result.Map_Name ,
Map_Description :result.Map_Description ,
Map_Thumbnail_URL :result.Map_Thumbnail_URL ,
Map_Status :result.Map_Status ,
Map_Type :result.Map_Type ,
Map_Category :result.Map_Category[0] ,
Total_POI :result.Total_POI ,
Map_Startlongitude:result.Map_Startlongitude,
Map_Startlatitude :result.Map_Startlatitude ,
TotalWalkDistance :result.TotalWalkDistance,
Total_Trivia :result.Total_Trivia,
Trivia_List :result.Trivia_List
};
res.status(200).send({code:200,msg:"map info found",data:data});
}else{
res.status(404).send({code:404,msg:"map info not found"});
}
});
});
router.post('/removerpgpublishedwalk',function(req,res){
var Map_ID = req.body.Map_ID;
rimraf(`./public/Database/MapPoiContent/${Map_ID}`, function () { console.log("done"); })
rpgwalk_data.findOneAndRemove({ Map_ID : Map_ID }).then((result) => {
if(result)
{
res.status(200).send({msg:"map removed successfully"});
}else{
res.status(404).send({msg:"map info not found"});
}
});
});
router.post('/setrpgpublishedwalkstatus',function(req,res){
var Map_ID = req.body.Map_ID;
var Map_Status= req.body.Map_Status;
rpgwalk_data.findOneAndUpdate({ Map_ID : Map_ID },{$set:{ Map_Status : Map_Status }}).then((result) => {
if(result)
{
var data = {
Map_Name :result.Map_Name ,
Map_Description :result.Map_Description ,
Map_Thumbnail_URL :result.Map_Thumbnail_URL ,
Map_Status :result.Map_Status ,
Map_Type :result.Map_Type ,
Map_Category :result.Map_Category[0] ,
Total_POI :result.Total_POI ,
Map_Startlongitude:result.Map_Startlongitude,
Map_Startlatitude :result.Map_Startlatitude
};
res.status(200).send({msg:"map status updated",data:data});
}else{
res.status(404).send({msg:"map status updation failed"});
}
});
});
router.post('/setrpgpublishedwalktype',function(req,res){
var Map_ID = req.body.Map_ID;
var Map_Type= req.body.Map_Type;
rpgwalk_data.findOneAndUpdate({ Map_ID : Map_ID },{$set:{ Map_Type : Map_Type }}).then((result) => {
if(result)
{
var data = {
Map_Name :result.Map_Name ,
Map_Description :result.Map_Description ,
Map_Thumbnail_URL :result.Map_Thumbnail_URL ,
Map_Status :result.Map_Status ,
Map_Type :result.Map_Type ,
Map_Category :result.Map_Category[0] ,
Total_POI :result.Total_POI ,
Map_Startlongitude:result.Map_Startlongitude,
Map_Startlatitude :result.Map_Startlatitude
};
res.status(200).send({msg:"map type updated",data:data});
}else{
res.status(404).send({msg:"map type updation failed"});
}
});
});
router.get('/getallrpgpublishedwalkinfodata',function(req,res){
rpgwalk_data.find().then((result) => {
if(result)
{
var datas = [];
for(var i=0;i<result.length;i++){
var data = {
Map_ID :result[i].Map_ID ,
Map_Name :result[i].Map_Name ,
Map_Description :result[i].Map_Description ,
Map_Thumbnail_URL :result[i].Map_Thumbnail_URL ,
Map_Status :result[i].Map_Status ,
Map_Type :result[i].Map_Type ,
Map_Category :result[i].Map_Category[0] ,
Total_POI :result[i].Total_POI ,
Map_Startlongitude:result[i].Map_Startlongitude,
Map_Startlatitude :result[i].Map_Startlatitude ,
Map_Version :result[i].Map_Version ,
Map_Ratting :result[i].Map_Ratting
};
datas.push(data);
};
res.status(200).send({code:200,msg:"all map info found",data:datas});
}else{
res.status(404).send({code:404,msg:"all map info not found"});
}
});
});
router.get('/getallrpgpublishedwalkinfo',function(req,res){
var initfilename = '/Database/MapDetails.txt';
var initfilepath = './public' + initfilename;
rpgwalk_data.find().then((result) => {
if(result)
{
var strresult = JSON.stringify(result);
fs.writeFile(initfilepath, strresult, function (err) {
if (err){
res.status(404).send({code:404,msg:"map info file updation failed"});
}
else{
var securelink = req.hostname == 'localhost' || req.hostname == '127.0.0.1' ? 'http' : 'https';
var urlpath = securelink + '://' + req.get('host');
var fileurl = urlpath + initfilename;
var ZipFileurl = urlpath + "/Database.zip"
zipper.sync.zip("./public/Database/").compress().save("./public/Database.zip");
res.status(200).send({code:200,msg:"map info file updated",zipurl:ZipFileurl,mapurl:fileurl});
}
});
}else{
res.status(404).send({code:200,msg:"all map info not found"});
}
});
});
router.post('/getrpgpublishedwalkdetail',function(req,res){
var Map_ID = req.body.Map_ID;
rpgwalk_data.findOne({ Map_ID : Map_ID , Map_Status : "Published" }).then((result) => {
if(result)
{
res.status(200).send({code:200,msg:"map detail found",data:result});
}else{
res.status(404).send({code:404,msg:"map detail not found"});
}
});
});
router.post('/getrpgpublishedwalkdetails',function(req,res){
var Map_ID = req.body.Map_ID;
var initfilename = '/Walks/WalkInfoFiles/'+Map_ID+'_WalkDetails.txt';
var initfilepath = './public' + initfilename;
rpgwalk_data.findOne({ Map_ID : Map_ID , Map_Status : "Published" }).then((result) => {
if(result)
{
var strresult = JSON.stringify(result);
fs.writeFile(initfilepath, strresult, function (err) {
if (err){
res.status(404).send({code:404,msg:"map details file updation failed"});
}
else{
var securelink = req.hostname == 'localhost' || req.hostname == '127.0.0.1' ? 'http' : 'https';
var urlpath = securelink + '://' + req.get('host');
var fileurl = urlpath + initfilename;
res.status(200).send({code:200,msg:"map details file updated",data:fileurl});
}
});
}else{
res.status(404).send({code:404,msg:"map details not found"});
}
});
});
router.get('/getallrpgpublishedwalkdetails',function(req,res){
var initfilename = '/Walks/WalkInfoFiles/All_WalkDetails.txt';
var initfilepath = './public' + initfilename;
rpgwalk_data.find({ Map_Status : "Published" }).then((results) => {
if(results)
{
var strresult = JSON.stringify(results);
fs.writeFile(initfilepath, strresult, function (err) {
if (err){
res.status(404).send({code:404,msg:"map details file updation failed"});
}
else{
var securelink = req.hostname == 'localhost' || req.hostname == '127.0.0.1' ? 'http' : 'https';
var urlpath = securelink + '://' + req.get('host');
var fileurl = urlpath + initfilename;
res.status(200).send({code:200,msg:"map details file updated",data:fileurl});
}
});
}else{
res.status(404).send({code:404,msg:"map details not found"});
}
});
});
module.exports = router;