| Current Path : /var/node/inatote/Inatote-Backend/ |
| Current File : /var/node/inatote/Inatote-Backend/index.js |
import http from "http";
import { Server } from 'socket.io'
import express from 'express'
import bodyParser from 'body-parser'
import handleUsersRequest from './users/index.js'
import handleVendorsRequest from './vendors/index.js'
import productRoutes from './products/index.js'
import addressRoutes from "./address/index.js";
import ratingRoutes from "./rating/index.js";
import vendorRoutes from "./vendors/index.js";
import favouriteRoutes from "./favourite/index.js";
import orderRoutes from "./orders/index.js"
import handleCategoriesRequest from './categories/index.js'
import adaptRequest from './helpers/adapt-request.js'
import multer from 'multer'
import makeWebSocket from './helpers/web-socket.js'
import makeDb from "./db/index.js";
import ejs from 'ejs';
import handleAdminPages from './adminpanel/index.js'
import handleVendorPages from './vendor_panel/index.js'
import expressLayouts from 'express-ejs-layouts'
import config from './config.js'
import verify from './helpers/verify-middleware.js'
import adminVerify from './helpers/admin-verify-middleware.js'
import vendorVerify from './helpers/vendor-verify-middlerware.js'
import cookieParser from 'cookie-parser'
import handleConfigurationsRequest from './configurations/index.js'
import categoryRoutes from './categories/index.js'
import searchendpointHandler from "./search/index.js";
import voucherRoutes from "./vouchers/index.js";
import chatRoutes from "./chat/index.js";
import {listCustomers , createCustomer} from "./services/square.js"
import path, {dirname} from "path";
import connnection from "./io.js"
import cors from "cors";
import sendSms from "./helpers/twilio-helper.js"
import logger from "./services/logService.js";
import sendEmail from './helpers/twilio-send_grid.js';
import cron from "node-cron";
import uploadImage from "./services/imageUpload.js";
const upload = multer();
const app = express()
let db = makeDb()
// parse application/x-www-form-urlencoded
app.use(bodyParser.json())
app.use(express.json())
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(cors())
app.use(cookieParser())
app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.text());
// app.use('/static', express.static(process.cwd() + '/static'));
var form = multer().any()
// app.use(form)
app.use('/static', express.static('static'))
// Set Templating Engine
app.use(expressLayouts)
app.set('layout', './layouts/default')
app.set('view engine', 'ejs');
// Search Item
app.use("/search", searchController)
app.use("/vouchers", voucherRoutes)
// Order
// USERS MODULE
app.all('/users', verify, uploadImage.single("imageURL"), usersController)
app.post('/users/login', upload.none(), usersController)
app.post('/users/register', uploadImage.single("imageURL"), usersController)
app.post('/users/card', verify , usersController);
app.post('/users/SendCode',uploadImage.none(), usersController);
app.post('/users/verifyUser', uploadImage.none(), usersController)
app.post('/users/changePassword', uploadImage.none(), usersController)
app.post('/users/forgotPassword', uploadImage.none(), usersController)
app.post('/users/updatePassword', uploadImage.none(), usersController)
app.post('/users/registerAdmin', upload.none(), usersController)
app.post('/users/verifyRiderLicense', uploadImage.array("imageURL", 3), usersController)
app.post('/users/updateProfilePicture', verify, uploadImage.single("imageURL"), usersController)
app.get('/users/:id', verify, upload.none(), usersController)
app.delete('/users/:id', verify, upload.none(), usersController)
app.put('/users/:id', verify, uploadImage.single("imageURL"), usersController)
app.post('/users/createCardHolder' , usersController)
app.post('/users/activateCard' , verify , usersController)
app.post('/users/berkleyCards' , verify ,uploadImage.none() , usersController)
app.post('/users/updateCard' , verify ,uploadImage.none() , usersController)
app.post('/users/updateKYCStatus' , verify ,uploadImage.none() , usersController)
app.post('/users/validateOTP' , usersController)
// upload Image
app.post('/uploadImage', uploadImage.array("imageURL" , 10), (req , res)=>{
let path = req.files.map(f=> f.path);
res.status(200).json({
status : true ,
data : path
})
})
// VENDORS MODULE
app.use('/vendors', vendorRoutes)
// favourite MODULE
app.use("/favourite", favouriteRoutes)
// app.all('/vendors', verify, vendorsController)
// app.get('/vendors/:id', verify, vendorsController)
// app.delete('/vendors/:id', verify, vendorsController)
// app.put('/vendors/:id', verify, vendorsController)
// Address MODULE
app.use("/address", addressRoutes)
// Rating Routes
app.use("/ratings", ratingRoutes)
// PRODUCTS MODULE
app.use('/products', productRoutes)
app.use("/chat" , chatRoutes)
app.use("/orders", orderRoutes)
app.use("/categories", categoryRoutes)
// app.get('/products/:id', verify, productsController)
// app.put('/products/:categoryId/:id', verify, productsController)
// app.delete('/products/:id', verify, productsController)
// ORDER MODULES
// app.all('/orders', verify, ordersController)
// app.get('/orders/:id', verify, ordersController)
// app.delete('/orders/:id', verify, ordersController)
// Category MODULES
// app.all('/categories', verify, categoriesController)
// app.get('/categories/:id', verify, categoriesController)
// app.delete('/categories/:id', verify, categoriesController)
// Configuration Module
app.all('/configurations', verify, configurationsController)
app.get('/configurations/:id', verify, configurationsController)
app.delete('/configurations/:id', verify, configurationsController)
app.put('/configurations/:id', verify, configurationsController)
app.get('/web/admin/login', function (req, res) {
res.render('adminlogin')
});
app.get('/web/vendor/login', function (req, res) {
res.render('vendorlogin')
});
// index page
app.get('/web/admin', adminVerify, veiwsAdminController);
app.get('/web/admin/adduser', adminVerify, veiwsAdminController);
app.get('/web/admin/listuser', adminVerify, veiwsAdminController);
app.get('/web/admin/viewuser', adminVerify, veiwsAdminController);
app.get('/web/admin/viewrider', adminVerify, veiwsAdminController);
app.get('/web/admin/listvendor', adminVerify, veiwsAdminController);
app.get('/web/admin/addvendor', adminVerify, veiwsAdminController);
app.get('/web/admin/viewVendor', adminVerify, veiwsAdminController);
app.get('/web/admin/updatevendor', adminVerify, veiwsAdminController);
app.get('/web/admin/products', adminVerify, veiwsAdminController);
app.get('/web/admin/configurations', adminVerify, veiwsAdminController);
app.get('/web/admin/updateproduct', adminVerify, veiwsAdminController);
app.get('/web/admin/listproduct', adminVerify, veiwsAdminController);
app.get('/web/admin/vieworder', adminVerify, veiwsAdminController);
app.get('/web/admin/listorder', adminVerify, veiwsAdminController);
app.get('/web/admin/orders', adminVerify, veiwsAdminController);
app.get('/web/admin/KYCStatus', adminVerify, veiwsAdminController);
app.get('/web/admin/cardDetails', adminVerify, veiwsAdminController);
// about page
app.get('/web/vendor', vendorVerify, veiwsVendorController);
app.get('/web/vendor/adduser', vendorVerify, veiwsVendorController);
app.get('/web/vendor/listuser', vendorVerify, veiwsVendorController);
app.get('/web/vendor/edituser', vendorVerify, veiwsVendorController);
app.get('/web/vendor/changepassword', vendorVerify, veiwsVendorController);
app.get('/web/vendor/addproduct', vendorVerify, veiwsVendorController);
app.get('/web/vendor/updateproduct', vendorVerify, veiwsVendorController);
app.get('/web/vendor/listproduct', vendorVerify, veiwsVendorController);
app.get('/web/vendor/addcategory', vendorVerify, veiwsVendorController);
app.get('/web/vendor/updatecategory', vendorVerify, veiwsVendorController);
app.get('/web/vendor/listcategory', vendorVerify, veiwsVendorController);
app.get('/web/vendor/listorder', vendorVerify, veiwsVendorController);
app.get('/web/vendor/vieworder', vendorVerify, veiwsVendorController);
app.get('/web/vendor/viewuser', vendorVerify, veiwsVendorController);
app.get('/web/vendor/viewvendor', vendorVerify, veiwsVendorController);
app.get('/web/vendor/validateotp' , veiwsVendorController);
app.get("/sms" , async(req , res)=>{
// let number = req.query.number;
console.log('sms')
// await sendSms({toNumber:number , message :"Your mobile has been hacked"})
await sendEmail({ senderMail: "muhamadhasan043@gmail.com", templateId: "d-9c7e1c79349b4e51b54d65bcf9f62e4b" });
res.status(200).json("send")
})
function veiwsAdminController(req, res) {
const httpRequest = adaptRequest(req)
handleAdminPages(httpRequest)
.then(({ page, data }) => {
//console.log("page", page, data);
if (page == "adminLogin") {
res.redirect("admin/login");
} else {
console.log("page", page);
res.render(page, { data: data, layout: './layouts/admin-layout' })
}
})
.catch(e => { console.log("e", e); res.render("404.ejs") })
}
function veiwsVendorController(req, res) {
//console.log("request", req.query);
const httpRequest = adaptRequest(req)
handleVendorPages(httpRequest)
.then(({ page, data }) => {
console.log("page", page);
if (page == "vendorLogin") {
res.redirect("vendor/login")
} else {
//console.log("final data", data);
res.render(page, { data: data, layout: './layouts/vendor-layout.ejs' })
}
})
.catch(e => res.render("404.ejs"))
}
function configurationsController(req, res) {
const httpRequest = adaptRequest(req)
handleConfigurationsRequest(httpRequest)
.then(({ headers, statusCode, data }) =>
res
.set(headers)
.status(statusCode)
.send(data)
)
.catch(e => res.status(500).send({
"errorMessage": "Internal server error",
"statusCode": 500
}))
}
async function usersController(req, res) {
const httpRequest = adaptRequest(req)
handleUsersRequest(httpRequest)
.then(({ headers, statusCode, data }) => {
logger.infologger.info(JSON.stringify({statusCode , headers , data}))
res
.set(headers)
.status(statusCode)
.send(data)
})
.catch(e => {
console.log("err", e);
res.status(500).send({
"errorMessage": "Internal server error",
"statusCode": 500
})
})
}
function vendorsController(req, res) {
const httpRequest = adaptRequest(req)
handleVendorsRequest(httpRequest)
.then(({ headers, statusCode, data }) =>
res
.set(headers)
.status(statusCode)
.send(data)
)
.catch(e => res.status(500).send({
"errorMessage": "Internal server error",
"statusCode": 500
}))
}
function productsController(req, res) {
const httpRequest = adaptRequest(req)
handleProductsRequest(httpRequest)
.then(({ headers, statusCode, data }) =>
res
.set(headers)
.status(statusCode)
.send(data)
)
.catch(e => res.status(500).send({
"errorMessage": "Internal server error",
"statusCode": 500
}))
}
function searchController(req, res) {
const httpRequest = adaptRequest(req)
searchendpointHandler(httpRequest)
.then(({ headers, statusCode, data }) =>
res
.set(headers)
.status(statusCode)
.send(data)
)
.catch(e => res.status(500).send({
"errorMessage": "Internal server error",
"statusCode": 500
}))
}
// function ordersController(req, res) {
// const httpRequest = adaptRequest(req)
// handleOrdersRequest(httpRequest)
// .then(({ headers, statusCode, data }) =>
// res
// .set(headers)
// .status(statusCode)
// .send(data)
// )
// .catch(e => res.status(500).send({
// "errorMessage": "Internal server error",
// "statusCode": 500
// }))
// }
// function categoriesController(req, res) {
// const httpRequest = adaptRequest(req)
// handleCategoriesRequest(httpRequest)
// .then(({ headers, statusCode, data }) =>
// res
// .set(headers)
// .status(statusCode)
// .send(data)
// )
// .catch(e => res.status(500).send({
// "errorMessage": "Internal server error",
// "statusCode": 500
// }))
// }
cron.schedule('*/3 * * * *', async () => {
try {
console.log('sheduler started');
let databse = await makeDb();
let date = new Date();
let hours = date.getHours() <= 9 ? `0${date.getHours()}` : `${date.getHours()}`;
let mins = date.getMinutes() <= 9 ? `0${date.getMinutes()}` : `${date.getMinutes()}`;
let current_time = parseInt(hours + mins)
console.log("current_time",current_time);
let makeAllVendorClose = await databse.collection("vendors").updateMany({ isOpened: true }, {
$set: { isOpened: false }
});
// openTime < CT and closeTime > CT
// 900
let vendors = await databse.collection("vendors").updateMany({ "timings.openingTime": { $lte: current_time }, "timings.closingTime": { $gte: current_time }, isOpened: false }, {
$set: { isOpened: true }
});
console.log("vendors" , makeAllVendorClose.result)
console.log("vendors" , vendors.result)
} catch (err) {
console.log("err", err);
}
});
const __dirname = path.resolve(path.dirname(''));
app.get('/socket', function(req, res) {
// return res.status(500).json({message: 'Invalid path'});
res.sendFile(path.join(__dirname ,'index.html' ));
});
// app.listen(9090, () => //console.log(`Listening on port 9090`))
/** Create HTTP server. */
const server = http.createServer(app);
const io = new Server(server , {
cors: {
origin: '*',
}
});
// io.origins('*:*')
// io.on('connection', client => {
// client.on('event', data => { //console.log("data" , data) });
// client.on('disconnect', () => { //console.log("") });
// });
// const socketio = new Server()
/** Create socket connection */
// global.io = socketio.listen(server)
// var webSockets = makeWebSocket({ db })
io.on('connection',(client)=>connnection(client))
/** Listen on provided port, on all network interfaces. */
// console.log(config)
server.listen(config.app.port, config.app.hostname);
// logger.infologger.info(`Listening on port:: http://${config.app.hostname}:${config.app.port}`)
// server.listen(9090, "dev.inatote.com");
/** Event listener for HTTP server "listening" event. */
server.on("listening", (err , data) => {
console.log("ERR" ,err , data);
console.log(`Listening on port:: http://${config.app.hostname}:${config.app.port}`)
})
// .catch(err =>{
// console.log('err' , err);
// });