Skip to content
This repository has been archived by the owner on Jan 27, 2021. It is now read-only.

Commit

Permalink
Implement fulfilment system
Browse files Browse the repository at this point in the history
  • Loading branch information
pjsilvestre committed Dec 2, 2019
1 parent 22c0111 commit 94cc401
Show file tree
Hide file tree
Showing 5 changed files with 311 additions and 101 deletions.
26 changes: 15 additions & 11 deletions express-app/routes/donation-form.js
Expand Up @@ -65,17 +65,19 @@ router.post('/', (req, res) => {
);
}

let requested = false;
let request_accepted = false;
let expired = false;
let fulfilled_donator = false;
let fulfilled_donatee = false;

let halal = req.body.halal ? true : false;
let kosher = req.body.kosher ? true : false;
let pescatarian = req.body.pescatarian ? true : false;
let vegan = req.body.vegan ? true : false;
let vegetarian = req.body.vegetarian ? true : false;
const requested = false;
const request_accepted = false;
const expired = false;
const fulfilled_donator = false;
const fulfilled_donatee = false;
const hidden_donator = false;
const hidden_donatee = false;

const halal = req.body.halal ? true : false;
const kosher = req.body.kosher ? true : false;
const pescatarian = req.body.pescatarian ? true : false;
const vegan = req.body.vegan ? true : false;
const vegetarian = req.body.vegetarian ? true : false;

// create payload to send to Firestore
let data = {
Expand All @@ -93,6 +95,8 @@ router.post('/', (req, res) => {
expired: expired,
fulfilled_donator: fulfilled_donator,
fulfilled_donatee: fulfilled_donatee,
hidden_donator: hidden_donator,
hidden_donatee: hidden_donatee,

halal: halal,
kosher: kosher,
Expand Down
56 changes: 54 additions & 2 deletions express-app/routes/my-donations.js
Expand Up @@ -118,9 +118,59 @@ router.post('/accept', (req, res) => {
unsubscribe();
});

/* POST my-donations page, deleting a donation, redirecting to my-donations*/
/* POST my-donations page, fulfilling a request, redirecting to my-donations */
router.post('/fulfill', (req, res) => {
let unsubscribe = firebase.auth().onAuthStateChanged(async user => {
if (!user) {
res.redirect('/');
} else {
try {
let donation_id = req.body.donation_id;
await database
.collection('donations')
.doc(donation_id)
.update({
fulfilled_donator: true,
});
} catch (error) {
res.render('index', { user: user, errorMessage: error });
}

res.redirect('/my-donations');
}
});

unsubscribe();
});

/* POST my-donations page, hiding a donation, redirecting to my-donations */
router.post('/hide', (req, res) => {
let unsubscribe = firebase.auth().onAuthStateChanged(async user => {
if (!user) {
res.redirect('/');
} else {
try {
let donation_id = req.body.donation_id;
await database
.collection('donations')
.doc(donation_id)
.update({
hidden_donator: true,
});
} catch (error) {
res.render('index', { user: user, errorMessage: error });
}

res.redirect('/my-donations');
}
});

unsubscribe();
});

/* POST my-donations page, deleting a donation, redirecting to my-donations */
router.post('/delete', (req, res) => {
firebase.auth().onAuthStateChanged(async user => {
let unsubscribe = firebase.auth().onAuthStateChanged(async user => {
if (!user) {
res.redirect('/');
} else {
Expand All @@ -139,6 +189,8 @@ router.post('/delete', (req, res) => {
}
}
});

unsubscribe();
});

module.exports = router;
52 changes: 51 additions & 1 deletion express-app/routes/my-requests.js
Expand Up @@ -91,7 +91,57 @@ router.get('/', (req, res) => {
unsubscribe();
});

/* POST my-requests page, cancelling a request, redirecting to my-requests*/
/* POST my-requests page, fulfilling a request, redirecting to my-requests */
router.post('/fulfill', (req, res) => {
let unsubscribe = firebase.auth().onAuthStateChanged(async user => {
if (!user) {
res.redirect('/');
} else {
try {
let donation_id = req.body.donation_id;
await database
.collection('donations')
.doc(donation_id)
.update({
fulfilled_donatee: true,
});
} catch (error) {
res.render('index', { user: user, errorMessage: error });
}

res.redirect('/my-requests');
}
});

unsubscribe();
});

/* POST my-requests page, hiding a request, redirecting to my-requests */
router.post('/hide', (req, res) => {
let unsubscribe = firebase.auth().onAuthStateChanged(async user => {
if (!user) {
res.redirect('/');
} else {
try {
let donation_id = req.body.donation_id;
await database
.collection('donations')
.doc(donation_id)
.update({
hidden_donatee: true,
});
} catch (error) {
res.render('index', { user: user, errorMessage: error });
}

res.redirect('/my-requests');
}
});

unsubscribe();
});

/* POST my-requests page, cancelling a request, redirecting to my-requests */
router.post('/cancel', (req, res) => {
let unsubscribe = firebase.auth().onAuthStateChanged(async user => {
if (!user) {
Expand Down
155 changes: 104 additions & 51 deletions express-app/views/my-donations.pug
Expand Up @@ -6,55 +6,108 @@ block content
div(class="container")
h1 Your Donations:
div(class="card-deck")

each donation in donations
if donation.requested && !donation.request_accepted
div(class="card text-center")
h5(class="card-header")=`${donation.food_item} requested by ${donation.donatee}!`
ul(class="list-group list-group-flush")
li(class="list-group-item")=`Amount: ${donation.amount}`
if donation.dietary_restrictions !== ""
li(class="list-group-item")=`${donation.dietary_restrictions}`
li(class="list-group-item")=`Meeting Point: ${donation.meeting_point}`
li(class="list-group-item")=`Pickup Date: ${donation.pickup_date}`
li(class="list-group-item")=`Expires: ${donation.expiration_date}`
div(class="card-footer")
form(action="/my-donations/accept" method="POST")
input(type="hidden" name="donation_id" value=donation.id)
button(type="submit" class="btn btn-warning") Accept Request
form(action=("/my-donations/delete") method="POST")
input(type="hidden" name="donation_id" value=donation.id)
button(type="submit" class="btn btn-danger") Delete Donation
else if donation.requested && donation.request_accepted
div(class="card text-center")
h5(class="card-header")=`${donation.food_item} requested by ${donation.donatee}!`
ul(class="list-group list-group-flush")
li(class="list-group-item")=`Amount: ${donation.amount}`
if donation.dietary_restrictions !== ""
li(class="list-group-item")=`${donation.dietary_restrictions}`
li(class="list-group-item")=`Meeting Point: ${donation.meeting_point}`
li(class="list-group-item")=`Pickup Date: ${donation.pickup_date}`
li(class="list-group-item")=`Expires: ${donation.expiration_date}`
div(class="card-footer")
form
input(type="hidden")
button(type="submit" class="btn btn-success") Fulfill Request
form(action=("/my-donations/delete") method="POST")
input(type="hidden" name="donation_id" value=donation.id)
button(type="submit" class="btn btn-danger") Delete Donation
else
div(class="card text-center")
h5(class="card-header")=`${donation.food_item}`
ul(class="list-group list-group-flush")
li(class="list-group-item")=`Amount: ${donation.amount}`
if donation.dietary_restrictions !== ""
li(class="list-group-item")=`${donation.dietary_restrictions}`
li(class="list-group-item")=`Meeting Point: ${donation.meeting_point}`
li(class="list-group-item")=`Pickup Date: ${donation.pickup_date}`
li(class="list-group-item")=`Expires: ${donation.expiration_date}`
div(class="card-footer")
form
input(type="hidden")
button(type="submit" class="btn btn-secondary" disabled) No Requests
form(action=("/my-donations/delete") method="POST")
input(type="hidden" name="donation_id" value=donation.id)
button(type="submit" class="btn btn-danger") Delete Donation

if !donation.hidden_donator

if donation.requested

if !donation.request_accepted

div(class="card text-center")
h5(class="card-header")=`${donation.food_item} requested by ${donation.donatee}!`
ul(class="list-group list-group-flush")
li(class="list-group-item")=`Amount: ${donation.amount}`
if donation.dietary_restrictions !== ""
li(class="list-group-item")=`${donation.dietary_restrictions}`
li(class="list-group-item")=`Meeting Point: ${donation.meeting_point}`
li(class="list-group-item")=`Pickup Date: ${donation.pickup_date}`
li(class="list-group-item")=`Expires: ${donation.expiration_date}`
div(class="card-footer")
form(action="/my-donations/accept" method="POST")
input(type="hidden" name="donation_id" value=donation.id)
button(type="submit" class="btn btn-warning") Accept Request
form(action="/my-donations/delete" method="POST")
input(type="hidden" name="donation_id" value=donation.id)
button(type="submit" class="btn btn-danger") Delete Donation

else if donation.request_accepted

if !donation.fulfilled_donator

div(class="card text-center")
h5(class="card-header")=`${donation.food_item} requested by ${donation.donatee}!`
ul(class="list-group list-group-flush")
li(class="list-group-item")=`Amount: ${donation.amount}`
if donation.dietary_restrictions !== ""
li(class="list-group-item")=`${donation.dietary_restrictions}`
li(class="list-group-item")=`Meeting Point: ${donation.meeting_point}`
li(class="list-group-item")=`Pickup Date: ${donation.pickup_date}`
li(class="list-group-item")=`Expires: ${donation.expiration_date}`
div(class="card-footer")
form(action="/my-donations/fulfill" method="POST")
input(type="hidden" name="donation_id" value=donation.id)
button(type="submit" class="btn btn-success") Fulfill Request
form(action=("/my-donations/delete") method="POST")
input(type="hidden" name="donation_id" value=donation.id)
button(type="submit" class="btn btn-danger") Delete Donation

else if donation.fulfilled_donator

if !donation.fulfilled_donatee

div(class="card text-center")
h5(class="card-header")=`${donation.food_item} requested by ${donation.donatee}!`
ul(class="list-group list-group-flush")
li(class="list-group-item")=`Amount: ${donation.amount}`
if donation.dietary_restrictions !== ""
li(class="list-group-item")=`${donation.dietary_restrictions}`
li(class="list-group-item")=`Meeting Point: ${donation.meeting_point}`
li(class="list-group-item")=`Pickup Date: ${donation.pickup_date}`
li(class="list-group-item")=`Expires: ${donation.expiration_date}`
div(class="card-footer")
form
input(type="hidden")
button(type="submit" class="btn btn-info" disabled) Waiting for donatee to fulfill...
form(action=("/my-donations/delete") method="POST")
input(type="hidden" name="donation_id" value=donation.id)
button(type="submit" class="btn btn-danger" disabled) Delete Donation

else if donation.fulfilled_donatee

div(class="card text-center")
h5(class="card-header")=`${donation.food_item} request by ${donation.donatee} fulfilled!`
ul(class="list-group list-group-flush")
li(class="list-group-item")=`Amount: ${donation.amount}`
if donation.dietary_restrictions !== ""
li(class="list-group-item")=`${donation.dietary_restrictions}`
li(class="list-group-item")=`Meeting Point: ${donation.meeting_point}`
li(class="list-group-item")=`Pickup Date: ${donation.pickup_date}`
li(class="list-group-item")=`Expires: ${donation.expiration_date}`
div(class="card-footer")
form
input(type="hidden")
button(type="submit" class="btn btn-success" disabled) Request fulfilled!
form(action=("/my-donations/hide") method="POST")
input(type="hidden" name="donation_id" value=donation.id)
button(type="submit" class="btn btn-danger") Hide Donation

else if !donation.requested

div(class="card text-center")
h5(class="card-header")=`${donation.food_item}`
ul(class="list-group list-group-flush")
li(class="list-group-item")=`Amount: ${donation.amount}`
if donation.dietary_restrictions !== ""
li(class="list-group-item")=`${donation.dietary_restrictions}`
li(class="list-group-item")=`Meeting Point: ${donation.meeting_point}`
li(class="list-group-item")=`Pickup Date: ${donation.pickup_date}`
li(class="list-group-item")=`Expires: ${donation.expiration_date}`
div(class="card-footer")
form
input(type="hidden")
button(type="submit" class="btn btn-secondary" disabled) No Requests
form(action=("/my-donations/delete") method="POST")
input(type="hidden" name="donation_id" value=donation.id)
button(type="submit" class="btn btn-danger") Delete Donation

0 comments on commit 94cc401

Please sign in to comment.