This commit is contained in:
Max Hunt 2020-05-17 00:09:20 +01:00
parent 4263d9b7ba
commit cb69e20e3b
7 changed files with 169 additions and 43 deletions

View File

@ -53,25 +53,16 @@ app.get('/search', function(request, responce){
if (request.query.search) {
let sQuery = request.query.search.toLowerCase()
dbRef.orderByChild("status").equalTo("on-sale").once('value', function(snapshot){
var data = {
'x': {desc: '',holder: '',id: 999,img: '',location: '',name: 'Nothing found 😢',owner: '',price: '',public: '',stock: ''},
}
var data = {'x': {name: 'Nothing found 😢',price: ''}}
if (snapshot.val()) {
data = snapshot.val()
var sResults = [{desc: '',holder: '',id: 999,img: '',location: '',name: 'Nothing found 😢',owner: '',price: '',public: '',stock: ''}]
var sResults = [{name: 'Nothing found 😢',price: ''}]
var keys = Object.keys(data)
keys.forEach(key => {
if (data[key].name.toLowerCase().includes(sQuery) || data[key].desc.toLowerCase().includes(sQuery)) {
sResults[key] = data[key]
console.log(sResults)
}
if (data[key].name.toLowerCase().includes(sQuery) || data[key].desc.toLowerCase().includes(sQuery)) {sResults[key] = data[key]}
})
if (Object.keys(sResults).length > 1) {
delete sResults[0]
}
console.log(sResults)
if (Object.keys(sResults).length > 1) {delete sResults[0]}
responce.render('search.ejs', {products: sResults})
}
else {responce.render('search.ejs', {products: data})}
@ -79,9 +70,7 @@ app.get('/search', function(request, responce){
}
else {
dbRef.orderByChild("status").equalTo("on-sale").once('value', function(snapshot){
var data = {
'x': {desc: '',holder: '',id: 999,img: '',location: '',name: 'Nothing found 😢',owner: '',price: '',public: '',stock: ''},
}
var data = {'x': {name: 'Nothing found 😢',price: ''}}
if (snapshot.val()) {data = snapshot.val()}
responce.render('search.ejs', {products: data})
})
@ -202,7 +191,8 @@ app.get('/product', function(request, responce){
var keys = Object.keys(vals)
uData = vals[keys[0]]
sellerName = uData.fName + " " + uData.lName
responce.render('product.ejs', {item:data, key:request.query.productid, seller:sellerName})
sellerDBID = keys[0]
responce.render('product.ejs', {item:data, key:request.query.productid, seller:{name:sellerName, dbid:sellerDBID}})
})
.catch(e => {console.log(e)})
}
@ -216,6 +206,58 @@ app.get('/product', function(request, responce){
}
})
app.get('/user-profile', function(request, responce){
if (request.query.dbid) {
var dbRef = database.ref("/users/" + request.query.dbid)
dbRef.once('value', function(snapshot){
user = snapshot.val()
if (user){
let productsRef = database.ref("/products")
let userProfile = {
name: user.fName + " " + user.lName,
location: user.address,
rating: "WIP",
startDate: "WIP",
pPic: user.pPic
}
productsRef.orderByChild("owner").equalTo(user.UID).once('value', function(snapshot){
if (snapshot.exists()) {
let allProductsDict = snapshot.val()
let allProductsKeys = Object.keys(allProductsDict)
let filteredKeys = allProductsKeys.filter(function( obj ) {
return allProductsDict[obj].status == 'on-sale';
})
let filteredProducts = {"0":{img: '',name: 'Nothing listed 😢',price: ''}}
filteredKeys.forEach(function(key){filteredProducts[key] = allProductsDict[key]})
if (Object.keys(filteredProducts).length > 1) {delete filteredProducts["0"]}
responce.render('user-profile.ejs', {userProducts:filteredProducts, user:userProfile})
} else {
responce.render('user-profile.ejs', {userProducts:[], user:userProfile})
}
})
.catch(e => {
console.log(e)
responce.render('404.ejs')
})
}
else {
responce.render('404.ejs')
}
})
.catch(e => {
console.log(e)
responce.render('404.ejs')
})
}
else {
responce.render('404.ejs')
}
})
app.get('/registration', function(request, responce){
responce.render('user-registration.ejs')
})
@ -291,8 +333,7 @@ app.post('/request-api', async function(request, responce){
let buyerName = buyer.fName + ' ' + buyer.lName
let buyerEmail = buyer.email
let content = contentMaker(sellerName, buyerName, buyerEmail, productName, pid, bMsg)
let rsp = sendEmail(sellerEmail, content)
console.log(rsp)
sendEmail(sellerEmail, content)
responce.send({success:true, error:null})
} else {
responce.send({success:false, error:'Unregistered user!'})

View File

@ -846,8 +846,8 @@ input:focus, textarea:focus, select:focus{
width: 100%;
height: 100%;
}
@media (prefers-color-scheme: dark) {
/* DARK MODE SUPPORT: */
/* @media (prefers-color-scheme: dark) {
body, .page, main, .navbar {
background: #222222;
}
@ -855,4 +855,4 @@ input:focus, textarea:focus, select:focus{
background: rgb(20, 20, 20);
box-shadow: none;
}
}
} */

File diff suppressed because one or more lines are too long

View File

@ -445,6 +445,13 @@ function fileAddSequence(file){
}
}
function contactSeller() {
const cBtn = document.getElementById('contact-btn')
cBtn.innerHTML = "Unsupported, contact through product listing"
cBtn.setAttribute('style', "width:410px; transition: 0.7s; background:#FFAAAA; color:gray;")
cBtn.disabled = true
}
try {
var addressField = document.getElementById("shippingaddressinput")
addressField.addEventListener("keyup", function(event) {

View File

@ -7,7 +7,7 @@
<div class="product-page-img"><img class="dyn-img" src="media/noimage.png" title="<%= item.img %>"></div>
<div class="product-page-info">
<h2><%= item.name %> </h2>
<p>Seller: <%= seller %></p>
<p>Seller: <a href="user-profile?dbid=<%= seller.dbid %>"><%= seller.name %></a></p>
<p>Location: <%= item.location %></p>
<p>Quantity: <%= item.stock %></p>
<p>Price: £<%= item.price %></p>

View File

@ -0,0 +1,37 @@
<%- include("partials/header") %>
<div id="api-response" class="purchase-message" style="display: none;color: #DD0000"></div>
<div class="product-page-container">
<div class="product-page-info-container">
<div class="product-page-img"><img class="dyn-img" src="media/noimage.png" title="<%= user.pPic %>"></div>
<div class="product-page-info">
<h2><%= user.name %> </h2>
<p>Member since <%= user.startDate %></p>
<p>Location: <%= user.location %></p>
<p>Rating: <%= user.rating %></p>
<p></p>
<input id="sMsg" type="text" placeholder="Your message" style="display: none;">
<button onclick={contactSeller()} id="contact-btn">Contact</button>
</div>
</div>
<div class="products">
<p>Products on sale</p>
<div class="my-products-container">
<% var keys = Object.keys(userProducts) %>
<% keys.forEach(function(key){ %>
<div class="my-product-container">
<img class="dyn-img" onclick={window.location.replace('product?productid=<%=key%>')} title="<%= userProducts[key].img %>" alt="img" src="media/var.png">
<div class="my-product-details-container">
<p class="top"><%= userProducts[key].name%></p>
<p class="middle-top"></p>
<p class="middle-bottom"></p>
<p class="bottom">£ <%= userProducts[key].price%></p>
</div>
</div>
<% }) %>
</div>
</div>
</div>
<div class="space"></div>
</div>
</main>
<%- include("partials/footer") %>

View File

@ -51,25 +51,16 @@ app.get('/search', function(request, responce){
if (request.query.search) {
let sQuery = request.query.search.toLowerCase()
dbRef.orderByChild("status").equalTo("on-sale").once('value', function(snapshot){
var data = {
'x': {desc: '',holder: '',id: 999,img: '',location: '',name: 'Nothing found 😢',owner: '',price: '',public: '',stock: ''},
}
var data = {'x': {name: 'Nothing found 😢',price: ''}}
if (snapshot.val()) {
data = snapshot.val()
var sResults = [{desc: '',holder: '',id: 999,img: '',location: '',name: 'Nothing found 😢',owner: '',price: '',public: '',stock: ''}]
var sResults = [{name: 'Nothing found 😢',price: ''}]
var keys = Object.keys(data)
keys.forEach(key => {
if (data[key].name.toLowerCase().includes(sQuery) || data[key].desc.toLowerCase().includes(sQuery)) {
sResults[key] = data[key]
console.log(sResults)
}
if (data[key].name.toLowerCase().includes(sQuery) || data[key].desc.toLowerCase().includes(sQuery)) {sResults[key] = data[key]}
})
if (Object.keys(sResults).length > 1) {
delete sResults[0]
}
console.log(sResults)
if (Object.keys(sResults).length > 1) {delete sResults[0]}
responce.render('search.ejs', {products: sResults})
}
else {responce.render('search.ejs', {products: data})}
@ -77,9 +68,7 @@ app.get('/search', function(request, responce){
}
else {
dbRef.orderByChild("status").equalTo("on-sale").once('value', function(snapshot){
var data = {
'x': {desc: '',holder: '',id: 999,img: '',location: '',name: 'Nothing found 😢',owner: '',price: '',public: '',stock: ''},
}
var data = {'x': {name: 'Nothing found 😢',price: ''}}
if (snapshot.val()) {data = snapshot.val()}
responce.render('search.ejs', {products: data})
})
@ -200,7 +189,8 @@ app.get('/product', function(request, responce){
var keys = Object.keys(vals)
uData = vals[keys[0]]
sellerName = uData.fName + " " + uData.lName
responce.render('product.ejs', {item:data, key:request.query.productid, seller:sellerName})
sellerDBID = keys[0]
responce.render('product.ejs', {item:data, key:request.query.productid, seller:{name:sellerName, dbid:sellerDBID}})
})
.catch(e => {console.log(e)})
}
@ -214,6 +204,58 @@ app.get('/product', function(request, responce){
}
})
app.get('/user-profile', function(request, responce){
if (request.query.dbid) {
var dbRef = database.ref("/users/" + request.query.dbid)
dbRef.once('value', function(snapshot){
user = snapshot.val()
if (user){
let productsRef = database.ref("/products")
let userProfile = {
name: user.fName + " " + user.lName,
location: user.address,
rating: "WIP",
startDate: "WIP",
pPic: user.pPic
}
productsRef.orderByChild("owner").equalTo(user.UID).once('value', function(snapshot){
if (snapshot.exists()) {
let allProductsDict = snapshot.val()
let allProductsKeys = Object.keys(allProductsDict)
let filteredKeys = allProductsKeys.filter(function( obj ) {
return allProductsDict[obj].status == 'on-sale';
})
let filteredProducts = {"0":{img: '',name: 'Nothing listed 😢',price: ''}}
filteredKeys.forEach(function(key){filteredProducts[key] = allProductsDict[key]})
if (Object.keys(filteredProducts).length > 1) {delete filteredProducts["0"]}
responce.render('user-profile.ejs', {userProducts:filteredProducts, user:userProfile})
} else {
responce.render('user-profile.ejs', {userProducts:[], user:userProfile})
}
})
.catch(e => {
console.log(e)
responce.render('404.ejs')
})
}
else {
responce.render('404.ejs')
}
})
.catch(e => {
console.log(e)
responce.render('404.ejs')
})
}
else {
responce.render('404.ejs')
}
})
app.get('/registration', function(request, responce){
responce.render('user-registration.ejs')
})
@ -289,8 +331,7 @@ app.post('/request-api', async function(request, responce){
let buyerName = buyer.fName + ' ' + buyer.lName
let buyerEmail = buyer.email
let content = contentMaker(sellerName, buyerName, buyerEmail, productName, pid, bMsg)
let rsp = sendEmail(sellerEmail, content)
console.log(rsp)
sendEmail(sellerEmail, content)
responce.send({success:true, error:null})
} else {
responce.send({success:false, error:'Unregistered user!'})