Update
This commit is contained in:
parent
4263d9b7ba
commit
cb69e20e3b
@ -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!'})
|
||||
|
||||
@ -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
@ -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) {
|
||||
|
||||
@ -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>
|
||||
|
||||
37
functions/views/user-profile.ejs
Normal file
37
functions/views/user-profile.ejs
Normal 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") %>
|
||||
79
server.js
79
server.js
@ -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!'})
|
||||
|
||||
Loading…
Reference in New Issue
Block a user