Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions browser/js/admin/cake/list.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,7 @@
<h1>Stock Cake List</h1>

<div ng-repeat="cake in cakeList">
{{cake | json}}
<h1>{{cake.name }} <span>- {{cake.price | currency}}</span></h1>
<img src="{{cake.image}}" style="float:left;">
<h5>Shape: {{ cake.shape._id }}</h5>
<h5>Type: {{ cake.type }}</h5>
<h5>Quantity: {{ cake.quantity }}</h5>
Expand Down
21 changes: 10 additions & 11 deletions browser/js/cart/cart.html
Original file line number Diff line number Diff line change
@@ -1,24 +1,23 @@
<h1>CART</h1>

<div ng-repeat="c in cart">
Name: {{ c.name }} </br>
Type: {{ c.type }} </br>
Shape: {{ c.shape }} </br>
Icing: {{ c.icing }} </br>
Quantity Ordered: {{c.numOrdered}} </br>
Price: ${{ c.price }} </br><br/>
<b>Name:</b> {{ c.name }} </br>
<b>Layers:</b> {{c.layerNum}} <br/>
<b>Shape:</b> {{ c.shape.name }} </br>
<b>Icing:</b> {{ c.icing.name }} </br>
<b>Quantity Ordered:</b> {{c.numOrdered}} </br>
<b>Price:</b> ${{ c.price }} </br><br/>
<button ng-click="removeCake(c)">Remove From Cart</button>
<hr>
</div>

<h2 ng-show = "cart.length === 0 ">Your Cart is Empty. We recommend the cake!</h2><br>

<hr>

TOTAL: ${{ price }}
<h2>TOTAL: ${{ price }}</h2>

<button ng-show = "currentStore !== undefined" ui-sref="storeViewProducts({storeId: currentStore._id})">Continue Shopping</button>
<button ng-show = "currentStore === undefined" ui-sref="store">Continue Shopping</button>
<button ng-click="">Edit Cart</button>
<button ng-click="checkout(cart)" ng-click="checkingOut = true">Checkout</button>
<button ng-click="calculateOrders(cart)">Calculate</button>


<!-- <pre>{{ localCart | json : 4 }}</pre> -->
54 changes: 31 additions & 23 deletions browser/js/cart/cart.js
Original file line number Diff line number Diff line change
Expand Up @@ -47,16 +47,19 @@ app.config(function ($stateProvider) {

app.controller('CartCtrl', function ($scope, CakeFactory, $state, $stateParams, $localStorage, CartFactory, OrderFactory, getCartOfCakes, AuthService, isAuthenticated) {

$scope.cart = getCartOfCakes;

$scope.cart = getCartOfCakes.map(function (cake) {
console.log('CAKE', cake);
var layNum = 0;
for(var i = 0; i < 3; i++) {
if(cake.layers[i].filling !== null) layNum++
}
cake.layerNum = layNum;
return cake;
});
$scope.localCart = $localStorage.cart

$scope.checkingOut = $localStorage.checkingOut

console.log('scope.cart', $scope.cart);

$scope.price = CartFactory.calculateCart($scope.cart);

$scope.currentStore = $localStorage.currentStore;

$scope.checkout = function (cart) {
Expand All @@ -66,42 +69,47 @@ app.controller('CartCtrl', function ($scope, CakeFactory, $state, $stateParams,
}

var store = cart[0].storeId;
if (AuthService.isAuthenticated()) {

var cakes = cart.map(function (cake) {
return cake._id;
});

console.log("arrayed cakes", cakes)
console.log("authenticated?", AuthService.isAuthenticated() )

if (AuthService.isAuthenticated()) {
OrderFactory.createNewOrder(store, cakes, $scope.price).then(function(order){
console.log(order)
delete $scope.cart
// $state.go()
})
OrderFactory.createNewOrder(calculateOrders($scope.cart)).then(function (order) {
console.log('order', order);
});
}

};

$scope.calculateOrders = function (cakeArray) {
$scope.removeCake = function (cake) {
CartFactory.deleteFromCart(cake).then(function (data) {
// $state.go('cart');
$scope.cart = $scope.cart.filter(function (theCake) {
console.log('THECAKE', theCake);
if(cake._id !== theCake._id) return true;
});
console.log('scope.cart', $scope.cart);
$scope.$digest();
});

}

var calculateOrders = function (cakeArray) {
var retArr = [];
var orderObj = function(storeId) {
this.storeId = storeId;
this.cakes = [];
this.total = 0;
}
cakeArray.forEach(function (cake) {
console.log('CAKE', cake);
if(!retArr.length) {
retArr.push(new orderObj(cake.storeId.toString()));
retArr.push(new orderObj(cake.storeId));
retArr[0].cakes.push(cake._id);
retArr[0].total += cake.price;
}
else {
var exists = false;
var index = null;
for(var i=0; i < retArr.length;i++) {
if(retArr[i].storeId === cake.storeId.toString()) {
if(retArr[i].storeId === cake.storeId) {
exists = true;
retArr[i].cakes.push(cake._id);
retArr[i].total += cake.price;
Expand All @@ -114,7 +122,7 @@ app.controller('CartCtrl', function ($scope, CakeFactory, $state, $stateParams,
}
}
});
console.log('ORDER ARRAY', retArr);
return retArr;
}


Expand Down
67 changes: 35 additions & 32 deletions browser/js/common/directives/navbar/navbar.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,45 +26,53 @@ app.directive('navbar', function ($rootScope, AuthService, AUTH_EVENTS, $state,
scope.numCartCakes = $rootScope.numCartCakes;
});

scope.items = [
// { label: 'Home', state: 'home' },
// { label: 'About', state: 'about' },
{ label: 'Admin', state: 'adminHome({storeId : user.storeId})', adminAuth: true },
{ label: 'Store', state: 'storeViewProducts' },
// { label: 'Tutorial', state: 'tutorial' },
// { label: 'Members Only', state: 'membersOnly', auth: true },
{ label: 'Cart', state: 'cart'}
];

// AuthService.getLoggedInUser().then(function (user) {
// // console.log('USER', user);
// if(user === null){
// scope.items.push({ label: 'Signup', state: 'signup' });
// } else {
// if(!user.storeId) {
// scope.items.push({ label: 'Create A Store', state: 'storeCreate', auth: true });
// scope.items = [
// // { label: 'Home', state: 'home' },
// // { label: 'About', state: 'about' },
// { label: 'Admin', state: 'adminHome({storeId : user.storeId})', adminAuth: true },
// { label: 'Store', state: 'storeViewProducts' },
// // { label: 'Tutorial', state: 'tutorial' },
// // { label: 'Members Only', state: 'membersOnly', auth: true },
// { label: 'Cart', state: 'cart'}
// ];

// // AuthService.getLoggedInUser().then(function (user) {
// // // console.log('USER', user);
// // if(user === null){
// // scope.items.push({ label: 'Signup', state: 'signup' });
// // } else {
// // if(!user.storeId) {
// // scope.items.push({ label: 'Create A Store', state: 'storeCreate', auth: true });

var calculateNavBar = function () {

var hasPendingReviews = function () {
return reviewFCT.getUnwrittenReviews().then(function (num) {
return num;
});
}
AuthService.getLoggedInUser().then(function (user) {
scope.items = [
{ label: 'Admin', state: 'adminHome({storeId : user.storeId})', adminAuth: true },
{ label: 'Store', state: 'store' },
{ label: 'Admin', state: 'adminHome({storeId : user.storeId})', adminAuth: true },
{ label: 'Cart', state: 'cart'}
];
// consolnode se.log('HERE');
if(user === null){
scope.items.push({ label: 'Signup', state: 'signup' });
} else {
console.log('USER', user);
if(hasPendingReviews()) {
scope.items.push({ label: 'Review Products', state: 'reviewProduct', auth: true });
}
hasPendingReviews().then(function (num) {
// console.log('ASDFHASKDFA',num);
if(num.length > 0) {
scope.items.push({ label: 'Review Products', state: 'reviewList', auth: true });
// console.log('INDEX OF', scope.items);
}
});
if(!user.storeId) {
scope.items.push({ label: 'Create A Store', state: 'storeCreate', auth: true });
}

}
});
})
}
calculateNavBar();

Expand All @@ -88,7 +96,6 @@ app.directive('navbar', function ($rootScope, AuthService, AUTH_EVENTS, $state,
AuthService.getLoggedInUser().then(function (user) {
scope.user = user;
if(AuthService.isAdminAuthenticated()) {
// console.log('sTORE ID', user.storeId);
$state.go('adminHome', {storeId : user.storeId});
}
else {
Expand All @@ -97,25 +104,21 @@ app.directive('navbar', function ($rootScope, AuthService, AUTH_EVENTS, $state,
});
};

var hasPendingReviews = function () {
reviewFCT.getUnwrittenReviews().then(function (data) {
return data.data.length;
});
}

var removeUser = function () {
scope.user = null;
};

setUser();

$rootScope.$on(AUTH_EVENTS.loginSuccess, calculateNavBar);
// $rootScope.$on(AUTH_EVENTS.loginSuccess, calculateNavBar);
$rootScope.$on(AUTH_EVENTS.loginSuccess, setUser);
$rootScope.$on(AUTH_EVENTS.logoutSuccess, removeUser);
$rootScope.$on(AUTH_EVENTS.logoutSuccess, calculateNavBar);
$rootScope.$on(AUTH_EVENTS.sessionTimeout, removeUser);
$rootScope.$on(AUTH_EVENTS.sessionTimeout, calculateNavBar);
$rootScope.$on(StoreFCT.saveStore, calculateNavBar);
$rootScope.$on(reviewFCT.saveReview, calculateNavBar);


}

Expand Down
6 changes: 3 additions & 3 deletions browser/js/common/directives/review-form/review-form.html
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<form name="reviewForm" ng-submit="reviewForm.$valid && saveReview(review)">

<input type="hidden" name="reviewId" ng-model="review.reviewId" value="{{ review.reviewId }}">
<input type="hidden" name="productId" ng-model="review.productId" value="{{ review.productId }}">
<input type="hidden" name="userId" ng-model="review.user" value="{{ review.user }}">
<!-- <input type="hidden" name="userId" ng-model="review.user" value="{{ review.user }}"> -->
<input type="hidden" name="type" ng-model="review.category" value="{{ review.category }}">

<!-- <pre>{{ newTeamForm | json }}</pre> -->
Expand All @@ -12,7 +12,7 @@

<div class="form-group">
<label for="stars">Stars</label>
<input type="number" name="stars" ng-model="review.name" class="form-control" min="1" max="5"required>
<input type="number" name="stars" ng-model="review.rating" class="form-control" min="1" max="5"required>
</div>

<div class="form-group">
Expand Down
2 changes: 1 addition & 1 deletion browser/js/common/factories/CartFactory.js
Original file line number Diff line number Diff line change
Expand Up @@ -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){
Expand Down
16 changes: 3 additions & 13 deletions browser/js/common/factories/OrderFactory.js
Original file line number Diff line number Diff line change
@@ -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;
});
},
Expand All @@ -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)
Expand Down
15 changes: 11 additions & 4 deletions browser/js/common/factories/reviewFactory.js
Original file line number Diff line number Diff line change
@@ -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
};

});
1 change: 1 addition & 0 deletions browser/js/review/review.html
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
<h1>Review For {{store}}'s {{itemName}}</h1>
<review-form></review-form>
Loading