API/api.medcify.app/routes/api.js
2022-09-26 11:41:44 +05:30

4179 lines
111 KiB
JavaScript

const express = require('express');
var bodyparser = require('body-parser');
var Razorpay = require('razorpay');
var async = require('async');
var models = require('../models');
var multer = require('multer');
var sequelize = require('sequelize');
const {hashGenerate}=require('../helper/hashing');
const {hashValidator}= require('../helper/hashing');
const {authVerify}=require('../helper/authverify');
const {tokenGenerator}=require('../helper/token');
const http = require("http");
const { sign } = require('jsonwebtoken');
const QRCode = require("qrcode");
const crypto=require('crypto');
const FCM = require('fcm-node');
var base64 = require('base-64');
var assert = require('assert');
const {validateWebhookSignature} = require('razorpay/dist/utils/razorpay-utils')
//const admin = require('../config/firebase-config');
const { checkToken } = require('../auth/token_validation');
var app = express();
app.use(bodyparser.json());
var cors = require('cors');
app.use(express.static('public'));
app.use('/uploads', express.static('uploads'));
app.use(cors()) ;
app.get('/',async(req,res)=>
{
res.send("Welcome to Medcifys");
});
///// Start Push Notification
function notifyme(tokenId,title,body)
{
var serverKey = 'AAAAMPRIRf8:APA91bE75N3ncIfHOmypWgtATGIl1tb7GcjPWGt_HB7q-cIDPCUR5l3_m5bA5O5OHb5prJleFCRn6-7UEUAttGfc0HRCbXrOg3dbZtxsKoGZYIPaEB39H93FYrcbzOMr3F1MsMxdXRS5'; //put your server key here
const tokenId=tokenId
var fcm = new FCM(serverKey);
var message = { //this may vary according to the message type (single recipient, multicast, topic, et cetera)
to: tokenId,
notification: {
title:title,
body: body
},
data: { //you can send only notification or only data(or include both)
my_key: 'my value',
my_another_key: 'my another value'
}
}
fcm.send(message, function(err, response){
if (err) {
console.log(err)
} else {
console.log("Successfully sent with response: ", response)
}
})
}
///// End Push Notification */
///Start Webhook
//POST SUBSCRIPTION ADD
app.post('/addSubscription',authVerify,async(req,res)=>{
var enddate=new Date(new Date().getTime()+(req.body.validity*24*60*60*1000));
var billStart=Date.now();
var startNo=req.body.id;
var Medicify="MED";
var billNumber=Medicify+billStart+startNo;
const data=
{
storeId:req.body.storeId,
billNumber:billNumber,
planId:req.body.planId,
amount:req.body.amount,
validity:req.body.validity,
paymentType:1,//online
startDate:new Date(),
endDate:enddate,
razorpayOrderId:req.body.razorpayOrderId,
razorpayPaymentId:req.body.razorpayPaymentId,
razorpaySignature:req.body.razorpaySignature,
createdBy:req.body.createdBy,
status:req.body.status,
createdAt:Date.now()
}
const storeData=
{
storeId:req.body.id,
planId:req.body.planId,
planType:2,
planValidity:req.body.validity,
planStatus:1,//active
startDate:new Date(),
endDate:enddate,
}
var subscritption=await models.subscription.create(data);
if(subscritption){
models.store.update(storeData,{where:{id:req.body.storeId}}).then(ress=>{
console.log(ress);
res.status(201).json({
Code:"1",
Message:"Success",
Data: ress
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"Something went wrong",
Post: error
});
})
}
});
//GET SUBSCRIPTION DETAILS
//GET RAZORPAY DETAIL
app.get('/settings',authVerify,async(req,res)=>{
await models.settings.findAll({where:{status:1},
attributes: [`id`, `razor_key`, `razor_secretkey`]
})
.then(result=>{
var razor_key=result[0]['razor_key'];
var razor_secretkey=result[0]['razor_secretkey'];
res.status(201).json({
Code:"1",
Message:"Razorpay List",
Key: razor_key,
secretKey: razor_secretkey
});
}).catch(error=>{console.log(error);
res.status(500).json({
Code:"0",
Message:"Something went wrong"
});
})
});
var deviceAccessCheck="This mobile number is register on another device please check";
//USER START
//1.getotp
app.post('/getOtp',async(requ,res)=>{
var mob =requ.body.mobile;
var ccode =91;
var mobwithccode = ccode + mob;
await models.store.findAll({where:{contactNumber:requ.body.mobile},
attributes: [`id`, `storeName`, `storeUrl`, `ownerName`, `contactNumber`, `whatsAppNumber`, `address1`,
`address2`, `pincode`, `location`, `storeImage`, `openingTime`, `closingTime`, `features`, `disclaimer`, `status`, `otp`, `verifyOtp`, `createdBy`, `updatedBy`, `createdAt`, `updatedAt`]
}).then(result=>{
if(result.length > 0)
{
var OTP=Math.floor(100000 + Math.random() * 900000);
// Google verification
if (mob == "9633468236") OTP = "515085";
const url = "http://sms.dotwings.net/api/smsapi?key=6ca7240e6b85c4dee6c2fa38e947c220&route=4&sender=DOTWIN&number="+mobwithccode+"&sms="+OTP+" is your One Time Password (OTP) - DOTWINGS.&templateid=1707165087062220072";
http.get(url, function(response) {
if(response.statusCode==200)
{
console.log("test");
var data={otp:OTP,status:0,verifyOtp:0}
models.store.update(data,{where:{contactNumber:requ.body.mobile}}).then(upotp=>{
console.log("test1");
var response_code="1";
var alertinfo="OTP sent successfully";
res.send(JSON.stringify({ "code":response_code,"message":alertinfo}));
});
}
});
}
else
{
let data=
{
contactNumber: requ.body.mobile
}
models.store.create(data).then(newres=>{
var OTP=Math.floor(100000 + Math.random() * 900000)
const url = "http://sms.dotwings.net/api/smsapi?key=960a0d015c1ab50eb9e57bf09a1027e2&route=4&sender=OPENCL&number="+mob+"&sms="+OTP+" is the OTP for Open Close App.&templateid=1207164448608913709";
http.get(url, function(response) {
if(response.statusCode==200)
{
var datan={otp:OTP,status:0,verifyOtp:0}
models.store.update(datan,{where:{contactNumber:requ.body.mobile}}).then(upotp=>{
var response_code="1";
var alertinfo="OTP sent successfully";
res.send(JSON.stringify({ "code":response_code,"message":alertinfo}));
});
}
});
})
}
})
});
//2.verifyotp
app.post('/verifyOtp',async(requ,rese)=>
{
let bufferObjmob = Buffer.from(requ.body.mobile, "base64");
let mobile = bufferObjmob.toString("utf8");
let bufferObjotp = Buffer.from(requ.body.otp, "base64");
let otp = bufferObjotp.toString("utf8");
await models.store.findAll({where:{contactNumber:mobile},
attributes: [`id`, `storeName`, `storeUrl`,`otp`]
}).then(results=>{
if(results.length>0)
{
var storeId=results[0]["id"];
// var ccode=results[0]["countryCode"];
var ex_otp=results[0]["otp"];
var storeUrl=results[0]["storeUrl"];
// var mobwithccode = ccode + mobile;
if(storeUrl!=null){
var already_store=true;
}
else
{
var already_store=false;
}
if(ex_otp==otp){
let data={
status: 1,
verifyOtp:1,
deviceId:requ.body.deviceId
}
models.store.update(data,{where:{id:storeId}}).then(
upresult=>{
if(upresult.length > 0 )
{
var response_code="2";
var alertinfo="Otp verified";
const jsonwebtoken= sign({mobile:requ.body.mobile,storeId:storeId,deviceId:requ.body.deviceId},process.env.JWT_KEY);
if(jsonwebtoken!=""){
rese.send(JSON.stringify({ "code":response_code,"message":alertinfo,"storeId": storeId,"storeStatus":already_store,"token":jsonwebtoken}));
}
}
}
)
}
else
{
var response_code="3";
var alertinfo="Otp not matched";
rese.send(JSON.stringify({ "code":response_code,"message":alertinfo,"storeId": storeId}));
}
}
})
});
//2.verifyotp
app.post('/checkStoreExist',async(requ,rese)=>{
await models.store.findAll({where:{contactNumber:requ.body.mobile},
attributes: [`id`, `storeName`, `storeUrl`, `ownerName`, `contactNumber`, `whatsAppNumber`, `address1`,
`address2`, `pincode`, `location`, `storeImage`, `openingTime`, `closingTime`, `features`, `disclaimer`, `status`, `otp`, `verifyOtp`, `createdBy`, `updatedBy`, `createdAt`, `updatedAt`]
}).then(results=>{
if(results.length>0)
{
// console.log(">o");
var storeId=results[0]["id"];
var storeUrl=results[0]["storeUrl"];
if(storeUrl!=null){
var already_store=true;
}
else
{
var already_store=false;
}
var response_code="1";
var alertinfo="Store Registered..";
rese.send(JSON.stringify({ "code":response_code,"message":alertinfo,"storeId": storeId,"storeStatus":already_store}));
}
else
{
var response_code="0";
var alertinfo="Mobile number not matched";
rese.send(JSON.stringify({ "code":response_code,"message":alertinfo,"storeId": storeId}));
}
})
});
//=================
//LOGIN
app.post('/login',async(req,res)=>
{
//SELECT DATA FROM EMPLOYEE TABLE WITH GIVEN EMAIL
const existingUser=await models.users.findOne({where:{username:req.body.username,userType:1},
attributes:[`id`, `userType`, `name`, `image`,`referralDoctor`, `email`, `contactNumber`, `whatsAppNumber`, `address1`, `address2`, `pincode`, `location`, `username`, `password`, `status`, `createdAt`, `updatedAt`]
});
if(!existingUser)
{
res.send({
Code:0,
Message:"Username does not exist...!"
});
}
else
{
//COMPARE GIVEN PASSWORD AND EISTING PASSWORD (IN DB)
const checkUser=await hashValidator(req.body.password,existingUser.password);
if(!checkUser){
res.send({
Code:0,
Message:"Invalid Password"
});
}
else
{
const token=await tokenGenerator(existingUser.username);
//res.cookie("jwt",token);
res.send({
JWTToken:token,
Code:1,
User:existingUser.name,
Id:existingUser.id,
profileImage:existingUser.image,
Message:"Login Successfully!"
});
}
}
});
//POST USER ADD
app.post('/addUser',authVerify,async(req,res)=>{
//GENERATE HASH PASSWORD FROM {hashGenerate} FUNCTION
const hashPassword=await hashGenerate(req.body.password);
const data=
{
userType:req.body.userType,
name:req.body.name,
referralDoctor:req.body.referralDoctor,
email:req.body.email,
contactNumber:req.body.contactNumber,
whatsAppNumber:req.body.whatsAppNumber,
address1:req.body.address1,
address2:req.body.address2,
pincode:req.body.pincode,
location:req.body.location,
username:req.body.username,
password:hashPassword,
status:req.body.status,
createdAt:Date.now()
}
await models.users.create(data).then(result=>{
res.status(201).json({
Code:"1",
Message:"User Created Successfully",
Data: result
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"Something went wrong",
Post: error
});
})
});
//GET USER LIST
app.get('/users',authVerify,async(req,res)=>{
await models.users.findAll({where:{status:1,userType:2},
attributes: [`id`, `userType`, `name`, `referralDoctor`, `email`, `contactNumber`, `whatsAppNumber`, `address1`, `address2`, `pincode`, `location`, `username`, `password`, `status`, `createdAt`, `updatedAt`]
})
.then(result=>{
res.status(201).json({
Code:"1",
Message:"Users List",
Data: result
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"Something went wrong"
});
})
});
//PUT USER VIEW
app.get('/viewUser/(:userId)',authVerify,async(req,res)=>{
await models.users.findByPk(req.params.userId,{
attributes: [`id`, ["concat('"+process.env.IMAGE_URL+"profile/', image)" , 'image'],`userType`, `name`, `referralDoctor`, `email`, `contactNumber`, `whatsAppNumber`, `address1`, `address2`, `pincode`, `location`, `username`, `password`, `status`, `createdAt`, `updatedAt`]
}).then(result=>{
res.status(201).json({
Code:"1",
Message:"Success",
Data: result
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"Something went wrong"
});
})
});
///PUT USER - UPDATE
const files=multer.diskStorage({
destination:(req,file,cb)=>{
cb(null,"uploads/profile");
},
filename: (req,file,cb)=>
{
cb(null,"st-"+Date.now()+ file.originalname);
}
});
const uploadimg=multer({
storage:files
});
app.put('/updateUser/(:userId)',uploadimg.single('image'),async(req,res)=>{
const userid=req.params.userId;
console.log(req.body.passwords);
if(req.body.passwords!="null")
{
console.log("if");
var curpass=await hashGenerate(req.body.passwords);
}
else
{
console.log("else");
var curpass= req.body.oldpassword;
}
console.log(curpass);
if(req.body.image==undefined)
{
var currentimg=req.file.filename;
}
else
{
var currentimg=req.body.image;
}
const data=
{
userType:req.body.userType,
name:req.body.name,
referralDoctor:req.body.referralDoctor,
email:req.body.email,
contactNumber:req.body.contactNumber,
whatsAppNumber:req.body.whatsAppNumber,
address1:req.body.address1,
address2:req.body.address2,
pincode:req.body.pincode,
location:req.body.location,
username:req.body.username,
password:curpass,
image:currentimg,
status:req.body.status,
updatedAt:Date.now()
}
await models.users.update(data,{where:{id:userid}}).then(result=>{
res.status(201).json({
Code:"1",
Message:"Successfully Updated",
Data: result
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"Something went wrong"
});
})
});
///PUT USER - DELETE
app.put('/deleteUser/(:userId)',authVerify,async(req,res)=>{
const userid=req.params.userId;
const data=
{
status:0
}
await models.users.update(data,{where:{id:userid}}).then(result=>{
res.status(201).json({
Message:"Successfully Deleted",
});
}).catch(error=>{
res.status(500).json({
Message:"Something went wrong"
});
})
});
//MEDICINES START
//POST MEDICINES ADD
//MULTER FOR UPLOAD IMAGE
const medicine=multer.diskStorage({
destination:(req,file,cb)=>{
cb(null,"uploads/medicine");//call backsrc\assets\uploads
},
filename: (req,file,cb)=>
{
cb(null,"md-"+Date.now()+file.originalname);
}
});
const imageFileFilter=(req,file,cbe)=>{
if(!file.originalname.match(/\.(jpg|jpeg|png|gif)$/)){
return cbe(new Error('You can upload only images'),false);
}
cb(null,true)
}
const medicineUploaded=multer({
storage:medicine
});
//MULTER FOR UPLOAD IMAGE
app.post('/addMedicines',medicineUploaded.single('imageps'),authVerify,async(req,res)=>{
//console.log(req.file.filename)
//GENERATE HASH PASSWORD FROM {hashGenerate} FUNCTION
const data=
{
name:req.body.name,
companyId:req.body.companyId,
storeId:0,
amount:req.body.amount,
quantity:req.body.quantity,
image:req.file.filename,
discount:req.body.discount,
howWorks:req.body.howWorks,
directionOfUse:req.body.directionOfUse,
prescription:req.body.prescription,
status:1,
createdBy:req.body.createdBy,
createdAt:Date.now(),
medicineuses: req.body.isComingFromPostman?req.body.medicineuses:JSON.parse(req.body.medicineuses),
medicinesideeffects:req.body.isComingFromPostman?req.body.medicinesideeffects:JSON.parse(req.body.medicinesideeffects)
}
console.log("data",data);
await models.medicines.create(data,{include:[
//insert into multiple table
{model: models.medicinesideeffects},
{model: models.medicineuses}
]}
).then(result=>{
console.log(result);
res.status(201).json({
Code:"1",
Message:"Medicine Created Successfully",
Data: result
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"Something went wrong",
Post: error
});
})
});
//GET MEDICINES LIST
app.get('/medicines',authVerify,async(req,res)=>{
await models.medicines.findAll({where:{status:1},order: [ ['name', 'ASC']],
attributes: [ `id`, `name`,'companyId','storeId', `quantity`, `amount`, `discount`,["concat('"+process.env.IMAGE_URL+"medicine/', image)" , 'image'],'howWorks','directionOfUse','prescription','status'],
include:[
{model: models.store,attributes: ['storeName']},
{model: models.company,attributes:[['name','companyName']]},
//{model: models.medicineuses,attributes: ['name','medicineId','status']},
//{model: models.medicinesideeffects,attributes: ['name','medicineId','status']},
]
})
.then(result=>{
res.status(201).json({
Code:"1",
Message:"Medicine List",
Data: result
});
}).catch(error=>{
console.log(error);
})
});
//PUT MEDICINES VIEW
app.put('/viewMedicine/(:medicineId)',authVerify,async(req,res)=>{
await models.medicines.findByPk(req.params.medicineId,{
attributes: [ `id`, `name`,'companyId','storeId', `quantity`, `amount`, `discount`,["concat('"+process.env.IMAGE_URL+"medicine/', image)" , 'image'],'howWorks','directionOfUse','prescription','status'],
include: [
{model: models.company,attributes: [['name','companyName']]},
{model: models.medicineuses,attributes: [['name','uses']]},
{model: models.medicinesideeffects,attributes: [['name','sideEffects']]}
]}).then(result=>{
res.status(201).json({
Code:"1",
Message:"Success",
Data: result
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"Something went wrong"
});
})
});
///PUT MEDICINES - UPDATE
app.put('/updateMedicine/(:medicineId)',medicineUploaded.single('imagepa'),authVerify,async(req,res)=>{
const mid=req.params.medicineId;
models.medicineuses.destroy({where:{medicineId:mid}});
models.medicinesideeffects.destroy({where:{medicineId:mid}});
models.medicineuses.bulkCreate(req.body.medicineuses);
models.medicinesideeffects.bulkCreate(req.body.medicinesideeffects);
await models.medicines.findAll({where:{id:mid},attributes:['image']}).then(result1=>{
if(result1.length>0)
{
var medicineImage=result1[0]["image"];
}
console.log(req.body.imagepa);
console.log(req.file.filename);
if(req.body.imagepa==undefined)
{
var currentimg=req.file.filename;
}
else
{
var currentimg=medicineImage;
}
data=
{
name:req.body.name,
companyId:req.body.companyId,
storeId:req.body.storeId,
storeId:req.body.storeId,
amount:req.body.amount,
discount:req.body.discount,
quantity:req.body.quantity,
image:currentimg,
howWorks:req.body.howWorks,
directionOfUse:req.body.directionOfUse,
prescription:req.body.prescription,
status:req.body.status,
createdBy:req.body.createdBy,
createdAt:Date.now()
}
models.medicines.update(data,{where:{id:mid}}).then(result=>{
res.status(201).json({
Code:"1",
Message:"Successfully Updated",
Data: result
});
})
})
.catch(error=>{
res.status(500).json({
Code:"0",
Message:"Something went wrong"
});
})
});
//PUT MEDICINES - DELETE
app.put('/deleteMedicine/(:medicineId)',authVerify,async(req,res)=>{
const mid=req.params.medicineId;
const data=
{
status:0
}
await models.medicineuses.update({status:0},{where:{medicineId:mid}});
await models.medicinesideeffects.update({status:0},{where:{medicineId:mid}});
await models.medicines.update(data,{where:{id:mid}}).then(result=>{
res.status(201).json({
Code:"1",
Message:"Successfully Deleted",
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"Something went wrong"
});
})
});
//COMPANY START
//POST COMPANY ADD
app.post('/addCompany',authVerify,async(req,res)=>{
const data=
{
name:req.body.name,
status:1,
createdBy:req.body.createdBy,
createdAt:Date.now()
}
await models.company.create(data).then(result=>{
res.status(201).json({
Code:"1",
Message:"Company Created Successfully",
Data: result
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"Something went wrong",
Post: error
});
})
});
//GET COMPANY LIST
app.get('/companies',authVerify,async(req,res)=>{
await models.company.findAll({where:{status:1}}).then(result=>{
res.status(201).json({
Code:"1",
Message:"Company List",
Data: result
}
);
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"No Data"
});
})
});
//PUT COMPANY VIEW
app.put('/viewComapany/(:comId)',authVerify,async(req,res)=>{
await models.company.findByPk(req.params.comId).then(result=>{
res.status(201).json({
Code:"1",
Message:"Success",
Data: result
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"No Data"
});
})
});
///PUT COMPANY - UPDATE
app.put('/updateCompany/(:comId)',authVerify,async(req,res)=>{
const cid=req.params.comId;
const data=
{
name:req.body.name,
status:1,
createdBy:req.body.createdBy,
updatedAt:Date.now()
}
await models.company.update(data,{where:{id:cid}}).then(result=>{
res.status(201).json({
Code:"1",
Message:"Successfully Updated",
Data: result
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"No Data"
});
})
});
///PUT COMPANY - DELETE
app.put('/deleteCompany/(:comId)',authVerify,async(req,res)=>{
const cid=req.params.comId;
const data=
{
status:0
}
await models.company.update(data,{where:{id:cid}}).then(result=>{
res.status(201).json({
Code:"1",
Message:"Successfully Deleted",
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"Something went wrong"
});
})
});
//COMPANY START
//{ model: models.store ,attributes: ['storeName','ownerName','contactNumber','address1','pincode','location']}
app.get('/subscriptionDetails',authVerify,async(req,res)=>{
await models.subscription.findAll(
{
where:{status:1},
include:
[
//model: models.store ,attributes: ['storeName']}
{model:models.store,attributes:['storeName']},
// {model:models.users,attributes:[['name','username'],'email']},
{model:models.plan,attributes:[['name','planName']]}
]
}).then(result=>{
res.status(201).json({
Code:"1",
Message:"Subscription Details",
Data: result
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"Something went wrong"
});
})
});
//PUT SUBSCRIPTION VIEW
app.put('/viewSubscription/(:subId)',authVerify,async(req,res)=>{
await models.subscription.findByPk(req.params.subId).then(result=>{
res.status(201).json({
Code:"1",
Message:"Success",
Data: result
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"Something went wrong"
});
})
});
//PUT SUBSCRIPTION EDIT
app.put('/updateSubscription/(:subId)',authVerify,async(req,res)=>{
const sid=req.params.subId;
const data=
{
storeId:req.body.storeId,
billNumber:req.body.billNumber,
planId:req.body.planId,
amount:req.body.amount,
validity:req.body.validity,
paymentType:req.body.paymentType,
startDate:req.body.startDate,
endDate:req.body.endDate,
updatedBy:req.body.createdBy,
status:req.body.status,
updatedAt:Date.now()
}
await models.subscription.update(data,{where:{id:sid}}).then(result=>{
res.status(201).json({
Code:"1",
Message:"Successfully Updated",
Data: result
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"Something went wrong"
});
})
});
//PUT SUBSCRIPTION DELETE
app.put('/deleteSubscription/(:subId)',authVerify,async(req,res)=>{
const sid=req.params.subId;
const data=
{
status:0
}
await models.subscription.update(data,{where:{id:sid}}).then(result=>{
res.status(201).json({
code:"1",
Message:"Successfully Deleted"
});
}).catch(error=>{
res.status(500).json({
code:"0",
Message:"Something went wrong"
});
})
});
//POST ORDER-PROCESS ADD
app.post('/addOrderProcess',authVerify,async(req,res)=>{
const data=
{
name:req.body.name,
status:req.body.status,
createdBy:req.body.status,
createdAt:Date.now()
}
await models.orderProcess.create(data).then(result=>{
res.status(201).json({
code:"1",
Message:"Successfully Added"
});
}).catch(result=>{
res.status(500).json({
code:"0",
Message:"Something went wrong"
});
})
});
//GET ORDER-PROCESS LIST
app.get('/orderProcess',authVerify,async(req,res)=>{
await models.orderProcess.findAll({where:{status:1},attributes:[ `id`, `name`]}).then(result=>{
res.status(201).json({
code:"1",
Message:"Order Process List",
Data:result
});
})
.catch(error=>{
res.status(500).json({
code:"0",
Message:"Something went wrong"
});
})
});
//PUT ORDER-PROCESS VIEW
app.put('/viewOrderProcess/(:opid)',authVerify,async(req,res)=>{
await models.orderProcess.findByPk(req.params.opid).then(result=>{
res.status(201).json({
code:"1",
Data:result
});
})
.catch(error=>{
res.status(500).json({
code:"0",
Message:"Something went wrong"
});
})
});
//PUT ORDER-PROCESS EDIT
app.put('/editProcessOrder/(:opid)',authVerify,async(req,res)=>{
const oid=req.params.opid;
const data=
{
name:req.body.name,
status:req.body.status,
updatedBy:req.body.status,
updatedAt:Date.now()
}
await models.orderProcess.update(data,{where:{id:oid}}).then(result=>{
res.status(201).json({
code:"1",
Data:"Succesfully Updated"
});
})
.catch(error=>{
res.status(500).json({
code:"0",
Message:"Something went wrong"
});
})
});
//PUT ORDER-PROCESS DELETE
app.put('/deleteOrderProcess/(:opid)',authVerify,async(req,res)=>{
const oid=req.params.opid;
const data=
{
status:0
}
await models.orderProcess.update(data,{where:{id:oid}}).then(result=>{
res.status(201).json({
code:"1",
Message:"Succesfully Deleted"
});
})
.catch(error=>{
res.status(500).json({
code:"0",
Message:"Something went wrong"
});
})
});
//POST ORDER-PROCESS-HISTORY ADD
app.post('/addOrderProcessHistory',authVerify,async(req,res)=>{
data=
{
orderId:req.body.orderId,
statusDate:req.body.statusDate,
processStatus:req.body.processStatus,
status:req.body.status,
createdBy:req.body.createdBy,
createdAt:Date.now()
}
await models.orderProcessHistory.create(data).then(result=>{
res.status(201).json({
code:"1",
Message:"Succesfully Added"
});
})
.catch(error=>{
res.status(500).json({
code:"0",
Message:"Something went wrong"
});
})
});
//GET ORDER-PROCESS-HISTORY LIST
app.get('/orderHistoryProcess',authVerify,async(req,res)=>{
await models.orderProcessHistory.findAll({where:{status:1}}).then(result=>{
res.status(201).json({
code:"1",
Message:"Order Process History List",
Data:result
});
}).catch(error=>{
res.status(500).json({
code:"0",
Message:"Something went wrong",
});
})
});
//PUT ORDER-PROCESS-HISTORY VIEW
app.put('/orderHistoryProcessView/(:id)',authVerify,async(req,res)=>{
await models.orderProcessHistory.findByPk(req.params.id).then(result=>{
res.status(201).json({
code:"1",
Message:"View Order Process History",
Data:result
});
}).catch(error=>{
res.status(500).json({
code:"0",
Message:"Something went wrong",
});
})
});
//PUT ORDER-PROCESS-HISTORY EDIT
app.put('/editOrderProcessHistory/(:id)',authVerify,async(req,res)=>{
const phid=req.params.id;
data=
{
orderId:req.body.orderId,
statusDate:req.body.statusDate,
processStatus:req.body.processStatus,
status:req.body.status,
updatedBy:req.body.createdBy,
updatedAt:Date.now()
}
await models.orderProcessHistory.update(data,{where:{id:phid}}).then(result=>{
res.status(201).json({
code:"1",
Message:"Succesfully Updated"
});
})
.catch(error=>{
res.status(500).json({
code:"0",
Message:"Something went wrong"
});
})
});
//PUT ORDER-PROCESS-HISTORY DELETE
app.put('/deleteOrderProcessHistory/(:id)',authVerify,async(req,res)=>{
const phid=req.params.id;
data=
{
status:0
}
await models.orderProcessHistory.update(data,{where:{id:phid}}).then(result=>{
res.status(201).json({
code:"1",
Message:"Succesfully Deleted"
});
})
.catch(error=>{
res.status(500).json({
code:"0",
Message:"Something went wrong"
});
})
});
//POST CART ADD
app.post('/addCart',async(req,res)=>{
data=
{
userId:req.body.userId,
storeId:req.body.storeId,
medicineId:req.body.medicineId,
medAmt:req.body.medAmt,
pres_required:req.body.pres_required,
quantity:req.body.quantity,
amount:req.body.amount,
discount:req.body.discount,
total:req.body.total,
status:req.body.status,
createdBy:req.body.createdBy,
createdAt:Date.now()
}
console.log(data)
await models.cart.create(data).then(result=>{
res.status(201).json({
code:"1",
Message:"Succesfully Added"
});
})
.catch(error=>{
res.status(500).json({
code:"0",
Message:"Something went wrong"
});
})
});
//GET CART LIST
app.get('/cart',authVerify,async(req,res)=>{
await models.cart.findAll({where:{status:1}}).then(result=>{
res.status(201).json({
code:"1",
Message:"Cart List",
Data:result
});
}).catch(error=>{
res.status(500).json({
code:"0",
Message:"Something went wrong",
});
})
});
//PUT CART VIEW
app.put('/viewCart/(:cid)',authVerify,async(req,res)=>{
await models.cart.findByPk(req.params.cid).then(result=>{
res.status(201).json({
code:"1",
Message:"View Cart",
Data:result
});
}).catch(error=>{
res.status(500).json({
code:"0",
Message:"Something went wrong",
});
})
});
//PUT CART EDIT
app.put('/editCart/(:id)',authVerify,async(req,res)=>{
const cid=req.params.id;
data=
{
userId:req.body.userId,
medicineId:req.body.medicineId,
quantity:req.body.quantity,
amount:req.body.amount,
status:req.body.status,
createdBy:req.body.createdBy,
createdAt:Date.now()
}
await models.cart.update(data,{where:{id:cid}}).then(result=>{
res.status(201).json({
code:"1",
Message:"Succesfully Updated"
});
})
.catch(error=>{
res.status(500).json({
code:"0",
Message:"Something went wrong"
});
})
});
//PUT CART DELETE
app.put('/deleteCart/(:id)',async(req,res)=>{
const cid=req.params.id;
await models.cart.destroy({where:{id:cid}}).then(result=>{
res.status(201).json({
code:"1",
Message:"Succesfully Deleted"
});
})
.catch(error=>{
res.status(500).json({
code:"0",
Message:"Something went wrong"
});
})
});
//PROTECTED ROUTE
app.get('/protected', authVerify,(req,res)=>
{
res.send("Iam Protected");
});
//===========================================================
//************ROLE***************************************** */
//=============================================================
//1. List role
app.get('/roles',authVerify,async(req,res)=>{
await models.role.findAll({
where: {
status: 1
}}).then(result=>{
res.status(201).json({
Code:"1",
Message:"Role List",
Data: result
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"No Data"
});
});
});
//2. add role
app.post('/addRole',authVerify,async(req,res)=>{
var data={
name:req.body.name,
status:'1',
createdBy:req.body.createdBy,
}
await models.role.create(data).then(
result=>{ res.status(201).json({
Code:"1",
Message:"Successfully added",
Data:result
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"No Data"
});
})
});
//3.view role
app.get('/viewRole/(:roleId)',authVerify,async(req,res)=>{
await models.role.findByPk(req.params.roleId).then(
result=>{ res.status(201).json({
Code:"1",
Message:"Success",
Data:result
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"No Data"
});
})
});
//4.update role
app.put('/updateRole/(:roleId)', authVerify, async(req,res)=>{
var data={
name:req.body.name,
updatedBy:req.body.updatedBy,
}
await models.role.update(data,{where:{id:req.params.roleId}}).then(
result=>{ res.status(201).json({
Code:"1",
Message:"Successfully updated",
Data:result
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"No Data"
});
})
});
//5.delete role
app.put('/deleteRole/(:roleId)', authVerify,async(req,res)=>{
var data={
status:0,
updatedBy:req.body.updatedBy
}
await models.role.update(data,{where:{id:req.params.roleId}}).then(
result=>{ res.status(201).json({
Code:"1",
Message:"Successfully deleted",
Data:result
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"No Data"
});
})
});
//===========================================================
//************PLAN***************************************** */
//=============================================================
//1. List plan
app.get('/plan',authVerify,async(req,res)=>{
await models.plan.findAll({where:{status:1},
attributes:[ `id`, `name`, 'planFor',`type`, `amount`, `validity`, `status`, `createdBy`, `updatedBy`, `createdAt`, `updatedAt`]
}).then(result=>{
res.status(201).json({
Code:"1",
Message:"Plan List",
Data: result
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"No Data"
});
});
});
//2. add plan
app.post('/addPlan',authVerify,async(req,res)=>{
var data={
name:req.body.name,
type:req.body.type,
planFor:req.body.planFor,//1=Pharmacy 2=Hospital
amount:req.body.amount,
validity:req.body.validity,
status:'1',
createdBy:req.body.createdBy,
}
await models.plan.create(data).then(
result=>{ res.status(201).json({
Code:"1",
Message:"Successfully added",
Data:result
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"No Data"
});
})
});
//3.view plan
app.get('/viewPlan/(:planId)',authVerify,async(req,res)=>{
await models.plan.findByPk(req.params.planId,
{attributes:[ `id`, `name`,'planFor',`type`, `amount`, `validity`, `status`, `createdBy`, `updatedBy`, `createdAt`, `updatedAt`]}
).then(
result=>{ res.status(201).json({
Code:"1",
Message:"Success",
Data:result
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"No Data"
});
})
});
//4.update plan
app.put('/updatePlan/(:planId)',authVerify,async(req,res)=>{
var data={
name:req.body.name,
type:req.body.type,
planFor:req.body.planFor,//1=Pharmacy 2=Hospital
amount:req.body.amount,
validity:req.body.validity,
status:'1',
updatedBy:req.body.updatedBy,
}
await models.plan.update(data,{where:{id:req.params.planId}}).then(
result=>{ res.status(201).json({
Code:"1",
Message:"Successfully Updated",
Data:result
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"No Data"
});
})
});
//5.delete plan
app.put('/deletePlan/(:planId)',authVerify,async(req,res)=>{
var data={
status:0,
updatedBy:req.body.updatedBy
}
await models.plan.update(data,{where:{id:req.params.planId}}).then(
result=>{ res.status(201).json({
Code:"1",
Message:"Successfully deleted",
Data:result
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"No Data"
});
})
});
//===========================================================
//************STORES***************************************** */
//=============================================================
let date_ob = new Date();
let date = ("0" + date_ob.getDate()).slice(-2);
let month = ("0" + (date_ob.getMonth() + 1)).slice(-2);
let year = date_ob.getFullYear();
let hours = date_ob.getHours();
let minutes = date_ob.getMinutes();
let seconds = date_ob.getSeconds();
var currentdatetime=date + "-" + month + "-" + year + " " + hours + ":" + minutes + ":" + seconds;
//1. List store
app.get('/store',authVerify,async(req,res)=>{
await models.store.findAll({where:{status:1},
attributes: [`id`, `storeName`, `ownerName`, `contactNumber`, `whatsAppNumber`, `address1`, `address2`, `pincode`, `location`,["concat('"+process.env.IMAGE_URL+"store/', storeImage)" , 'storeImage'], `openingTime`, `closingTime`, `features`, `disclaimer`, `status`, `createdBy`, `updatedBy`, `createdAt`, `updatedAt`,'storeStatus','returnPolicy','pickup','wideDiscount','cashondelivery']
}).then(result=>{
res.status(201).json({
Code:"1",
Message:"Store List",
Data: result
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"No Data"
});
});
});
//2. add store
const filestorageengines=multer.diskStorage({
destination:(reqs,file,cb)=>{
cb(null,"uploads/store");
},
filename: (reqs,file,cb)=>
{
cb(null,"st-"+Date.now()+ file.originalname);
}
});
const uploaded=multer({
storage:filestorageengines
});
const cpUpload = uploaded.fields([{ name: 'storeImage'}, { name: 'storeDoc' }])
app.put('/addStore/(:storeId)',cpUpload,async(req,res)=>{
var storeimg=req.files['storeImage'][0].filename;
const stProof=req.files['storeDoc'][0].filename;
var domain=req.body.storeName;
var newString = domain.replace(/[^A-Z0-9]/ig, "");
var storename=newString.toLowerCase() //url
var storeURL=process.env.STORE_URL+"/"+storename;
models.plan.findAll({where:{status:1,type :1},attributes: [`id`, `name`]})
.then(planResult=>{
var planId=planResult[0]['id'];
console.log(planId)
var data=
{
storeName:req.body.storeName,
ownerName:req.body.ownerName,
whatsAppNumber:req.body.whatsAppNumber,
address1:req.body.address1,
address2:req.body.address2,
pincode:req.body.pincode,
location:req.body.location,
storeImage:storeimg,
storeDoc:stProof,
openingTime:req.body.openingTime,
closingTime:req.body.closingTime,
features:req.body.features,
storeType:req.body.storeType,
disclaimer:req.body.disclaimer,
storeStatus:1,
pickup:1,
enablePrescription:2,
wideDiscountType:1,
wideDiscount:0,
cashondelivery:1,
planId:planId,
planType:1,
planValidity:14,
planStatus:1,//1=active,2=deactive
trialStatus:2,//1=not used,2=used
startDate:Date.now(),
endDate:new Date( Date.now() + 14 * 24 * 60 * 60 * 1000),
status:'1',
createdBy:req.body.createdBy
}
models.store.findAll({where:{storeName : req.body.storeName},attributes: [`id`, `storeName`, `storeUrl`]})
.then(checkexist=>{
if(checkexist.length>0){
res.status(500).json({
Code:"0",
Message:"Store name already exist...! Please choose another name"
});
}
else
{
var Notifydata={
moduleName:"Store",
messageDetail:"New Store "+req.body.storeName+ " Added...! on "+ currentdatetime,
status:'1',
createdBy:req.body.createdBy,
}
QRCode.toDataURL(storeURL,(err, src) => {
var qrURL=src;
const codeda={
qrCode:qrURL
}
models.store.update(codeda,{where:{id:req.params.storeId}})
models.store.update(data,{where:{id:req.params.storeId}})
.then(
result=>{
//Find
models.store.findAll({where:{id : req.params.storeId},
attributes: [`openingTime`, `closingTime`]})
.then(getStoreDet=>{
//Find
var opentime=getStoreDet[0]["openingTime"];
var closetime=getStoreDet[0]["closingTime"];
var sun="Sunday";var mon="Monday";var tue="Tuesday";var wed="Wednesday";
var wed="Wednesday";var thu="Thursday";var fri="Friday";var sat="Saturday";
var dataChangeTime=[
{
storeId:req.params.storeId,
dayName: sun,
startTime: opentime,
endTime: closetime,
status: 1
},
{
storeId:req.params.storeId,
dayName: mon,
startTime: opentime,
endTime: closetime,
status: 1
},
{
storeId:req.params.storeId,
dayName: tue,
startTime: opentime,
endTime: closetime,
status: 1
},
{
storeId:req.params.storeId,
dayName: wed,
startTime: opentime,
endTime: closetime,
status: 1
},
{
storeId:req.params.storeId,
dayName: thu,
startTime: opentime,
endTime: closetime,
status: 1
},{
storeId:req.params.storeId,
dayName: fri,
startTime: opentime,
endTime: closetime,
status: 1
},{
storeId:req.params.storeId,
dayName: sat,
startTime: opentime,
endTime: closetime,
status: 1
}
]
//Create
models.storeTime.bulkCreate(dataChangeTime);
//Create
})
models.store.update({
storeUrl:storename
},{where:{id:req.params.storeId}});
models.notification.create(Notifydata)
res.status(201).json({
Code:"1",
Message:"Successfully Updated",
Data:result
});
})
.catch(error=>{
res.status(500).json({
Code:"0",
Message:"No Data"
});
})
});
}
});
})
});
//3.view store
app.get('/viewStore/(:storeId)',async(req,res)=>{
await models.store.findByPk(req.params.storeId,
{attributes: [`id`, `storeName`, `ownerName`, `contactNumber`, 'enablePrescription',`whatsAppNumber`, `address1`, `address2`, `pincode`, `location`, ["concat('"+process.env.IMAGE_URL+"store/', storeImage)" , 'storeImage'], ["concat('"+process.env.IMAGE_URL+"store/', storeDoc)" , 'storeDoc'],`openingTime`, `closingTime`, `features`, `disclaimer`,'storeType','storeStatus','returnPolicy','pickup','cashondelivery','wideDiscountType','wideDiscount','upi','planType','planValidity','startDate','endDate']
}).then(
result=>{ res.status(201).json({
Code:"1",
Message:"Success",
Data:result
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"No Data"
});
})
});
// //4.update store
// app.put('/updateStore/(:storeId)',uploaded.single('storeImage'),async(req,res)=>{
// var data={
// storeName:req.body.storeName,
// ownerName:req.body.ownerName,
// contactNumber:req.body.contactNumber,
// whatsAppNumber:req.body.whatsAppNumber,
// address1:req.body.address1,
// address2:req.body.address2,
// pincode:req.body.pincode,
// location:req.body.location,
// storeImage:req.file.filename,
// openingTime:req.body.openingTime,
// closingTime:req.body.closingTime,
// features:req.body.features,
// disclaimer:req.body.disclaimer,
// status:'1',
// updatedBy:req.body.updatedBy,
// }
// var Notifydata={
// moduleName:"Store",
// messageDetail:"Store "+req.body.storeName+ " Edited...! on "+currentdatetime,
// status:'1',
// updatedBy:req.body.updatedBy,
// }
// await models.store.update(data,{where:{id:req.params.storeId}}).then(
// result=>{
// models.notification.create(Notifydata)
// res.status(201).json({
// Code:"1",
// Message:"Success",
// Data:result
// });
// }).catch(error=>{
// res.status(500).json({
// Code:"0",
// Message:"No Data"
// });
// })
// });
//4.update store
app.put('/updateStore/(:storeId)',authVerify,async(req,res)=>{
var datas={
storeName:req.body.storeName,
ownerName:req.body.ownerName,
whatsAppNumber:req.body.whatsAppNumber,
address1:req.body.address1,
address2:req.body.address2,
pincode:req.body.pincode,
location:req.body.location,
openingTime:req.body.openingTime,
closingTime:req.body.closingTime,
features:req.body.features,
storeType:req.body.storeType,
disclaimer:req.body.disclaimer,
status:'1',
updatedBy:req.body.updatedBy,
}
console.log(datas);
var Notifydata={
moduleName:"Store",
messageDetail:"Store "+req.body.storeName+ " Edited...! on "+currentdatetime,
status:'1',
updatedBy:req.body.updatedBy,
}
await models.store.update(datas,{where:{id:req.params.storeId}}).then(
result=>{
models.notification.create(Notifydata)
res.status(201).json({
Code:"1",
Message:"Success",
Data:result
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"No Data"
});
})
});
//5.delete store
app.put('/deleteStore/(:storeId)',async(req,res)=>{
var data={
status:req.body.status,
updatedBy:req.body.updatedBy
}
await models.store.update(data,{where:{id:req.params.storeId}}).then(
result=>{ res.status(201).json({
Code:"1",
Message:"Successfully deleted",
Data:result
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"No Data"
});
})
});
//===========================================================
//************PRESCRIPTION***************************************** */
//=============================================================
//1. List prescription
app.get('/prescription',authVerify,async(req,res)=>{
await models.prescription.findAll( {attributes:['storeId','userId',["concat('"+process.env.IMAGE_URL+"prescription/', prescription)", 'prescription']]},{
include: [
{
model: models.users,attributes: [['name','userName']]
},
{
model: models.store,attributes: ['storeName']
}
]
}).then(result=>{
res.status(201).json({
Code:"1",
Message:"Successfully added",
Data:result
});
}).catch(error=>{
// console.log()
res.status(500).json({
Code:"0",
Message:"No Data"
});
})
});
//2. add prescription
const prescription=multer.diskStorage({
destination:(req,file,cb)=>{
cb(null,"uploads/prescription/");
},
filename: (req,file,cb)=>
{
cb(null,"st-"+Date.now()+ file.originalname);
}
});
const uploads=multer({
storage:prescription
});
app.post('/addPrescription',uploads.single('prescription'),async(req,res)=>{
var data={
storeId:req.body.storeId,
prescription:req.file.filename,
date:req.body.date,
userId:req.body.userId,
status:'1',
createdBy:req.body.createdBy,
}
await models.prescription.create(data).then(
result=>{ res.status(201).json({
Code:"1",
Message:"Successfully added",
Data:result
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"No Data"
});
})
});
//3.view prescription
app.get('/viewPrescription/(:prescId)',async(req,res)=>{
await models.prescription.findByPk(req.params.prescId).then(
result=>{ res.status(201).json({
Code:"1",
Message:"Success",
Data:result
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"No Data"
});
})
});
//4.update prescription
app.put('/updateprescription/(:prescId)',uploads.single('prescription'),async(req,res)=>{
var data={
date:req.body.date,
userId:req.body.userId,
storeId:req.body.storeId,
prescription:req.file.filename,
status:'1',
updatedBy:req.body.updatedBy,
}
await models.prescription.update(data,{where:{id:req.params.prescId}}).then(
result=>{ res.status(201).json({
Code:"1",
Message:"Success",
Data:result
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"No Data"
});
})
});
//5.delete prescription
app.put('/deletePrescription/(:prescId)',async(req,res)=>{
var data={
status:req.body.status,
updatedBy:req.body.updatedBy
}
await models.prescription.update(data,{where:{id:req.params.prescId}}).then(
result=>{ res.status(201).json({
Code:"1",
Message:"Successfully deleted",
Data:result
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"No Data"
});
})
});
//===========================================================
//************ORDER***************************************** */
//=============================================================
//1. List order
app.get('/orders', authVerify,async(req,res)=>{
await models.order.findAll({include: [{
model: models.orderDetails},{
model: models.store ,attributes: ['storeName']},{
model:models.users ,attributes: [['name', 'userName']]},{
model:models.orderProcess ,attributes: [['name','orderStatus']]}
]}).then(result=>{
res.status(201).json({
Code:"1",
Message:" Order List",
Data:result
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"No Data"
});
})
});
//2. add plan
app.post('/addOrder',async(req,res)=>{
var data={
userId:req.body.userId,
date:req.body.date,
storeId:req.body.storeId,
deviceId:req.body.deviceId,
quantity:req.body.quantity,
prescriptionId:req.body.prescriptionId,
amount:req.body.amount,
discount:req.body.discount,
deliveryfee:req.body.deliveryfee,
total:req.body.total,
orderProcessId:req.body.orderProcessId,
paymentMethod:req.body.paymentMethod,
createdBy:req.body.createdBy,
status:'1',
orderDetails:req.body.orderDetails
}
await models.order.create(data, {
include: [{
model: models.orderDetails
}]
}).then(result=>{
var Notifydata={
storeId:req.body.storeId,
messageDetail:"You get a new order from on "+ currentdatetime,
status:'1',
createdBy:req.body.createdBy
}
models.orderNotification.create(Notifydata)
res.status(201).json({
Code:"1",
Message:"Successfully added",
Data:result
});
//var fcmToken=models.store.findAll({where: {id:req.body.storeId},attributes:['deviceId']})
models.store.findAll({where: {id:req.body.storeId},attributes:['deviceId']}).then(fcmres=>{
var fcmToken=fcmres[0].deviceId;
//////////////
var serverKey = 'AAAAMPRIRf8:APA91bE75N3ncIfHOmypWgtATGIl1tb7GcjPWGt_HB7q-cIDPCUR5l3_m5bA5O5OHb5prJleFCRn6-7UEUAttGfc0HRCbXrOg3dbZtxsKoGZYIPaEB39H93FYrcbzOMr3F1MsMxdXRS5'; //put your server key here
const tokenId=fcmToken;
var fcm = new FCM(serverKey);
var message = { //this may vary according to the message type (single recipient, multicast, topic, et cetera)
to: tokenId,
notification: {
title:"New Order :)",
body: "You got a new order for ₹ "+req.body.total
},
data: { //you can send only notification or only data(or include both)
my_key: 'my value',
my_another_key: 'my another value'
}
}
fcm.send(message, function(err, response){
if (err) {
console.log(err)
} else {
console.log("Successfully sent with response: ", response)
}
})
/////////////////
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"No Data"
});
})
//console.log('dsdsdsds',fcmToken);
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"No Data"
});
})
});
//1. List order
app.get('/viewOrders/(:orderId)', authVerify,async(req,res)=>{
await models.order.findByPk(req.params.orderId,{ include: [
{
model: models.orderDetails,
attributes:['orderId','medicineId','quantity','amount','discount','total'],
include: { model: models.medicines, attributes:[['name','medicineName']] }
},
{ model: models.store ,attributes: ['storeName','ownerName','contactNumber','address1','pincode','location']},
{ model:models.users ,attributes: [['name', 'userName'],'referralDoctor','email','contactNumber','address1','pincode','location']},
{model:models.orderProcess ,attributes: [['name','orderStatus']]}
]
},{attributes:['amount','discount','total']}).then(result=>{
res.status(201).json({
Code:"1",
Message:" Order List",
Data:result
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"No Data"
});
})
});
//order status
//1. List order
app.put('/changeOrderStatus/(:orderId)', authVerify,async(req,res)=>{
var data={
orderProcessId:req.body.orderProcessId,
}
await models.order.update(data,{where:{id:req.params.orderId}}).then(
result=>{ res.status(201).json({
Code:"1",
Message:"Successfully Updated",
Data:result
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"Something went wrong"
});
})
});
//count users
app.get('/userCount', authVerify,async(req,res)=>{
await models.users.findAll({where: {status:1,userType:2},attributes:['id']}).then(result=>{
res.status(201).json({
Code:"1",
Message:" User Count",
Data:result.length
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"No Data"
});
})
});
//count store
app.get('/storeCount', authVerify,async(req,res)=>{
await models.store.findAll({where: {status:1},attributes:['id']}).then(result=>{
res.status(201).json({
Code:"1",
Message:" Store Count",
Data:result.length
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"No Data"
});
})
});
//count company
app.get('/companyCount', authVerify,async(req,res)=>{
await models.company.findAll({where: {status:1},attributes:['id']}).then(result=>{
res.status(201).json({
Code:"1",
Message:" Company Count",
Data:result.length
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"No Data"
});
})
});
//count medicine
app.get('/medicineCount', authVerify,async(req,res)=>{
await models.medicines.findAll({where: {status:1},attributes:['id']}).then(result=>{
res.status(201).json({
Code:"1",
Message:" Medicine Count",
Data:result.length
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"No Data"
});
})
});
//count order
app.get('/orderCount', authVerify,async(req,res)=>{
await models.order.findAll({where: {status:1},attributes:['id']}).then(result=>{
res.status(201).json({
Code:"1",
Message:" Order Count",
Data:result.length
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"No Data"
});
})
});
//order details inside graph
app.get('/orderGraph', authVerify,async(req,res)=>{
await models.order.findAll({where:{status:1},
attributes: [
/* add other attributes you may need from your table */
[sequelize.fn('DATE_FORMAT', sequelize.col('date'),"%d-%m-%Y"), 'date'],
[ sequelize.fn('count', '*'), 'count'],
],
group: [sequelize.fn('date', sequelize.col('date')), 'date'],
order:[
["date","DESC"]
],
limit:7
}).then(result=>{
res.status(201).json({
Code:"1",
Message:" Order Graph",
Data:result
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"No Data"
});
})
});
//notofications
app.get('/getNotification', authVerify,async(req,res)=>{
await models.notification.findAll({where:{status:1}
}).then(result=>{
res.status(201).json({
Code:"1",
Message:" Notification Info",
Data:result
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"No Data"
});
})
});
//viewd notifications
app.put('/viewednotification', authVerify,async(req,res)=>{
var data={
status:0,
}
await models.notification.update(data,{where:{status:1}}).then(
result=>{ res.status(201).json({
Code:"1",
Message:"Successfully Updated",
Data:result
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"Something went wrong"
});
})
});
app.get('/subscriptionGraph',authVerify,async(req,res)=>{
await models.subscription.findAll({where:{status:1},
attributes: [
/* add other attributes you may need from your table */
[sequelize.fn('DATE_FORMAT', sequelize.col('startDate'),"%d-%m-%Y"), 'startDate'],
[ sequelize.fn('count', '*'), 'count'],
],
group: [sequelize.fn('date', sequelize.col('startDate')), 'startDate'],
order:[
["startDate","DESC"]
],
limit:7
}).then(result=>{
res.status(201).json({
Code:"1",
Message:" Order Graph",
Data:result
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"No Data"
});
})
});
app.get('/storeGraph',authVerify,async(req,res)=>{
await models.store.findAll({where:{status:1},
attributes: [
/* add other attributes you may need from your table */
[sequelize.fn('DATE_FORMAT', sequelize.col('createdAt'),"%d-%m-%Y"), 'date'],
[ sequelize.fn('count', '*'), 'count'],
],
group: [sequelize.fn('date', sequelize.col('createdAt')), 'date'],
order:[
["createdAt","DESC"]
],
limit:7
}).then(result=>{
res.status(201).json({
Code:"1",
Message:" Order Graph",
Data:result
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"No Data"
});
})
});
//today order
app.get('/todayOrders',authVerify,async(req,res)=>{
let date_obj = new Date();
let dates = ("0" + date_obj.getDate()).slice(-2);
let months = ("0" + (date_obj.getMonth() + 1)).slice(-2);
let years = date_obj.getFullYear();
todaydate=years + "-" + months + "-" + dates;
console.log(todaydate+"ert");
await models.order.findAll({
//date:2022-07-21,
where: sequelize.where(sequelize.fn('date', sequelize.col('date')),' = ',todaydate)
,include: [{
model: models.orderDetails},{
model: models.store ,attributes: ['storeName']},{
model:models.users ,attributes: [['name', 'userName']]},{
model:models.orderProcess ,attributes: [['name','orderStatus']]}
]}).then(result=>{
res.status(201).json({
Code:"1",
Message:" Order List",
Data:result
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"No Data"
});
})
});
//medicine search api
app.post('/searchMedicine/(:storeId)',async(req,res)=>{
const Op = sequelize. Op;
await models.medicines.findAll({where: {
name: {
[Op. like]: '%'+req.body.medicine+'%'
},status:1,storeId:{
[Op.in]:[0,req.params.storeId]
}},
include:[
{model: models.company,attributes:[['name','companyName']]}
],
attributes:[`id`,`name`, `companyId`, 'quantity','prescription',
`amount`, `discount`, ["concat('"+process.env.IMAGE_URL+"medicine/', image)" , 'image'], `howWorks`, `directionOfUse`, `status` ],limit:50
}).then(result=>{
res.status(201).json({
Code:"1",
Message:"Medicines Search List",
Data:result
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"No Data"
});
})
});
//store view by name
app.get('/viewStoreDetail/(:Storeurl)',async(req,res)=>{
await models.store.findAll({where:{storeUrl:req.params.Storeurl},
attributes: [`id`, `storeName`, `ownerName`, `contactNumber`, 'storeUrl','qrCode',`whatsAppNumber`, `address1`, `address2`, `pincode`, `location`,'disclaimer','wideDiscount','wideDiscountType','returnPolicy','pickup', 'cashondelivery','upi',["concat('"+process.env.IMAGE_URL+"store/', storeImage)" , 'storeImage'], `openingTime`, `closingTime`, `features`, `disclaimer`,'enablePrescription','pickup','status','upi',["concat('"+process.env.IMAGE_URL+"store/', upiQr)" , 'upiQr'] ]
}).then(
result=>{
//console.log(result);
res.status(201).json({
Code:"1",
Message:"Success",
Data:result
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"No Data"
});
})
});
//BANNER START
//POST BANNER ADD
//MULTER FOR UPLOAD IMAGE
const banner=multer.diskStorage({
destination:(req,file,cb)=>{
cb(null,"uploads/banner"); //call backsrc\assets\uploads
},
filename: (req,file,cb)=>
{
cb(null,"md-"+Date.now()+file.originalname);
}
});
const bannerUploaded=multer({
storage:banner,
limits: {
// Setting Image Size Limit to 2MBs
fileSize: 2000000
},
});
//MULTER FOR UPLOAD IMAGE
app.post('/addBanner',bannerUploaded.single('imageps'),authVerify,async(req,res)=>{
const data=
{
image:req.file.filename,
status:1,
createdBy:req.body.createdBy,
createdAt:Date.now()
}
//console.log(data);
//console.log(req.body.medicineuses);
await models.banner.create(data)
.then(result=>{
res.status(201).json({
Code:"1",
Message:"Banner Created Successfully",
Data: result
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"Something went wrong",
Post: error
});
})
});
//GET BANNER LIST
app.get('/banner',authVerify,async(req,res)=>{
await models.banner.findAll({where:{status:1},
attributes:['id',["concat('"+process.env.IMAGE_URL+"banner/', image)" , 'image']]
})
.then(result=>{
res.status(201).json({
Code:"1",
Message:"Banner List",
Data:result
});
})
});
//PUT BANNER VIEW
app.put('/viewBanner/(:bannereId)',authVerify,async(req,res)=>{
await models.banner.findByPk(req.params.bannereId).then(result=>{
res.status(201).json({
Code:"1",
Message:"Success",
Data: result
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"Something went wrong"
});
})
});
///PUT MEDICINES - UPDATE
app.put('/updateBanner/(:bannereId)',bannerUploaded.single('imagepa1'),authVerify,async(req,res)=>{
const bid=req.params.bannereId;
if(req.body.imagepa1==undefined)
{
//console.log("dsdsds");
var currentimg=req.file.filename;
}
else
{
var currentimg=req.body.image;
}
data=
{
image:currentimg,
status:1,
updatedBy:req.body.createdBy,
updatedAt:Date.now()
}
await models.banner.update(data,{where:{id:bid}}).then(result=>{
res.status(201).json({
Code:"1",
Message:"Successfully Updated",
Data: result
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"Something went wrong"
});
})
});
///PUT BANNER - DELETE
app.put('/deleteBanner/(:bannereId)',authVerify,async(req,res)=>{
const bid=req.params.bannereId;
const data=
{
status:0
}
await models.banner.update(data,{where:{id:bid}}).then(result=>{
res.status(201).json({
Code:"1",
Message:"Successfully Deleted",
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"Something went wrong"
});
})
});
//GET ORDERS COUNT
app.get('/ordersCount/(:storeId)',authVerify,async(req,res)=>{
const stid=req.params.storeId;
await models.order.findAndCountAll({where:{storeId:stid,status:1}})
.then(result=>{
//console.log(result);
res.status(201).json({
Code:"1",
Message:"Orders Count",
Data:result.count
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"No Data Found"
});
})
});
//GET ORDERS COUNT
app.get('/notificationCount/(:storeId)',authVerify,async(req,res)=>{
const stid=req.params.storeId;
await models.orderNotification.findAndCountAll({where:{storeId:stid,status:1}})
.then(result=>{
//console.log(result);
res.status(201).json({
Code:"1",
Message:"Orders Notification Count",
Data:result.count
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"No Data Found"
});
})
});
//GET SALES TOTAL
app.get('/salesTotal/(:storeId)',authVerify,async(req,res)=>{
const stid=req.params.storeId;
await models.order.findAll({where:{status:1,storeId:stid},attributes: [[sequelize.fn('sum', sequelize.col('amount')), 'total']]})
.then(result=>{
res.status(201).json({
Code:"1",
Message:"Total Sales",
Data:result[0].total
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"No Data Found"
});
})
});
//GET STORE VISITORS TOTAL
app.get('/storeVisitorsCount/(:storeId)',authVerify,async(req,res)=>{
const stid=req.params.storeId;
await models.storevisitors.findAll({where:{status:1,storeid:stid},attributes: ['count']})
.then(result=>{
res.status(201).json({
Code:"1",
Message:"Total Visitors",
Data:result[0].count
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"No Data Found"
});
})
});
//DELIVERY PINCODE
app.post('/addDeliveryPincode',authVerify,async(req,res)=>{
const data=
{
storeId:req.body.storeId,
pincode:req.body.pincode,
deliveryFee:req.body.deliveryFee,
free_above:req.body.free_above,
status:1,
createdBy:req.body.createdBy,
createdAt:Date.now()
}
await models.deliveryPincode.create(data)
.then(result=>{
res.status(201).json({
Code:"1",
Message:"Created Successfully",
Data: result
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"Something went wrong",
Post: error
});
})
});
//GET DELIVERY PINCODE
app.get('/DeliveryPincode/(:storeId)',authVerify,async(req,res)=>{
await models.deliveryPincode.findAll({where:{storeId:req.params.storeId,status:1}})
.then(result=>{
res.status(201).json({
Code:"1",
Message:"deliveryPincode List",
Data: result
});
})
});
//PUT DELIVERY PINCODE
app.put('/viewDeliveryPincode/(:storeId)',authVerify,async(req,res)=>{
await models.deliveryPincode.findByPk(req.params.storeId,{attributes: [`storeId`, `pincode`, `deliveryFee`,'free_above', `status`, `createdAt`, `updatedAt`]}).then(result=>{
res.status(201).json({
Code:"1",
Message:"Success",
Data: result
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"Something went wrong"
});
})
});
///PUT DELIVERY PINCODE
app.put('/updateDeliveryPincode/(:primaryId)',authVerify,async(req,res)=>{
const pid=req.params.primaryId;
const data=
{
pincode:req.body.pincode,
deliveryFee:req.body.deliveryFee,
free_above:req.body.free_above,
status:1,
updatedBy:req.body.createdBy,
updatedAt:Date.now()
}
await models.deliveryPincode.update(data,{where:{id:pid}}).then(result=>{
res.status(201).json({
Code:"1",
Message:"Successfully Updated",
Data: result.data
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"Something went wrong"
});
})
});
///PUT DELIVERY PINCODE
app.put('/deleteDeliveryPincode/(:primaryId)',authVerify,async(req,res)=>{
const pid=req.params.primaryId;
const data=
{
status:0
}
await models.deliveryPincode.update(data,{where:{id:pid}}).then(result=>{
res.status(201).json({
Code:"1",
Message:"Successfully Deleted",
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"Something went wrong"
});
})
});
//GET COMPLETED ORDER LIST
app.get('/CompletedOrderList/(:storeId)',authVerify,async(req,res)=>{
const pid=req.params.storeId;
await models.order.findAll({
where:{status:1,orderProcessId:2,storeId:pid},
attributes: [ `id`, `userId`,'amount', `discount`,'deliveryfee',`total`,'paymentMethod','prescriptionId',`createdAt`],
include: [
{model: models.users,attributes: [['name','userName'],['contactNumber','contactNumber'],['address1','address'],['address2','address1'],['pincode','pincode']]},
{model: models.prescription,attributes: [['prescription','prescriptionName']]}
]
})
.then(result=>{
res.status(201).json({
Code:"1",
Message:"Completed Order List",
Data: result,
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"Something went wrong"
});
})
});
//GET PENDING ORDER LIST
app.get('/pendingOrderList/(:storeId)',authVerify,async(req,res)=>{
const pid=req.params.storeId;
await models.order.findAll({
where:{status:1,orderProcessId:1,storeId:pid},
attributes: [ `id`, `userId`,'amount', `discount`,'deliveryfee', `total`,'paymentMethod',`createdAt`],
include: [
{model: models.users,attributes: [['name','userName'],['contactNumber','contactNumber'],['address1','address'],['address2','address1'],['pincode','pincode']]},
{model: models.prescription,attributes: [['prescription','prescription']]}
]
})
.then(result=>{
res.status(201).json({
Code:"1",
Message:"Completed Order List",
Data: result
});
})
});
//GET CANCELLED ORDER LIST
app.get('/cencelledOrderList/(:storeId)',authVerify,async(req,res)=>{
const pid=req.params.storeId;
await models.order.findAll({
where:{status:1,orderProcessId:3,storeId:pid},
attributes: [ `id`, `userId`,'amount', `discount`,'deliveryfee', `total`,'paymentMethod',`createdAt`],
include: [
{model: models.users,attributes: [['name','userName'],['contactNumber','contactNumber'],['address1','address'],['address2','address1'],['pincode','pincode']]},
{model: models.prescription,attributes: [['prescription','prescription']]}
]
})
.then(result=>{
res.status(201).json({
Code:"1",
Message:"Completed Order List",
Data: result
});
})
});
//GET ORDER DETAILS
app.get('/medicineOrderDetail/(:orderId)',authVerify,async(req,res)=>{
const oid=req.params.orderId;
await models.orderDetails.findAll({
where:{status:1,orderId:oid},
attributes: [ `id`,'orderId',`medicineId`,'quantity', `amount`, `discount`, `total`],
include: [
{model: models.medicines,attributes: [['name','medicineName']]},
{model: models.order,attributes: [['paymentMethod','methodOfPayment'],['deliveryfee','deliveryfee']],
//include:[{model:models.prescription,attributes:[["concat('https://abc.s3-us-west-2.amazonaws.com/', prescription)",'image']]}]
include:
[
//{model: models.prescription,attributes: [["concat('https://abc.s3-us-west-2.amazonaws.com/', prescription)" , 'prescription']]},
//{model: models.prescription,attributes: [["concat('"+process.env.IMAGE_URL+"prescription/', prescription)" , 'prescription']]},
{model: models.prescription,attributes: [['prescription', 'prescription']]},
{model: models.users,attributes: [['name','UserName'],['contactNumber','contactNumber'],['address1','address1'],['address2','address2'],['pincode','pincode'],['location','location']
]}
],
// include:[],
}
]
})
.then(result=>{
//console.log(result);
res.status(201).json({
Code:"1",
Message:"Order List Details",
Data: result
});
}).catch(error=>{
console.log(error);
res.status(500).json({
Code:"0",
Message:"Something went wrong"
});
})
});
//GET STORE URL
app.get('/storeUrl/(:storeId)',authVerify,async(req,res)=>{
const stid=req.params.storeId;
//console.log(stid);
await models.store.findAll({where:{status:1,id:stid},
attributes: [["concat('"+process.env.STORE_URL+"/',storeUrl)",'storeUrl'],['storeName','storeName']]})
.then(result=>{
//console.log(result);
res.status(201).json({
Code:"1",
Message:"Store URL",
URL:result[0]['storeUrl'],
StoreName:result[0]['storeName']
});
})
});
//GET STORE UPI
app.put('/updateUPI/(:storeId)',authVerify,async(req,res)=>{
const stid=req.params.storeId;
var data={
upi:req.body.upi
}
await models.store.update(data,{where:{status:1,id:stid}})
.then(result=>
{
res.status(201).json({
Code:"1",
Message:"Store UPI Updated Successfully",
Data:result
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"No Data"
});
})
});
//GET STORE UPI
app.put('/updateStoreStatus/(:storeId)',authVerify,async(req,res)=>{
const stid=req.params.storeId;
var data={
storeStatus:req.body.storeStatus
}
await models.store.update(data,{where:{status:1,id:stid}})
.then(result=>{
res.status(201).json({
Code:"1",
Message:"store Status Updated Successfully",
Data:result
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"No Data"
});
})
});
//UPDATE RETURN POLICY
app.put('/updateReturnPolicy/(:storeId)',authVerify,async(req,res)=>{
const stid=req.params.storeId;
var data={
returnPolicy:req.body.returnPolicy
}
await models.store.update(data,{where:{status:1,id:stid}})
.then(result=>{
res.status(201).json({
Code:"1",
Message:"Return Policy Updated Successfully",
Data:result
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"No Data"
});
})
});
//UPDATE PICKUP
app.put('/updatePickup/(:storeId)',authVerify,async(req,res)=>{
const stid=req.params.storeId;
var data={
pickup:req.body.pickup
}
await models.store.update(data,{where:{status:1,id:stid}})
.then(result=>{
res.status(201).json({
Code:"1",
Message:"Pickup Updated Successfully",
Data:result
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"No Data"
});
})
});
//UPDATE Cashondelivery
app.put('/updateCashondelivery/(:storeId)',authVerify,async(req,res)=>{
const stid=req.params.storeId;
var data={
cashondelivery:req.body.cashondelivery
}
await models.store.update(data,{where:{status:1,id:stid}})
.then(result=>{
res.status(201).json({
Code:"1",
Message:"Cashondelivery Updated Successfully",
Data:result
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"No Data"
});
})
});
///STORE BANNER UPDATE
//MULTER FOR UPLOAD IMAGE
const storeBanner=multer.diskStorage({
destination:(req,file,cb)=>{
cb(null,"uploads/store"); //call backsrc\assets\uploads
},
filename: (req,file,cb)=>
{
cb(null,"md-"+Date.now()+file.originalname);
}
});
const storeBannerUploaded=multer({
storage:storeBanner,
limits: {
// Setting Image Size Limit to 2MBs
fileSize: 2000000
},
});
app.put('/updateStoreBanner/(:storeId)',storeBannerUploaded.single('storeImagenew'),authVerify,async(req,res)=>{
const storeId=req.params.storeId;
if(req.body.storeImagenew==undefined)
{
//console.log("dsdsds");
var currentimg1=req.file.filename;
}
else
{
var currentimg1=req.body.storeImage;
}
data=
{
storeImage:currentimg1,
status:1,
updatedBy:req.body.createdBy,
updatedAt:Date.now()
}
await models.store.update(data,{where:{id:storeId}}).then(result=>{
//console.log(result);
//console.log(storeId);
res.status(201).json({
Code:"1",
Message:"Successfully Updated",
Data: result
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"Something went wrong"
});
})
});
//UPDATE Storewide Discount Type
app.put('/updateWideDiscountStatus/(:storeId)',authVerify,async(req,res)=>{
const stid=req.params.storeId;
var data={
wideDiscountType:req.body.wideDiscountType
}
await models.store.update(data,{where:{status:1,id:stid}})
.then(result=>{
res.status(201).json({
Code:"1",
Message:"Discount Type Updated Successfully",
Data:result
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"No Data"
});
})
});
//UPDATE Storewide Discount
app.put('/updateWideDiscount/(:storeId)',authVerify,async(req,res)=>{
const stid=req.params.storeId;
var data={
wideDiscount:req.body.wideDiscount
}
await models.store.update(data,{where:{status:1,id:stid}})
.then(result=>{
res.status(201).json({
Code:"1",
Message:"Dicount Updated Successfully",
Data:result
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"Button Disabled"
});
})
});
app.put('/MedicineInfoo/(:medicineId)',async(req,res)=>{
await models.medicines.findByPk(req.params.medicineId,{
attributes: [ `id`, `name`,'companyId', `quantity`, `amount`, `discount`,["concat('"+process.env.IMAGE_URL+"medicine/', image)" , 'image'],'howWorks','directionOfUse','prescription','status'],
include: [
{model: models.company,attributes: [['name','companyName']]},
{model: models.medicineuses,attributes: ['name','medicineId','status']},
{model: models.medicinesideeffects,attributes: ['name','medicineId','status']}
]}).then(result=>{
res.status(201).json({
Code:"1",
Message:"Success",
Data: result
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"Something went wrong"
});
})
});
app.get('/cartCount/:id/:sid',async(req,res)=>{
await models.cart.findAndCountAll({where: {status:1,userId:req.params.id,storeId:req.params.sid},attributes:['id']}).then(result=>{
res.status(201).json({
Code:"1",
Message:" Order Count",
Data:result.count
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"No Data"
});
})
});
app.put('/viewCartItem/(:deviceid)/(:storeId)',async(req,res)=>{
await models.cart.findAll({where:{userId:req.params.deviceid,storeId:req.params.storeId},
attributes: [ `id`,'userId','medicineId','medAmt','quantity','amount','discount','total','status','pres_required'],
include:[
{model: models.medicines,attributes:[['name','medicineName'],'amount']}
]
}).then(result=>
{
res.status(201).json({
code:"1",
Message:"View Cart",
Data:result
});
}).catch(error=>{ //console.log(error);
res.status(500).json({
code:"0",
Message:"No Data",
});
})
});
app.put('/listCartItemtoOrder/(:deviceid)/(:stid)',async(req,res)=>{
await models.cart.findAll({where:{userId:req.params.deviceid,storeId:req.params.stid},
attributes: ['medicineId','quantity','amount','discount','total','status'],
}).then(result=>
{
res.status(201).json({
code:"1",
Message:"View Cart",
Data:result
});
}).catch(error=>{ console.log(error);
res.status(500).json({
code:"0",
Message:"No Data",
});
})
});
//GET STORE TIME
app.get('/getStoreTime/(:storeId)',authVerify,async(req,res)=>{
const stid=req.params.storeId;
// console.log(stid);
await models.storeTime.findAll({where:{status:1,storeId:stid}}).then(result=>
{
console.log(result);
res.status(201).json({
Code:"1",
Message:"Store URL",
Data:result
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"Something went wrong"
});
})
});
app.put('/changeTime/:storeId',async(req,res)=>{
const stid=req.params.storeId;
await models.storeTime.destroy({where:{storeId:stid}});
await models.storeTime.bulkCreate(req.body.myData,{where:{storeId:stid}})
.then(result=>{
res.status(201).json({
Code:"1",
Message:"Time Updated Succesfully",
Data:result
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"Something went wrong"
});
})
});
app.put('/viewCartItemSum/(:deviceid)/(:sid)',async(req,res)=>{
await models.cart.findAll({where:{userId:req.params.deviceid,storeId:req.params.sid},
attributes: [
[sequelize.fn('sum', sequelize.col('amount')), 'total_amount'],
],
group: ['userId'],
raw: true
}).then(result=>{
//console.log(result);
res.status(201).json({
Code:"1",
Message:"Cart sum",
Data:result
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"Something went wrong"
});
});
});
app.post('/insertUser',async(req,res)=>{
//GENERATE HASH PASSWORD FROM {hashGenerate} FUNCTION
const data1=
{
userType:req.body.userType,
name:req.body.name,
referralDoctor:req.body.referralDoctor,
email:req.body.email,
contactNumber:req.body.contactNumber,
address1:req.body.address1,
address2:req.body.address2,
pincode:req.body.pincode,
status:1,
deviceId:req.body.device
// createdAt:Date.now()
}
//console.log(req.body.device);
await models.users.create(data1).then(result=>{
//console.log(result);
res.status(201).json({
Code:"1",
Message:"User Created Successfully",
Data: result
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"Something went wrong",
Post: error
});
})
});
app.put('/deleteCartuser/(:deviceid)/(:sid)',async(req,res)=>{
await models.cart.destroy({where:{userId:req.params.deviceid,storeId:req.params.sid},
}).then(result=>{
console.log(result);
res.status(201).json({
Code:"1",
Message:"Cart Deleted",
Data:result
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"Something went wrong"
});
});
});
app.put('/listmyorder/(:deviceid)/(:sid)',async(req,res)=>{
await models.order.findAll({where:{deviceId:req.params.deviceid,storeId:req.params.sid},
attributes: ['id','date','total','quantity','paymentMethod','userId'],
include:[
{ model: models.users,attributes:['name','referralDoctor','email','contactNumber'] },
{model: models.prescription,attributes: ['storeId','prescription']},
{model:models.orderProcess ,attributes: ['id',['name','orderStatus']]}
]
}).then(result=>{
console.log(result);
res.status(201).json({
Code:"1",
Message:"List my orders",
Data:result
});
}).catch(error=>{console.log(error);
res.status(500).json({
Code:"0",
Message:"Something went wrong"
});
});
});
app.put('/listorderdetails/(:oid)',async(req,res)=>{
await models.orderDetails.findAll({where:{orderId:req.params.oid},
attributes: ['medicineId','quantity','amount','total','curdiscount'],
include:[
{ model: models.medicines,attributes:['name'] }
]
}).then(result=>{
//console.log(result);
res.status(201).json({
Code:"1",
Message:"List order details",
Data:result
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"Something went wrong"
});
});
});
/*let sql = "SELECT * FROM register WHERE id="+req.body.userId+" and device_unique_id='"+req.body.deviceId+"'";
let query = db.query(sql,(err, results) => {
if(err) throw err
if(results.length > 0 ){}
else
{
var response_code="2";
var response_msg=devicee_access_check;
res.send(JSON.stringify({ "code":response_code,"message":response_msg,"data": ""}));
}
})*/
//******** PLAN Type=1=>Trial, Type=2=>Payment ********
//4. List Plans
app.get('/currentPlan/(:storeId)',authVerify,async(req,res)=>{
await models.store.findAll({where:{id:req.params.storeId},
attributes: ['planId','planType','trialStatus','planValidity','planStatus','startDate','endDate','storeType'],
include:[
{ model: models.plan,attributes:[['name','planName']] }
],raw:true
}).then(result=>{
if(result.length>0)
{
var planType=result[0]["planType"];
var endDate=result[0]["endDate"];
var storeType=result[0]["storeType"];
var trialStatus=result[0]["trialStatus"];
var planName=result[0]['plan.planName'];
var planStatus=result[0]['planStatus'];
var current_date = new Date();
var statusFalse=false;//Subscribe
var statusTrue=true;
var isPlanActive=true;
var isNoPlan=false;
//***********Condition***********//
if(planStatus==1)//Plan Active
{
if(storeType==1)//store Type 1=Pharmacy
{
if(planType==1)//Trial
{
models.plan.findAll({where:{status:1,type:2,planFor:1},attributes:['id','name','type','amount','validity']})
.then(updateresult=>
{
//console.log(updateresult);
res.status(201).json({
PlanList: updateresult,
Message:"Active Plan",
Status:statusFalse,
CurrentPlan:planName,
ExpiryOn:endDate,
PlanStatus:isPlanActive
});
});
}
else
{
//Expired Condition
if(current_date>endDate){
datan={
planStatus:2
}
models.store.update(datan,{where:{id:req.params.storeId}});
models.plan.findAll({where:{status:1,type:2,planFor:1},attributes:['id','name','type','amount','validity']})
.then(updateresult=>
{
res.status(201).json({
PlanList:updateresult,
Message: "Active Plan",
Status:statusFalse,
CurrentPlan:planName,
ExpiryOn:endDate,
PlanStatus:isPlanActive
});
});
}
else
{
models.plan.findAll({where:{status:1,type:2,planFor:1},attributes:['id','name','type','amount','validity']})
.then(updateresult1=>
{
res.status(201).json({
PlanList:updateresult1,
Message:"Current Plan",
Status:statusTrue,
CurrentPlan:planName,
ExpiryOn:endDate,
PlanStatus:isPlanActive
});
});
}
//Expired Condition
}
}
else
{
if(planType==1)//Trial
{
models.plan.findAll({where:{status:1,type:2,planFor:2},attributes:['id','name','type','amount','validity']})
.then(updateresult=>
{
//console.log(updateresult);
res.status(201).json({
PlanList: updateresult,
Message:"Active Plan",
Status:statusFalse,
CurrentPlan:planName,
ExpiryOn:endDate,
PlanStatus:isPlanActive
});
});
}
else
{
//Expired Condition
if(current_date>endDate){
datan={
planStatus:2
}
models.store.update(datan,{where:{id:req.params.storeId}});
models.plan.findAll({where:{status:1,type:2,planFor:2},attributes:['id','name','type','amount','validity']})
.then(updateresult=>
{
res.status(201).json({
PlanList:updateresult,
Message: "Active Plan",
Status:statusFalse,
CurrentPlan:planName,
ExpiryOn:endDate,
PlanStatus:isPlanActive
});
});
}
else
{
models.plan.findAll({where:{status:1,type:2,planFor:2},attributes:['id','name','type','amount','validity']})
.then(updateresult1=>
{
res.status(201).json({
PlanList:updateresult1,
Message:"Current Plan",
Status:statusTrue,
CurrentPlan:planName,
ExpiryOn:endDate,
PlanStatus:isPlanActive
});
});
}
//Expired Condition
}
}
}
else if(planStatus==2 && trialStatus==2)//Plan Expired
{
//***********Store Type Condition***********//
if(storeType==1)//Pharmacy
{
models.plan.findAll({where:{status:1,type:2,planFor:1},attributes:['id','name','type','amount','validity']})
.then(updateresult1=>
{
res.status(201).json({
PlanList:updateresult1,
Message:"You can't access other features. Pls subscribe to use app",
Status:statusFalse,
PlanStatus:isNoPlan
});
});
}
else
{
models.plan.findAll({where:{status:1,type:2,planFor:2},attributes:['id','name','type','amount','validity']})
.then(updateresult1=>
{
res.status(201).json({
PlanList:updateresult1,
Message:"You can't access other features. Pls subscribe to use app",
Status:statusFalse,
PlanStatus:isNoPlan
});
});
}
//***********End Store Type Condition***********//
}
//***********End Condition***********//
}
}).catch(error=>{
console.log(error);
res.status(500).json({
Code:"0",
Message:"Something went wrong"
});
});
});
/* app.get('/currentPlan/(:storeId)',authVerify,async(req,res)=>{
//current plan
await models.store.findAll({where:{id:req.params.storeId},
attributes: ['planId','planType','planValidity','planStatus','startDate','endDate','storeType'],
include:[
{ model: models.plan,attributes:[['name','planName']] }
],raw:true
}).then(result=>
{
if(result.length>0)
{
var planType=result[0]["planType"];
var endDate=result[0]["endDate"];
var storeType=result[0]["storeType"];
var planName=result[0]['plan.planName'];
var current_date = new Date();
var statusFalse=false;//Subscribe
var statusTrue=true;
if(storeType==1)//store Type 1=Pharmacy
{
if(planType==1)//Trial
{
models.plan.findAll({where:{status:1,type:2,planFor:1},attributes:['name','type','amount','validity']})
.then(updateresult=>
{
//console.log(updateresult);
res.status(201).json({
PlanList: updateresult,
Message:"Subscribe your plan...",
Status:statusFalse,
});
});
}
else
{
//Expired Condition
if(current_date>endDate){
datan={
planStatus:2
}
models.store.update(datan,{where:{id:req.params.storeId}});
models.plan.findAll({where:{status:1,type:2,planFor:1},attributes:['name','type','amount','validity']})
.then(updateresult=>
{
res.status(201).json({
PlanList:updateresult,
Message: "Your Plan Expired Subscribe Now",
Status:statusFalse
});
});
}
else
{
models.plan.findAll({where:{status:1,type:2,planFor:1},attributes:['name','type','amount','validity']})
.then(updateresult1=>
{
res.status(201).json({
PlanList:updateresult1,
Message:"Current Plan",
Status:statusTrue,
CurrentPlan:planName,
ExpiryOn:endDate
});
});
}
//Expired Condition
}
}
else if(storeType==2)//2=pharmacy
{
if(planType==1)//Trial
{
models.plan.findAll({where:{status:1,type:2,planFor:2},attributes:['name','type','amount','validity']})
.then(updateresult=>
{
//console.log(updateresult);
res.status(201).json({
PlanList: updateresult,
Message:"Subscribe your plan...",
Status:statusFalse
});
});
}
else
{
//Expired Condition
if(current_date>endDate){
datan={
planStatus:2
}
models.store.update(datan,{where:{id:req.params.storeId}});
models.plan.findAll({where:{status:1,type:2,planFor:2},attributes:['name','type','amount','validity']})
.then(updateresult=>
{
res.status(201).json({
PlanList:updateresult,
Message: "Your Plan Expired Subscribe Now",
Status:statusFalse
});
});
}
else
{
models.plan.findAll({where:{status:1,type:2,planFor:2},attributes:['name','type','amount','validity']})
.then(updateresult1=>
{
res.status(201).json({
PlanList:updateresult1,
Message:"Current Plan",
CurrentPlan:planName,
Status:statusTrue,
ExpiryOn:endDate
});
});
}
//Expired Condition
}
}
}
}).catch(error=>{
console.log(error);
res.status(500).json({
Code:"0",
Message:"Something went wrong"
});
});
}); */
//GET MEDICINES LIST
app.get('/medicinesList/(:storeId)',authVerify,async(req,res)=>{
await models.medicines.findAll({where:{status:1,storeId:req.params.storeId},
attributes: [ `id`, `name`,'companyId','storeId', `quantity`, `amount`, `discount`,["concat('"+process.env.IMAGE_URL+"medicine/', image)" , 'image'],'howWorks','directionOfUse','prescription','status'],
include:[
{model: models.company,attributes:[['name','companyName']]},
{model: models.medicineuses,attributes: ['name','medicineId','status']},
{model: models.medicinesideeffects,attributes: ['name','medicineId','status']}
]
})
.then(result=>{
console.log(result);
res.status(201).json({
Code:"1",
Message:"Medicine List",
Data: result
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"Something went wrong"
});
});
});
///STORE BANNER UPDATE
//MULTER FOR UPLOAD IMAGE
const storeDocument=multer.diskStorage({
destination:(req,file,cb)=>{
cb(null,"uploads/store"); //call backsrc\assets\uploads
},
filename: (req,file,cb)=>
{
cb(null,"md-"+Date.now()+file.originalname);
}
});
const storeDocUploaded=multer({
storage:storeDocument,
limits: {
// Setting Image Size Limit to 2MBs
fileSize: 4000000
},
});
app.put('/updateStoreDocument/(:storeId)',storeDocUploaded.single('storeDocnew'),authVerify,async(req,res)=>{
const storeId=req.params.storeId;
if(req.body.storeDocnew==undefined)
{
//console.log("dsdsds");
var currentimg2=req.file.filename;
}
else
{
var currentimg2=req.body.storeDoc;
}
data=
{
storeDoc:currentimg2,
status:1,
updatedBy:req.body.createdBy,
updatedAt:Date.now()
}
await models.store.update(data,{where:{id:storeId}}).then(result=>{
//console.log(result);
//console.log(storeId);
res.status(201).json({
Code:"1",
Message:"Successfully Updated",
Data: result
});
})
});
//GET ORDER BUTTON UPDATE
app.put('/orderButtonUpdate/(:orderId)',authVerify,async(req,res)=>{
const orderId=req.params.orderId;
const data=
{
orderProcessId:2
}
await models.order.update(data,{where:{id:orderId}}).then(result=>{
res.status(201).json({
Code:"1",
Message:"Successfully Updated",
Data: result
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"No Data"
});
})
});
app.put('/cancelOrderButton/(:orderId)',authVerify,async(req,res)=>{
const orderId=req.params.orderId;
const data=
{
orderProcessId:3
}
await models.order.update(data,{where:{id:orderId}}).then(result=>{
res.status(201).json({
Code:"1",
Message:"Successfully Updated",
Data: result
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"No Data"
});
})
});
//notofications
app.get('/getOrderNotification/(:storeId)', authVerify,async(req,res)=>{
const storeId=req.params.storeId;
await models.orderNotification.findAll({where:{status:1,storeId:storeId}
}).then(result=>{
res.status(201).json({
Code:"1",
Message:" Notification Info",
Data:result
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"No Data"
});
})
});
//MULTER FOR UPLOAD IMAGE
const prescriptionimg=multer.diskStorage({
destination:(req,file,cb)=>{
cb(null,"uploads/prescription"); //call backsrc\assets\uploads
},
filename: (req,file,cb)=>
{
cb(null,"md-"+Date.now()+file.originalname);
}
});
const prescriptionimgUploaded=multer({
storage:prescriptionimg,
});
//prescrition upload
app.post('/prescriptionupload',prescriptionimgUploaded.single('prescription'),async(req,res)=>{
const data={
storeId:req.body.storeId,
userId:req.body.userId,
prescription:req.file.filename,
status:1,
date:Date.now()
}
await models.prescription.create(data).then(result=>{
res.status(201).json({
Code:"1",
Message:"Upload",
Data:result
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"No Data"
});
})
});
//prescrition upload
app.get('/prescriptionremove/(:PID)',async(req,res)=>{
await models.prescription.destroy({where:{id:req.params.PID}}).then(result=>{
res.status(201).json({
Code:"1",
Message:"Upload Removed",
Data:result
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"No Data"
});
})
});
//pincode search api
app.post('/searchPincode',async(req,res)=>{
const Op = sequelize. Op;
await models.deliveryPincode.findAll({where: {
pincode: {
[Op. like]: '%'+req.body.pincode+'%'
},status:1,storeId:req.body.storeId},
attributes:[`deliveryFee`,`free_above`]
}).then(result=>{
res.status(201).json({
Code:"1",
Message:"Pincode List",
Data:result
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"No Data"
});
})
});
///PUT USER - DELETE
app.put('/removeNotification/(:notificationId)',authVerify,async(req,res)=>{
const noId=req.params.notificationId;
const data=
{
status:0
}
await models.orderNotification.update(data,{where:{id:noId}}).then(result=>{
res.status(201).json({
Message:"Successfully Removed",
});
}).catch(error=>{
res.status(500).json({
Message:"Something went wrong"
});
})
});
app.get('/getQrCode/(:storeId)', authVerify,async(req,res)=>{
const storeId=req.params.storeId;
await models.store.findAll({where:{status:1,id:storeId},attributes:[["concat('"+process.env.STORE_URL+"/',storeUrl)",'storeUrl'],'qrCode','storeName']
}).then(result=>{
console.log(result);
res.status(201).json({
Code:"1",
Message:"QR Code",
QRCode:result[0].qrCode,
StoreName:result[0].storeName,
storeUrl:result[0].storeUrl
});
}).catch(error=>{
console.log(error);
res.status(500).json({
Code:"0",
Message:"No Data"
});
})
});
//listsingleorder
app.get('/listordersingle/(:id)',async(req,res)=>{
await models.order.findAll({where:{id:req.params.id},
attributes: ['id','date','total','quantity','deliveryfee','paymentMethod','userId'],
include:[
{ model: models.users,attributes:['name','referralDoctor','email','contactNumber','address1','address2','pincode'] },
{model: models.prescription,attributes: ['storeId','prescription']},
{model:models.orderProcess ,attributes: ['id',['name','orderStatus']]}
]
}).then(result=>{
console.log(result);
res.status(201).json({
Code:"1",
Message:"List my orders",
Data:result
});
}).catch(error=>{console.log(error);
res.status(500).json({
Code:"0",
Message:"Something went wrong"
});
});
});
//UPDATE Storewide Discount Type
app.put('/updatePrescriptionED/(:storeId)',authVerify,async(req,res)=>{
const stid=req.params.storeId;
console.log(stid);
var data={
enablePrescription:req.body.enablePrescription
}
await models.store.update(data,{where:{status:1,id:stid}})
.then(result=>{
res.status(201).json({
Code:"1",
Message:"Prescription Type Updated Successfully",
Data:result
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"No Data"
});
})
});
//manifest
app.get('/getManifest/(:storeName)',async(req,res)=>{
await models.store.findAll({where:{storeUrl:req.params.storeName},
attributes: ['storeUrl','storeName',["concat('"+process.env.IMAGE_URL+"store/', storeImage)" , 'storeImage']],
}).then(result=>{
//console.log(images)
res.status(201).json({
"theme_color":"#0D8B85",
"background_color":"#FFFFFF",
"display":"standalone",
"scope":process.env.STORE_URL,
"start_url":process.env.STORE_URL+'/'+result[0].storeUrl,
"name":result[0].storeName+" App",
"short_name":result[0].storeName,
"icons":[
{"src":""+result[0].storeImage+"","type":"image/png","sizes":"192x192","purpose":"any maskable"},
{"src":result[0].storeImage,"type":"image/png","sizes":"512x512","purpose":"any maskable"},
{"src":result[0].storeImage,"sizes":"256x256","type":"image/png"},
{"src":result[0].storeImage,"sizes":"384x384","type":"image/png"}
],
"description":"Order your medicines online from "+result[0].storeName
});
}).catch(error=>{console.log(error);
res.status(500).json({
error
});
});
});
app.put('/updatePrescriptionOrder/(:orderId)',authVerify,async(req,res)=>{
var totalamount=req.body.amount-req.body.discount;
var data={
amount:req.body.amount,
discount:req.body.discount,
total:totalamount
}
const orderId=req.params.orderId;
models.order.update(data,{where:{status:1,id:orderId}})
.then(result1=>{
res.status(201).json({
Code:"1",
Message:"Order Updated",
Data:result1
});
}).catch(error=>{
console.log(error);
res.status(500).json({
Code:"0",
Message:"No Data"
});
});
});
app.get('/viewordereduser/(:userId)',async(req,res)=>{
await models.users.findAll({where:{id:req.params.userId},
attributes: ['pincode']})
.then(result=>{
res.status(201).json({
Code:"1",
Message:"Pincode",
Data:result
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"No Data"
});
});
});
///STORE BANNER UPDATE
//MULTER FOR UPLOAD IMAGE
const UPIImage=multer.diskStorage({
destination:(req,file,cb)=>{
cb(null,"uploads/store"); //call backsrc\assets\uploads
},
filename: (req,file,cb)=>
{
cb(null,"upiqr-"+Date.now()+file.originalname);
}
});
const UPIImageUpload=multer({
storage:UPIImage,
limits: {
// Setting Image Size Limit to 2MBs
fileSize: 4000000
},
});
app.put('/updateUPIQr/(:storeId)',UPIImageUpload.single('UPIImage'),authVerify,async(req,res)=>{
const storeId=req.params.storeId;
if(req.body.UPIImage==undefined)
{
//console.log("dsdsds");
var currentimg2=req.file.filename;
}
else
{
var currentimg2=req.body.upiQr;
}
console.log(currentimg2);
data=
{
upiQr:currentimg2,
updatedBy:req.body.createdBy,
updatedAt:Date.now()
}
await models.store.update(data,{where:{id:storeId}}).then(result=>{
//console.log(result);
//console.log(storeId);
res.status(201).json({
Code:"1",
Message:"Successfully Updated",
Data: result
});
})
});
//GET BANNER LIST
app.get('/getUPIQRImage/(:storeId)',authVerify,async(req,res)=>{
const storeId=req.params.storeId;
await models.store.findAll({where:{status:1,id:storeId},
attributes:['id',["concat('"+process.env.IMAGE_URL+"store/', upiQr)" , 'upiQr']]
})
.then(result=>{
res.status(201).json({
Code:"1",
Message:"UPI QR IMage",
Data:result[0]['upiQr']
});
})
});
//store visitors
app.get('/storevisitors/(:storeid)',async(req,res)=>{
await models.storevisitors.findAll({where: {
storeid:req.params.storeid},
attributes:[`count`]
}).then(result=>{
if(result!=""){
var oldcount=result[0]['count'];
var newcount=oldcount+1;
if(newcount!=0){
const data={
"count":newcount
}
models.storevisitors.update(data,{where:{storeid:req.params.storeid}})
}
}
else
{
const data={
"count":1,
"storeid":req.params.storeid,
"status":1
}
models.storevisitors.create(data)
}
res.status(201).json({
Code:"1",
Message:"order List",
Data:result
});
}).catch(error=>{
console.log(error);
res.status(500).json({
Code:"0",
Message:"No Data"
});
})
});
//cart update
//store visitors
app.post('/updatecart/(:cartid)',async(req,res)=>{
const data={
"quantity":req.body.quantity,
"amount":req.body.amount,
}
await models.cart.update(data,{where: {
id:req.params.cartid},
}).then(result=>{
res.status(201).json({
Code:"1",
Message:"order List",
Data:result
});
}).catch(error=>{
console.log(error);
res.status(500).json({
Code:"0",
Message:"No Data"
});
})
});
app.post('/Verification',async(req,resp)=>
{
const secret = "medcifytest@123";
webhook_signature = req.headers["x-razorpay-signature"];
var body1 = req.body;
var expectedSignature = Razorpay.validateWebhookSignature(body1, webhook_signature, secret);
validateWebhookSignature(body1, webhook_signature, secret);
var order_id=body1.payload.payment.entity.order_id;
// console.log("test",webhook_signature)
var status=body1.payload.payment.entity.status;
const data={
paymentStatus:status,
webhookResponse:webhook_signature,
}
console.log("dsds",order_id);
await models.subscription.update(data,{where:{razorpayOrderId:order_id}}).then(result=>{
console.log("verresult");
resp.status(201).json({
Code:"1",
Message:"Subscription updated Successfully",
Data: result
});
}).catch(error=>{
resp.status(500).json({
Code:"0",
Message:"Something went wrong",
Post: error
});
})
});
app.put('/updateFCMToken/(:storeId)',authVerify,async(req,res)=>{
const storeId=req.params.storeId;
const data=
{
deviceId:req.body.fcmToken
}
await models.store.update(data,{where:{id:storeId}}).then(result=>{
res.status(201).json({
Code:"1",
Message:"Successfully Updated",
Data: result
});
}).catch(error=>{
res.status(500).json({
Code:"0",
Message:"No Data"
});
})
});
module.exports=app;
//gmodule.exports=qr;