Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Start of Node modules
- var express = require("express");
- var app = express();
- var port = process.env.PORT || 8888;
- var server = app.listen(port);
- var session = require("express-session");
- var bodyParser = require("body-parser");
- var mongo = require("mongodb");
- var monk = require("monk");
- var db = monk("localhost:27017/dynamiccomps");
- var uuid = require("uuid-v4");
- //var db = monk("mongodb://helloworld:[email protected]:31882/dynamiccomps");
- var multer = require("multer");
- var upload = multer({dest:"./public/images/profile_pictures"});
- var fs = require("fs");
- var lolApi = require("leagueapi");
- //end of node modules
- //Declare Variables
- var sess;
- var database;
- var loginCounter = 0;
- var mimetypes = ["image/jpeg", "image/jpg", "image/png", "image/big"];
- var isItImage = 0;
- var champsArray = [];
- var arrayToUser = [];
- var champsArrayToUser = [];
- var userArray = [];
- var roles = ["Top", "Jungle", "Mid", "ADC", "Support"];
- var imgNumber = [0,1,2,3,4];
- var itemsArrayKey = [];
- var itemsArrayValue = [];
- var trinketsArray = [];
- var itemsArrayKeyUser = [];
- var itemsArrayValueUser = [];
- //End of Declare Variables
- //Middleware
- app.use(session({
- secret:"HelloWorld"
- }));
- app.use(express.static(__dirname + "/public")); //Changes all static files to directory
- app.use(bodyParser.urlencoded({extended:true})); //Used to get POST values
- //Configuring Handlebars
- var handlebars = require("express-handlebars").create({defaultLayout:"main"});
- app.engine("handlebars", handlebars.engine);
- app.set("view engine", "handlebars");
- //End of configuring handlebars
- //Configuring League API
- lolApi.init("dcb37a5f-c21d-4a33-9bd1-b0c40737bc54","oce");
- //append to champsArray
- lolApi.Static.getChampionList(true, function(err, champs) {
- for (var key in champs.data) {
- if (champs.data.hasOwnProperty(key)) {
- champsArray.push(key);
- }
- }
- for (var key in champs.data) {
- if (champs.data.hasOwnProperty(key)) {
- userArray.push(key);
- }
- }
- });
- //Getting Itemlist from Riot Games API
- lolApi.Static.getItemList(true, function (err, items) {
- for (var key in items.data) {
- if (items.data.hasOwnProperty(key)) {
- itemsArrayKey.push(key);
- itemsArrayValue.push(items.data[key].name);
- }
- }
- for (var i = 0;i<itemsArrayValue.length;i++) {
- var index = itemsArrayValue[i].indexOf("(Trinket)");
- if (index > -1) {
- trinketsArray.push(itemsArrayKey[i]);
- }
- }
- for (var i = 0;i<itemsArrayValue.length;i++) {
- var index = itemsArrayValue[i].indexOf("(Trinket)");
- if (index > -1) {
- }
- else {
- itemsArrayKeyUser.push(itemsArrayKey[i]);
- itemsArrayValueUser.push(itemsArrayValue[i]);
- }
- }
- });
- //End of configuring APi
- //End of middleware
- app.use(function (req, res, next) { //Connects db to every page
- req.db = db;
- database = req.db;
- next(); //Passes on to the next router
- });
- /////////////FUNCTIONS FOR TIME START HERE/////////////////////////
- function secsFunction(s) {
- var ms = s % 1000;
- s = (s - ms) / 1000;
- var secs = s % 60;
- s = (s - secs) / 60;
- var mins = s % 60;
- s = (s - mins) / 60;
- var hrs = s % 24;
- var days = (s - hrs) / 24;
- return secs;
- }
- function minsFunction(s) {
- var ms = s % 1000;
- s = (s - ms) / 1000;
- var secs = s % 60;
- s = (s - secs) / 60;
- var mins = s % 60;
- s = (s - mins) / 60;
- var hrs = s % 24;
- var days = (s - hrs) / 24;
- return mins;
- }
- function hrsFunction(s) {
- var ms = s % 1000;
- s = (s - ms) / 1000;
- var secs = s % 60;
- s = (s - secs) / 60;
- var mins = s % 60;
- s = (s - mins) / 60;
- var hrs = s % 24;
- var days = (s - hrs) / 24;
- return hrs;
- }
- function daysFunction(s) {
- var ms = s % 1000;
- s = (s - ms) / 1000;
- var secs = s % 60;
- s = (s - secs) / 60;
- var mins = s % 60;
- s = (s - mins) / 60;
- var hrs = s % 24;
- var days = (s - hrs) / 24;
- return days;
- }
- /////////////FUNCTIONS FOR TIME ENDS HERE/////////////////////////
- app.get("/", function (req, res) {
- sess = req.session;
- if (sess.user) {
- app.locals.signedYesOrNo = sess.user;
- }
- else {
- }
- var newDate = new Date();
- var utcMilli = newDate.getTime();
- var upvoteArray = [];
- var guides = database.get("guides");
- guides.find({}).on("success", function (doc) {
- console.log("doc.length is" + doc.length);
- for (var i = 0;i<doc.length;i++) {
- var xAgo = 0;
- var whatType = "";
- var milliDifference = utcMilli - doc[i].userUTC;
- var algoNum = (doc[i].likes/(milliDifference)) * 100;
- if (daysFunction(milliDifference) != 0) {
- xAgo = daysFunction(milliDifference);
- if (xAgo == 1) {
- whatType = "day";
- }
- else {
- whatType = "days";
- }
- }
- else {
- if (hrsFunction(milliDifference) != 0) {
- xAgo = hrsFunction(milliDifference);
- if (xAgo == 1) {
- whatType = "hour";
- }
- else {
- whatType = "hours";
- }
- }
- else {
- if (minsFunction(milliDifference) != 0) {
- xAgo = minsFunction(milliDifference);
- if (xAgo == 1) {
- whatType = "min";
- }
- else {
- whatType = "mins";
- }
- }
- else {
- if (secsFunction(milliDifference) != 0) {
- xAgo = secsFunction(milliDifference);
- if (xAgo == 1) {
- whatType = "sec";
- }
- else {
- whatType = "secs";
- }
- }
- }
- }
- }
- var likesHome = null;
- var dislikesHome = null;
- var obj = doc[i].likesLog.filter(function (obj) {
- return obj.user === sess.user;
- })[0];
- if (obj) {
- if (obj.val == 1) {
- likesHome = "true";
- }
- else if (obj.val == -1) {
- dislikesHome = "true";
- }
- }
- else {
- console.log("The post with the id:" + doc[i].guideId + "does not have any upvotes or downvotes by you");
- }
- upvoteArray.push({name:doc[i].guideName,likeNum:algoNum,guide:doc[i],howLong:xAgo,longType:whatType,likess:likesHome,dislikess:dislikesHome});
- console.log("upvoteArray after push is:" + upvoteArray);
- if (i == (doc.length -1)) {
- upvoteArray.sort(function(a, b){
- return b.likeNum-a.likeNum;
- })
- res.render("home", {guideArray:upvoteArray});
- }
- }
- });
- });
- app.get("/signup", function (req, res) {
- sess = req.session;
- if (sess.user) {
- app.locals.signedYesOrNo = sess.user;
- }
- else {
- }
- res.render("signup");
- });
- app.get("/account", function (req, res) {
- sess = req.session;
- if (sess.user) {
- app.locals.signedYesOrNo = sess.user;
- }
- else {
- }
- if (!sess.user) {
- res.redirect("/");
- }
- var account = database.get("account");
- var guides = database.get("guides");
- account.find({"name":sess.user}).on("success", function (doc) {
- guides.find({"by":sess.user}).on("success", function (doc2) {
- var dateTime = new Date();
- var currentTime = dateTime.getTime();
- var accountArray = [];
- for (var i = 0;i<doc2.length;i++) {
- var xAgo = 0;
- var whatType = "";
- var milliDifference = currentTime - doc2[i].userUTC;
- var algoNum = (doc2[i].likes/(milliDifference)) * 100;
- if (daysFunction(milliDifference) != 0) {
- xAgo = daysFunction(milliDifference);
- if (xAgo == 1) {
- whatType = "day";
- }
- else {
- whatType = "days";
- }
- }
- else {
- if (hrsFunction(milliDifference) != 0) {
- xAgo = hrsFunction(milliDifference);
- if (xAgo == 1) {
- whatType = "hour";
- }
- else {
- whatType = "hours";
- }
- }
- else {
- if (minsFunction(milliDifference) != 0) {
- xAgo = minsFunction(milliDifference);
- if (xAgo == 1) {
- whatType = "min";
- }
- else {
- whatType = "mins";
- }
- }
- else {
- if (secsFunction(milliDifference) != 0) {
- xAgo = secsFunction(milliDifference);
- if (xAgo == 1) {
- whatType = "sec";
- }
- else {
- whatType = "secs";
- }
- }
- }
- }
- }
- accountArray.push({name:doc2[i].guideName,likeNum:algoNum,guide:doc2[i],howLong:xAgo,longType:whatType});
- }//END OF FOR LOOP
- accountArray.sort(function(a, b){
- return b.likeNum-a.likeNum;
- })
- res.render("account",{user:doc[0],accountArray:accountArray});
- });
- });
- });
- app.post("/account", upload.single("changeAvatar") ,function (req, res) {
- sess = req.session;
- if (sess.user) {
- app.locals.signedYesOrNo = sess.user;
- }
- else {
- }
- var extension;
- for (var i = 0;i<mimetypes.length;i++) {
- if (req.file.mimetype === mimetypes[i]) {
- isItImage = 1;
- extension = req.file.mimetype.slice(6,req.file.mimetype.length);
- }
- }
- if (isItImage == 0) {
- console.log("Please upload a legit image");
- }
- else {
- var account = database.get("account");
- var fileName = req.file.filename + "." + extension;
- fs.rename(__dirname + "/public/images/profile_pictures/" + req.file.filename,__dirname + "/public/images/profile_pictures/" + sess.user + "." + extension, function (error) {
- if (error) {
- console.log("There was an error");
- }
- else {
- account.findAndModify({query:{"name":sess.user} , update:{"$set":{"profilePic":sess.user + ".png"}}});
- res.redirect("/account");
- }
- });
- }
- });
- app.get("/signup", function (req, res) {
- sess = req.session;
- if (sess.user) {
- app.locals.signedYesOrNo = sess.user;
- }
- else {
- }
- if (sess.failLogin) {
- app.locals.failLogin = "This username is already taken";
- loginCounter++;
- }
- if (loginCounter == 2) {
- delete app.locals.failLogin;
- loginCounter = 0;
- }
- res.render("signup");
- });
- app.get("/signupProc", function (req, res) {
- sess = req.session;
- if (sess.user) {
- app.locals.signedYesOrNo = sess.user;
- }
- else {
- }
- res.redirect("/signup");
- });
- app.get("/create", function (req, res) {
- sess = req.session;
- if (sess.user) {
- app.locals.signedYesOrNo = sess.user;
- }
- else {
- }
- if (!sess.user) {
- res.redirect("/");
- }
- else {
- //Find guides
- var guides = database.get("guides");
- res.render("create", {champArray:champsArray, roles: roles, itemsArrayKey:itemsArrayKeyUser,itemsArrayValue:itemsArrayValueUser,trinketsArray:trinketsArray});
- }
- });
- app.get("/showChamps", function (req, res) {
- sess = req.session;
- if (sess.user) {
- app.locals.signedYesOrNo = sess.user;
- }
- else {
- }
- var champText = req.query.textInput;
- var sendChamps = req.query.sendChampsArray;
- var sendChampsArray = JSON.parse(sendChamps);
- arrayToUser = [];
- for (var i = 0;i<champsArray.length;i++) {
- if (champsArray[i].toLowerCase().indexOf(champText.toLowerCase()) > -1 ) {
- arrayToUser.push(champsArray[i]);
- }
- }
- for (var i = 0;i<sendChampsArray.length;i++) {
- var index = arrayToUser.indexOf(sendChampsArray[i]);
- if (index > -1) {
- arrayToUser.splice(index, 1);
- }
- }
- res.send(arrayToUser);
- });
- app.post("/sendChamps", function (req, res) {
- sess = req.session;
- if (sess.user) {
- app.locals.signedYesOrNo = sess.user;
- }
- else {
- }
- var checkChamps;
- var error = 0;
- var guides = database.get("guides");
- var guideName = req.body.guideName;
- var sendChampsArrayString = JSON.parse(req.body.sendChampsArrayString);
- var notesTextArrayString = JSON.parse(req.body.notesTextArrayString);
- var itemsAndTrinketArrayString = JSON.parse(req.body.itemsAndTrinketArrayString);
- var gamePlayArrayString = JSON.parse(req.body.gamePlayArrayString);
- console.log("Guidename: " + guideName);
- console.log("sendChampsArraySTring: " + sendChampsArrayString);
- console.log("notesTextArrayString: " + notesTextArrayString);
- console.log("itemsAndTrinketArraySTring: " + itemsAndTrinketArrayString);
- console.log("gamePlayArrayString: " + gamePlayArrayString);
- //ERROR CHECKING
- guides.find({"guideName":guideName}).on("success", function (doc) {
- if (doc == 0) {
- if (guideName === "" || !guideName.replace(/\s/g, '').length) {
- console.log("The guidename is either NULL or just whitespace");
- error = 1;
- res.send("false");
- }
- else {
- if (guideName.length > 50) {
- console.log("The guidename is too long");
- error = 1;
- res.send("false");
- }
- else {
- var check = sendChampsArrayString.some(function (el) {
- return el !== null;
- }); // true
- if (check == true) {
- var guideId = database.get("guideId");
- guideId.find({}).on("success", function (doc) {
- if (doc == 0) {
- console.log("Oops");
- }
- else {
- var id = doc[0].id;
- var currentdate = new Date();
- var utcUser = currentdate.getTime();
- guides.insert({"guideName":guideName,"by":sess.user,"userUTC":utcUser,"likesLog":[{"user":sess.user,"val":1}],"champs":sendChampsArrayString, "champNotes":notesTextArrayString,"itemsTrinkets":itemsAndTrinketArrayString,"gamePlay":gamePlayArrayString,likes:1,"guideId":id,"roles":["Top","Jungle","Mid","Adc","Support"],"userLiked":"true","userDisliked":null});
- guideId.findAndModify({query:{"id":id} , update:{"$set":{"id":id+1}}});
- res.send("true");
- }
- });
- }
- else {
- res.send("false");
- }
- }
- }
- }
- else {
- res.send("false");
- }
- });
- });
- app.get("/showItemSugg", function (req, res) {
- sess = req.session;
- if (sess.user) {
- app.locals.signedYesOrNo = sess.user;
- }
- else {
- }
- var input = req.query.input;
- var itemArrayToUser = [];
- for (var i = 0;i<itemsArrayKeyUser.length;i++) {
- if (itemsArrayValueUser[i].toLowerCase().indexOf(input.toLowerCase()) > -1) {
- itemArrayToUser.push(itemsArrayKeyUser[i]);
- }
- }
- res.send(itemArrayToUser);
- });
- app.post("/upvote", function (req, res) {
- sess = req.session;
- if (sess.user) {
- app.locals.signedYesOrNo = sess.user;
- }
- else {
- }
- if (!sess.user) {
- res.send("login");
- }
- else {
- var upvoteId = req.body.upvoteId;
- var guides = database.get("guides");
- var upvoteError = 0;
- console.log(upvoteId);
- guides.find({"guideId":Number(upvoteId)}).on("success", function (doc) {
- for (var i = 0;i<doc[0].likesLog.length;i++) {
- if (doc[0].likesLog[i].val == "1" && doc[0].likesLog[i].user == sess.user) {
- console.log("YOU CAN't UPVOPTE YOU FUCKING RETARD");
- upvoteError = 1;
- break;
- }
- else if (doc[0].likesLog[i].val == "-1" && doc[0].likesLog[i].user == sess.user) {
- upvoteError = 2;
- }
- }
- if (upvoteError == 0) {
- var newNum = doc[0].likes + 1;
- guides.update({"guideId":Number(upvoteId)},{"$push":{likesLog:{"user":sess.user,"val":1}}});
- guides.update({"guideId":Number(upvoteId)},{ "$set" : {"likes": newNum}});
- guides.update({"guideId":Number(upvoteId)}, {"$set":{"userLiked":"true"}});
- console.log("You upvoted that isn't really nice");
- res.send(JSON.stringify({likes:newNum,newImg:"true"}));
- }
- else if (upvoteError == 1) {
- var newNum = doc[0].likes - 1;
- guides.update({"guideId":Number(upvoteId)},{"$pull":{"likesLog":{"user":sess.user}}});
- guides.update({"guideId":Number(upvoteId)},{"$set":{"likes":newNum}});
- guides.update({"guideId":Number(upvoteId)}, {"$set":{"userLiked":null}});
- res.send(JSON.stringify({likes:newNum,backToNormal:"true"}));
- }
- else if (upvoteError == 2) {
- console.log("You are on error 2");
- var newNum = doc[0].likes + 2;
- guides.update({"guideId":Number(upvoteId),"likesLog.user":sess.user},{"$set":{"likesLog.$.val":1}});
- guides.update({"guideId":Number(upvoteId)},{ "$set" : {"likes": newNum}});
- guides.update({"guideId":Number(upvoteId)}, {"$set":{"userLiked":"true"}});
- guides.update({"guideId":Number(upvoteId)}, {"$set":{"userDisliked":null}});
- res.send(JSON.stringify({likes:newNum,newImg:"true"}));
- }
- });
- }
- });
- app.post("/downvote", function (req, res) {
- sess = req.session;
- if (sess.user) {
- app.locals.signedYesOrNo = sess.user;
- }
- else {
- }
- if (!sess.user) {
- res.send("login");
- }
- else {
- var downvoteError = 0;
- var downvoteId = req.body.downvoteId;
- var guides = database.get("guides");
- guides.find({"guideId":Number(downvoteId)}).on("success", function (doc) {
- for (var i = 0;i<doc[0].likesLog.length;i++) {
- if (doc[0].likesLog[i].val == "-1" && doc[0].likesLog[i].user == sess.user) {
- console.log("YOU CANNOT UPLOAD");
- downvoteError = 1;
- break;
- }
- else if (doc[0].likesLog[i].val == "1" && doc[0].likesLog[i].user == sess.user) {
- downvoteError = 2;
- break;
- }
- }
- if (downvoteError == 0) {
- var newNum = doc[0].likes -1;
- guides.update({"guideId":Number(downvoteId)},{"$push":{likesLog:{"user":sess.user,"val":-1}}});
- guides.update({"guideId":Number(downvoteId)},{ "$set" : {"likes": newNum}});
- guides.update({"guideId":Number(downvoteId)}, {"$set":{"userDisliked":"true"}});
- console.log("YOUR UPVOTE GOT ADDEED TO THE LIKESLOG LIST");
- res.send(JSON.stringify({likes:newNum,newImg:"true"}));
- }
- else if (downvoteError == 1) {
- var newNum = doc[0].likes + 1;
- guides.update({"guideId":Number(downvoteId)},{"$pull":{"likesLog":{"user":sess.user}}});
- guides.update({"guideId":Number(downvoteId)},{"$set":{"likes":newNum}});
- guides.update({"guideId":Number(downvoteId)}, {"$set":{"userDisliked":null}});
- res.send(JSON.stringify({likes:newNum,backToNormal:"true"}));
- }
- else if (downvoteError == 2) {
- var newNum = doc[0].likes + -2;
- guides.update({"guideId":Number(downvoteId),"likesLog.user":sess.user},{"$set":{"likesLog.$.val":-1}});
- guides.update({"guideId":Number(downvoteId)},{ "$set" : {"likes": newNum}});
- guides.update({"guideId":Number(downvoteId)}, {"$set":{"userDisliked":"true"}});
- guides.update({"guideId":Number(downvoteId)}, {"$set":{"userLiked":null}});
- res.send(JSON.stringify({likes:newNum,newImg:"true"}));
- }
- });
- }
- });
- app.get("/guide", function (req, res) {
- sess = req.session;
- if (sess.user) {
- app.locals.signedYesOrNo = sess.user;
- }
- else {
- }
- var gId = req.query.id;
- if (!gId) {
- console.log("Please put in paramater");
- res.redirect("back");
- }
- else {
- var guides = database.get("guides");
- guides.find({"guideId":Number(gId)}).on("success", function (doc) {
- if (doc == 0) {
- console.log(doc);
- res.redirect("back");
- }
- else {
- var likesHome = null;
- var dislikesHome = null;
- var obj = doc[0].likesLog.filter(function (obj) {
- return obj.user === sess.user;
- })[0];
- if (obj) {
- if (obj.val == 1) {
- likesHome = "true";
- }
- else if (obj.val == -1) {
- dislikesHome = "true";
- }
- }
- else {
- console.log("Wocka Flocka Flamage");
- }
- res.render("guide", {guide:doc[0], likes:likesHome,dislikes:dislikesHome});
- }
- });
- }
- });
- //SignupProc route
- app.post("/signupProc", function (req, res) {
- sess = req.session;
- if (sess.user) {
- app.locals.signedYesOrNo = sess.user;
- }
- else {
- }
- var username = req.body.username; //Username the client entered
- var password = req.body.password; //Password the client entered
- if (username === "" || password === "") {
- res.redirect("/signup");
- }
- else {
- var users = database.get("users"); //Checks for the users table
- var account = database.get("account");
- users.find({"name":username}).on('success', function (doc) {
- if (doc == 0) {
- users.insert({"name":username,"password":password});
- account.insert({"name":username, "profilePic":"profile_default.png"});
- sess.user = username;
- res.redirect("/");
- }
- else {
- sess.failLogin = "Failed Login";
- res.redirect("/signup");
- }
- });
- }
- });
- //Sign in route
- app.post("/signinProc", function (req, res) {
- sess = req.session;
- if (sess.user) {
- app.locals.signedYesOrNo = sess.user;
- }
- else {
- }
- var username = req.body.username;
- var password = req.body.password;
- var users = database.get("users");
- users.find({name:username}).on("success", function (doc) {
- if (doc == 0) {
- console.log("This user does not exist");
- }
- else {
- if (doc[0].password == password) {
- sess.user = username;
- res.redirect("/");
- }
- else {
- console.log("it doesn't exist");
- }
- }
- });
- });
- //routes end here
- //404 custom message
- app.use(function (req, res) {
- res.status(404);
- res.render("404", {layout:"error"});
- });
- //end of 404 message
- //500 custom message
- app.use(function (req, res) {
- res.status(500);
- res.render("500", {layout:"error"});
- });
- //end of 500 message
- //log message for terminal
- app.listen(app.get("port"),function () {
- console.log("Application started");
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement