diff --git a/browser/js/common/factories/CartFactory.js b/browser/js/common/factories/CartFactory.js
index e1c3310..79a3afd 100644
--- a/browser/js/common/factories/CartFactory.js
+++ b/browser/js/common/factories/CartFactory.js
@@ -27,7 +27,7 @@ app.factory('CartFactory', function ($http, AuthService, StoreFCT, $localStorage
deleteFromCart: function (cake) {
return $http.delete('/api/cart/' + cake._id).then(function(response){
console.log('response', response);
- // return response;
+ return response;
});
},
calculateCart: function(cart){
diff --git a/browser/js/common/factories/OrderFactory.js b/browser/js/common/factories/OrderFactory.js
index 3a024d6..d256f88 100644
--- a/browser/js/common/factories/OrderFactory.js
+++ b/browser/js/common/factories/OrderFactory.js
@@ -1,14 +1,14 @@
app.factory('OrderFactory', function ($http, StoreFCT, AuthService, $localStorage, CartFactory, CakeFactory) {
return {
- createNewOrder: function (store, cakes, total) {
- return $http.post('/api/order/', { store : store, cakes : cakes, total : total }, function (response) {
+ createNewOrder: function (orderArray) {
+ return $http.post('/api/order/', { orderArray : orderArray }, function (response) {
console.log('response', response);
return response.data;
});
},
completeOrder: function (orderId, storeId) {
- return $http.put('/api/store/'+storeId+'/order/'+orderId+'/complete', {status: 'Complete'}, function (data) {
+ return $http.put('/api/store/'+storeId+'/admin/order/'+orderId+'/complete', {status: 'Complete'}, function (data) {
return data.data;
});
},
@@ -33,16 +33,6 @@ app.factory('OrderFactory', function ($http, StoreFCT, AuthService, $localStorag
if(!locCart[i]._id) customCakes.push(locCart[i])
if(locCart[i]._id) stockCakes.push(locCart[i])
}
- console.log("locCart preparsed", locCart)
- console.log("custom cakes parsed", customCakes)
- console.log("stock cakes parsed", stockCakes)
-
- //store custom cakes
- // CakeFactory.storeManyCakes(customCakes).then(function(customCakes){
- // console.log("customCakes returned from storeManyCakes",customCakes)
- // reCombinedCakes.push(customCakes)
- // })
-
}
cartParseSave($localStorage.cart)
diff --git a/browser/js/common/factories/reviewFactory.js b/browser/js/common/factories/reviewFactory.js
index ac74cc7..0cea6ba 100644
--- a/browser/js/common/factories/reviewFactory.js
+++ b/browser/js/common/factories/reviewFactory.js
@@ -1,21 +1,28 @@
app.factory('reviewFCT', function ($http, $localStorage, CartFactory, AuthService) {
var saveReview = function (reviewObj) {
- return $http.post('/api/review/', reviewObj, function (data) {
+ return $http.put('/api/review/', reviewObj, function (data) {
return data.data;
});
}
- var getUnwrittenReviews = function (userId) {
- return $http.get('/api/review/unwritten', function (data) {
+ var getUnwrittenReviews = function () {
+ return $http.get('/api/review/unwritten').then(function (data) {
return data.data;
});
}
+ var getProductInfo = function (category, productId) {
+ return $http.get('/api/review/'+category+'/'+productId).then(function (data) {
+ return data.data;
+ });
+ }
+
return {
saveReview: saveReview,
- getUnwrittenReviews: getUnwrittenReviews
+ getUnwrittenReviews: getUnwrittenReviews,
+ getProductInfo: getProductInfo
};
});
diff --git a/browser/js/review/review.html b/browser/js/review/review.html
index f194e08..cb7da05 100644
--- a/browser/js/review/review.html
+++ b/browser/js/review/review.html
@@ -1 +1,2 @@
+
Review For {{store}}'s {{itemName}}
\ No newline at end of file
diff --git a/browser/js/review/review.js b/browser/js/review/review.js
index f656f98..8914d2a 100644
--- a/browser/js/review/review.js
+++ b/browser/js/review/review.js
@@ -1,7 +1,7 @@
app.config(function ($stateProvider) {
- $stateProvider.state('reviewProduct', {
- url:'/:userId/review/:type/:productId',
- templateUrl: 'js/review/review.html',
+ $stateProvider.state('reviewList', {
+ url:'/review/',
+ templateUrl: 'js/review/reviewList.html',
controller: 'reviewFormCtrl',
resolve: {
isAuthenticated: function (AuthService) {
@@ -9,23 +9,44 @@ app.config(function ($stateProvider) {
}
}
});
+
+ $stateProvider.state('reviewItem', {
+ url: '/review/:category/:reviewId/:productId',
+ templateUrl: 'js/review/review.html',
+ controller: 'reviewProductCtrl'
+ });
});
app.controller('reviewFormCtrl', function ($scope, AuthService, $state, $stateParams, reviewFCT) {
- // if(isAuthenticated()) {
- // console.log('INSIDE');
- // }
- // } else {
- // $state.go('login');
- // }
- $scope.review = {};
- $scope.review.user = $stateParams.userId;
- $scope.review.productId = $stateParams.productId;
- $scope.review.category = $stateParams.type;
+ reviewFCT.getUnwrittenReviews().then(function (data) {
+ $scope.reviewList = data;
+ });
+ // $scope.review = {};
+ // $scope.review.user = $stateParams.userId;
+ // $scope.review.productId = $stateParams.productId;
+ // $scope.review.category = $stateParams.type;
+});
- $scope.saveReview = function (review) {
- console.log('review', review);
+app.controller('reviewProductCtrl', function ($scope, $state, $stateParams, reviewFCT) {
+ reviewFCT.getProductInfo($stateParams.category, $stateParams.productId).then(function (data) {
+ $scope.itemName = data.name;
+ $scope.store = data.storeId.name;
+ console.log('DATA', data);
+ });
- // reviewFCT.
+ $scope.review = {
+ reviewId: $stateParams.reviewId,
+ category: $stateParams.category,
+ productId: $stateParams.productId
+ }
+
+ $scope.saveReview = function (review) {
+ reviewFCT.saveReview(review).then(function (data) {
+ // console.log('FINISHED AND IN RPCTRL');
+ reviewFCT.getUnwrittenReviews().then(function (data) {
+ if(data.length == 0) $state.go('store');
+ else $state.go('reviewList');
+ });
+ });
}
});
\ No newline at end of file
diff --git a/browser/js/review/reviewList.html b/browser/js/review/reviewList.html
new file mode 100644
index 0000000..17e9715
--- /dev/null
+++ b/browser/js/review/reviewList.html
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/browser/scss/directives/navbar.scss b/browser/scss/directives/navbar.scss
index 53f90c0..1a89ff5 100644
--- a/browser/scss/directives/navbar.scss
+++ b/browser/scss/directives/navbar.scss
@@ -18,6 +18,7 @@ navbar {
.nav > li > a {
cursor: pointer;
+ text-shadow: 2px 2px #000;
&.active {
color: #f30046;
}
diff --git a/server/app/routes/admin/order/index.js b/server/app/routes/admin/order/index.js
index e56d8b4..cba209b 100644
--- a/server/app/routes/admin/order/index.js
+++ b/server/app/routes/admin/order/index.js
@@ -5,10 +5,8 @@ var _ = require('lodash');
var body = require('body-parser');
var mongoose = require('mongoose');
var Promise = require('bluebird');
-var deepPopulate = require('mongoose-deep-populate');
var OrderModel = mongoose.model('Order');
var ReviewModel = mongoose.model('Review');
-var CakeModel = mongoose.model('Cake');
router.get('/', function (req, res, next) {
// status: {$inc: ['Created','Processing','Completed']} --
@@ -21,29 +19,32 @@ router.get('/', function (req, res, next) {
});
router.put('/:orderId/complete', function (req, res, next) {
- Order.findByIdAndUpdate(req.params.orderId, {$set: { status: req.body.status }})
+ OrderModel.findByIdAndUpdate(req.params.orderId, {$set: { status: req.body.status }})
.populate('items')
.exec()
.then(function (order) {
- console.log('USER ID', req.user._id);
- console.log('COMPLETED ORDER', order);
order.items.forEach( function (item) {
-
splitItemIntoReviews(item, order.customer);
});
}).then(function () {
res.send('YAY');
-
});
});
var splitItemIntoReviews = function (item, customerId) {
-
var createOpenReviews = function(array) {
- console.log('ITEM ID ARRAY', array);
- array.forEach(function (item) {
+ array.forEach(function (item, index) {
+ var cat;
var nRev = new ReviewModel();
nRev.user = customerId;
+ if(index == 0) {
+ cat = 'cake';
+ } else if(index == 1) {
+ cat = 'icing';
+ } else {
+ cat = 'filling';
+ }
+ nRev.category = cat;
nRev.productId = item;
return nRev.save();
});
@@ -51,14 +52,17 @@ var splitItemIntoReviews = function (item, customerId) {
var fillArray = [item._id, item.icing];
item.layers.forEach(function (layer) {
- var exists = false;
- for (var i = 0; i < fillArray.length ; i++) {
- if(layer.filling.toString() === fillArray[i]) {
- fillArray[i]
- exists = true;
+ if(layer.filling !== null) {
+ var exists = false;
+ for (var i = 0; i < fillArray.length ; i++) {
+ if(layer.filling.toString() === fillArray[i]) {
+ fillArray[i]
+ exists = true;
+ }
}
+
+ if(!exists) fillArray.push(layer.filling.toString());
}
- if(!exists) fillArray.push(layer.filling.toString());
});
return createOpenReviews(fillArray);
}
\ No newline at end of file
diff --git a/server/app/routes/cake/index.js b/server/app/routes/cake/index.js
index 474789b..cfdc685 100644
--- a/server/app/routes/cake/index.js
+++ b/server/app/routes/cake/index.js
@@ -9,11 +9,13 @@ var Cake = mongoose.model('Cake');
router.get('/:cakeid', function (req, res, next) {
- Cake.findById(req.params.cakeid, function (err, cake) {
- if(err) return next(err);
+ Cake.findById(req.params.cakeid)
+ .populate('shape icing layers')
+ .populate('storeId')
+ .deepPopulate('layers.filling').exec().then(function (cake) {
+ // if(err) return next(err);
res.send(cake);
});
-
});
diff --git a/server/app/routes/cart/index.js b/server/app/routes/cart/index.js
index 8fb1637..ee1620c 100644
--- a/server/app/routes/cart/index.js
+++ b/server/app/routes/cart/index.js
@@ -88,7 +88,10 @@ router.delete('/:id', function (req, res, next) {
Cart.findOne({ user : req.user._id }).exec().then(function (userCart) {
userCart.cakes.remove(cake);
- return userCart.save();
+ userCart.save().then(function (newCart) {
+ console.log('GOT HERE');
+ res.send(newCart);
+ });
}, next);
diff --git a/server/app/routes/order/index.js b/server/app/routes/order/index.js
index d888d27..ec425ce 100644
--- a/server/app/routes/order/index.js
+++ b/server/app/routes/order/index.js
@@ -14,28 +14,35 @@ var Cart = mongoose.model('Cart');
router.post('/', function (req, res, next) {
-
- var newOrder = new Order({
- customer: req.user._id,
- storeId: req.body.store,
- total: req.body.total,
- items: req.body.cakes
+ console.log('ARRAY', req.body.orderArray);
+
+ var newOrder = new Order({
+ customer: req.user._id,
+ storeId: orderObj.storeId,
+ total: orderObj.total,
+ items: orderObj.cakes
+ });
+
+ // newOrder.save(function (err) {
+ // if (err) return next(err);
+ // Cart.findOne({ userId: req.user.userId }).exec().then(function (cart){
+ // cart.remove().then(function(){
+ // res.send("cart deleted after checkout")
+ // });
+ // });
+ newOrder.save(function (err) {
+ if (err) return next(err);
+ Cart.findOne({ userId: req.user.userId }).exec().then(function(cart){
+ return cart.remove()
+ }).then(function(){
+ return Cart.create({user: req.user._id})
+ }).then(function(cart){
+ console.log("cart was created in order index.js")
+ res.send("cart deleted after checkout")
+ }, function(err){
+ console.log("orders index.js line 32 error!", err)
+ });
+ });
});
-
- newOrder.save(function (err) {
- if (err) return next(err);
- Cart.findOne({ userId: req.user.userId }).exec().then(function(cart){
- return cart.remove()
- }).then(function(){
- return Cart.create({user: req.user._id})
- }).then(function(cart){
- console.log("cart was created in order index.js")
- res.send("cart deleted after checkout")
- }, function(err){
- console.log("orders index.js line 32 error!", err)
- })
-
- })
-
-
});
+
diff --git a/server/app/routes/review/index.js b/server/app/routes/review/index.js
index 3217878..7d42dd0 100644
--- a/server/app/routes/review/index.js
+++ b/server/app/routes/review/index.js
@@ -5,14 +5,28 @@ var _ = require('lodash');
var body = require('body-parser');
var mongoose = require('mongoose');
var CakeModel = mongoose.model('Cake');
+var FillingModel = mongoose.model('Filling');
+var IcingModel = mongoose.model('Icing');
var StoreModel = mongoose.model('Store');
var ReviewModel = mongoose.model('Review');
var Promise = require('bluebird');
+
+router.put('/', function (req, res, next) {
+ console.log('HERE');
+ ReviewModel.findByIdAndUpdate(req.body.reviewId, {$set: {shortSummary: req.body.shortSummary, description: req.body.description, stars: req.body.rating, reviewCompleted: true}})
+ .exec().then(function (review) {
+ console.log('NEW REVIEW', review);
+ res.send(review);
+ });
+});
+
+
router.get('/unwritten', function (req, res, next) {
ReviewModel.find({user: req.user._id, reviewCompleted: false})
.exec().then(function (reviewArr) {
+ console.log('UNWRITTEN', reviewArr);
res.send(reviewArr);
});
});
@@ -24,14 +38,32 @@ router.get('/:storeId', function (req, res, next) {
}).then(function (store) {
CakeModel.find({ storeId: store._id }).exec().then(function (cakes) {
res.send(cakes);
- });
+ })
});
});
+router.get('/cake/:productId', function (req, res, next) {
+ CakeModel.findById(req.params.productId).populate('storeId').exec().then(function (cake) {
+ res.send(cake);
+ });
+});
+router.get('/filling/:productId', function (req, res, next) {
+ FillingModel.findById(req.params.productId).populate('storeId').exec().then(function (filling) {
+ res.send(filling);
+ });
+});
-router.get('/', function (req, res, next) {
- StoreModel.find().exec().then(function (storeArr) {
- res.send(storeArr);
+router.get('/icing/:productId', function (req, res, next) {
+ IcingModel.findById(req.params.productId).populate('storeId').exec().then(function (icing) {
+ res.send(icing);
});
-});
\ No newline at end of file
+});
+
+
+
+// router.get('/', function (req, res, next) {
+// StoreModel.find().exec().then(function (storeArr) {
+// res.send(storeArr);
+// });
+// });
\ No newline at end of file
diff --git a/server/app/routes/storeCreate/index.js b/server/app/routes/storeCreate/index.js
index 85e364b..60a37e1 100644
--- a/server/app/routes/storeCreate/index.js
+++ b/server/app/routes/storeCreate/index.js
@@ -37,14 +37,14 @@ var createDefaults = function(storeId) {
{name: 'Rectangle', description: 'Rectangle Cake Shape Description', storeId: storeId }];
var fillingArr = [
- {name: 'Chocolate', description: 'Chocolate description', price: 20, storeId: storeId },
- {name: 'Vanilla', description: 'Vanilla description', price: 30, storeId: storeId },
- {name: 'Strawberry', description: 'Strawberry description', price: 40, storeId: storeId }];
+ {name: 'Chocolate Filling', description: 'Chocolate description', price: 20, storeId: storeId },
+ {name: 'Vanilla Filling', description: 'Vanilla description', price: 30, storeId: storeId },
+ {name: 'Strawberry Filling', description: 'Strawberry description', price: 40, storeId: storeId }];
var icingArr = [
- {name: 'Chocolate', description: 'Chocolate description', price: 5, storeId: storeId },
- {name: 'Vanilla', description: 'Vanilla description', price: 10, storeId: storeId },
- {name: 'Strawberry', description: 'Strawberry description', price: 15, storeId: storeId }];
+ {name: 'Chocolate Icing', description: 'Chocolate description', price: 5, storeId: storeId },
+ {name: 'Vanilla Icing', description: 'Vanilla description', price: 10, storeId: storeId },
+ {name: 'Strawberry Icing', description: 'Strawberry description', price: 15, storeId: storeId }];
var seedData = function(model, array) {
return model.create(array);