Update
This commit is contained in:
parent
4263d9b7ba
commit
cb69e20e3b
@ -53,25 +53,16 @@ app.get('/search', function(request, responce){
|
|||||||
if (request.query.search) {
|
if (request.query.search) {
|
||||||
let sQuery = request.query.search.toLowerCase()
|
let sQuery = request.query.search.toLowerCase()
|
||||||
dbRef.orderByChild("status").equalTo("on-sale").once('value', function(snapshot){
|
dbRef.orderByChild("status").equalTo("on-sale").once('value', function(snapshot){
|
||||||
var data = {
|
var data = {'x': {name: 'Nothing found 😢',price: ''}}
|
||||||
'x': {desc: '',holder: '',id: 999,img: '',location: '',name: 'Nothing found 😢',owner: '',price: '',public: '',stock: ''},
|
|
||||||
}
|
|
||||||
if (snapshot.val()) {
|
if (snapshot.val()) {
|
||||||
data = 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)
|
var keys = Object.keys(data)
|
||||||
|
|
||||||
keys.forEach(key => {
|
keys.forEach(key => {
|
||||||
if (data[key].name.toLowerCase().includes(sQuery) || data[key].desc.toLowerCase().includes(sQuery)) {
|
if (data[key].name.toLowerCase().includes(sQuery) || data[key].desc.toLowerCase().includes(sQuery)) {sResults[key] = data[key]}
|
||||||
sResults[key] = data[key]
|
|
||||||
console.log(sResults)
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
if (Object.keys(sResults).length > 1) {
|
if (Object.keys(sResults).length > 1) {delete sResults[0]}
|
||||||
delete sResults[0]
|
|
||||||
}
|
|
||||||
console.log(sResults)
|
|
||||||
responce.render('search.ejs', {products: sResults})
|
responce.render('search.ejs', {products: sResults})
|
||||||
}
|
}
|
||||||
else {responce.render('search.ejs', {products: data})}
|
else {responce.render('search.ejs', {products: data})}
|
||||||
@ -79,9 +70,7 @@ app.get('/search', function(request, responce){
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
dbRef.orderByChild("status").equalTo("on-sale").once('value', function(snapshot){
|
dbRef.orderByChild("status").equalTo("on-sale").once('value', function(snapshot){
|
||||||
var data = {
|
var data = {'x': {name: 'Nothing found 😢',price: ''}}
|
||||||
'x': {desc: '',holder: '',id: 999,img: '',location: '',name: 'Nothing found 😢',owner: '',price: '',public: '',stock: ''},
|
|
||||||
}
|
|
||||||
if (snapshot.val()) {data = snapshot.val()}
|
if (snapshot.val()) {data = snapshot.val()}
|
||||||
responce.render('search.ejs', {products: data})
|
responce.render('search.ejs', {products: data})
|
||||||
})
|
})
|
||||||
@ -202,7 +191,8 @@ app.get('/product', function(request, responce){
|
|||||||
var keys = Object.keys(vals)
|
var keys = Object.keys(vals)
|
||||||
uData = vals[keys[0]]
|
uData = vals[keys[0]]
|
||||||
sellerName = uData.fName + " " + uData.lName
|
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)})
|
.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){
|
app.get('/registration', function(request, responce){
|
||||||
responce.render('user-registration.ejs')
|
responce.render('user-registration.ejs')
|
||||||
})
|
})
|
||||||
@ -291,8 +333,7 @@ app.post('/request-api', async function(request, responce){
|
|||||||
let buyerName = buyer.fName + ' ' + buyer.lName
|
let buyerName = buyer.fName + ' ' + buyer.lName
|
||||||
let buyerEmail = buyer.email
|
let buyerEmail = buyer.email
|
||||||
let content = contentMaker(sellerName, buyerName, buyerEmail, productName, pid, bMsg)
|
let content = contentMaker(sellerName, buyerName, buyerEmail, productName, pid, bMsg)
|
||||||
let rsp = sendEmail(sellerEmail, content)
|
sendEmail(sellerEmail, content)
|
||||||
console.log(rsp)
|
|
||||||
responce.send({success:true, error:null})
|
responce.send({success:true, error:null})
|
||||||
} else {
|
} else {
|
||||||
responce.send({success:false, error:'Unregistered user!'})
|
responce.send({success:false, error:'Unregistered user!'})
|
||||||
|
|||||||
@ -846,8 +846,8 @@ input:focus, textarea:focus, select:focus{
|
|||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
}
|
}
|
||||||
|
/* DARK MODE SUPPORT: */
|
||||||
@media (prefers-color-scheme: dark) {
|
/* @media (prefers-color-scheme: dark) {
|
||||||
body, .page, main, .navbar {
|
body, .page, main, .navbar {
|
||||||
background: #222222;
|
background: #222222;
|
||||||
}
|
}
|
||||||
@ -855,4 +855,4 @@ input:focus, textarea:focus, select:focus{
|
|||||||
background: rgb(20, 20, 20);
|
background: rgb(20, 20, 20);
|
||||||
box-shadow: none;
|
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 {
|
try {
|
||||||
var addressField = document.getElementById("shippingaddressinput")
|
var addressField = document.getElementById("shippingaddressinput")
|
||||||
addressField.addEventListener("keyup", function(event) {
|
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-img"><img class="dyn-img" src="media/noimage.png" title="<%= item.img %>"></div>
|
||||||
<div class="product-page-info">
|
<div class="product-page-info">
|
||||||
<h2><%= item.name %> </h2>
|
<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>Location: <%= item.location %></p>
|
||||||
<p>Quantity: <%= item.stock %></p>
|
<p>Quantity: <%= item.stock %></p>
|
||||||
<p>Price: £<%= item.price %></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) {
|
if (request.query.search) {
|
||||||
let sQuery = request.query.search.toLowerCase()
|
let sQuery = request.query.search.toLowerCase()
|
||||||
dbRef.orderByChild("status").equalTo("on-sale").once('value', function(snapshot){
|
dbRef.orderByChild("status").equalTo("on-sale").once('value', function(snapshot){
|
||||||
var data = {
|
var data = {'x': {name: 'Nothing found 😢',price: ''}}
|
||||||
'x': {desc: '',holder: '',id: 999,img: '',location: '',name: 'Nothing found 😢',owner: '',price: '',public: '',stock: ''},
|
|
||||||
}
|
|
||||||
if (snapshot.val()) {
|
if (snapshot.val()) {
|
||||||
data = 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)
|
var keys = Object.keys(data)
|
||||||
|
|
||||||
keys.forEach(key => {
|
keys.forEach(key => {
|
||||||
if (data[key].name.toLowerCase().includes(sQuery) || data[key].desc.toLowerCase().includes(sQuery)) {
|
if (data[key].name.toLowerCase().includes(sQuery) || data[key].desc.toLowerCase().includes(sQuery)) {sResults[key] = data[key]}
|
||||||
sResults[key] = data[key]
|
|
||||||
console.log(sResults)
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
if (Object.keys(sResults).length > 1) {
|
if (Object.keys(sResults).length > 1) {delete sResults[0]}
|
||||||
delete sResults[0]
|
|
||||||
}
|
|
||||||
console.log(sResults)
|
|
||||||
responce.render('search.ejs', {products: sResults})
|
responce.render('search.ejs', {products: sResults})
|
||||||
}
|
}
|
||||||
else {responce.render('search.ejs', {products: data})}
|
else {responce.render('search.ejs', {products: data})}
|
||||||
@ -77,9 +68,7 @@ app.get('/search', function(request, responce){
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
dbRef.orderByChild("status").equalTo("on-sale").once('value', function(snapshot){
|
dbRef.orderByChild("status").equalTo("on-sale").once('value', function(snapshot){
|
||||||
var data = {
|
var data = {'x': {name: 'Nothing found 😢',price: ''}}
|
||||||
'x': {desc: '',holder: '',id: 999,img: '',location: '',name: 'Nothing found 😢',owner: '',price: '',public: '',stock: ''},
|
|
||||||
}
|
|
||||||
if (snapshot.val()) {data = snapshot.val()}
|
if (snapshot.val()) {data = snapshot.val()}
|
||||||
responce.render('search.ejs', {products: data})
|
responce.render('search.ejs', {products: data})
|
||||||
})
|
})
|
||||||
@ -200,7 +189,8 @@ app.get('/product', function(request, responce){
|
|||||||
var keys = Object.keys(vals)
|
var keys = Object.keys(vals)
|
||||||
uData = vals[keys[0]]
|
uData = vals[keys[0]]
|
||||||
sellerName = uData.fName + " " + uData.lName
|
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)})
|
.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){
|
app.get('/registration', function(request, responce){
|
||||||
responce.render('user-registration.ejs')
|
responce.render('user-registration.ejs')
|
||||||
})
|
})
|
||||||
@ -289,8 +331,7 @@ app.post('/request-api', async function(request, responce){
|
|||||||
let buyerName = buyer.fName + ' ' + buyer.lName
|
let buyerName = buyer.fName + ' ' + buyer.lName
|
||||||
let buyerEmail = buyer.email
|
let buyerEmail = buyer.email
|
||||||
let content = contentMaker(sellerName, buyerName, buyerEmail, productName, pid, bMsg)
|
let content = contentMaker(sellerName, buyerName, buyerEmail, productName, pid, bMsg)
|
||||||
let rsp = sendEmail(sellerEmail, content)
|
sendEmail(sellerEmail, content)
|
||||||
console.log(rsp)
|
|
||||||
responce.send({success:true, error:null})
|
responce.send({success:true, error:null})
|
||||||
} else {
|
} else {
|
||||||
responce.send({success:false, error:'Unregistered user!'})
|
responce.send({success:false, error:'Unregistered user!'})
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user