diff --git a/app/css/custom.css b/app/css/custom.css
index 083d4da..76bcfce 100644
--- a/app/css/custom.css
+++ b/app/css/custom.css
@@ -1,3 +1,409 @@
-body{
- background-color: lightblue;
+/*====================================
+ Modal Window styles
+=====================================*/
+.modal2,
+.modal {
+ background: transparent;
+ display: inline;
+ position: relative;
+}
+
+.modal-login-button {
+ margin-top: 2%;
+ box-shadow: 0px 5px 8px #000;
+ background-color: #697f7f;
+ color: #fff;
+ border: none;
+ width: 20%;
+}
+
+.modal-login-button2 {
+ margin-top: .2%;
+ box-shadow: 0px 5px 8px #000;
+ background-color: #687d68;
+ color: #fff;
+ border: none;
+ width: 20%;
+}
+
+@media (min-width: 40px) {
+ .modal2,
+ .modal {
+ padding: 1.5em;
+ }
+}
+
+.modal-overlay2,
+.modal-overlay {
+ background: rgba(0, 0, 0, .7);
+ bottom: 0;
+ left: 0;
+ position: fixed;
+ right: 0;
+ text-align: center;
+ text-shadow: none;
+ top: 0;
+ z-index: 600;
+}
+
+.modal-wrap {
+ padding: 1em 0;
+ position: relative;
+ margin: 0 auto;
+ max-width: 500px;
+ width: 90%;
+}
+
+.modal-wrap2{
+ margin-top: 5%;
+ position: relative;
+ padding: 1em 0;
+ max-width: 500px;
+ width: 90%;
+
+}
+
+@media (min-width: 40px) {
+ .modal-wrap2,
+ .modal-wrap {
+ padding: 1.75em;
+ }
+}
+@media (min-height: 40px) {
+ .modal-wrap2,
+ .modal-wrap {
+ left: 50%;
+ position: absolute;
+ top: 50%;
+ transform: translate(-50%, -80%);
+ }
+}
+
+.modal-trigger-label2,
+.modal-trigger-label {
+ background: red;
+ border-radius: 50%;
+ color: #fff;
+ cursor: pointer;
+ height: 1.4em;
+ line-height: 1.4;
+ position: absolute;
+ right: .5em;
+ top: .5em;
+ width: 1.4em;
+}
+
+.modal-wrap2 h2,
+.modal-wrap h2 {
+ color: #FFD300;
+ margin-bottom: 1em;
+ text-transform: uppercase;
+}
+
+.modal-wrap2 p,
+.modal-wrap p {
+ color: #FFD300;
+ text-align: justify;
+}
+.modal-input2:focus ~ .modal-trigger-label2,
+.modal-input:focus ~ .modal-trigger-label {
+ transform: scale(0.97);
+}
+
+/*====================================
+ Modal action styles
+=====================================*/
+.modal-input2,
+.modal-input {
+ position: absolute;
+ top: -1000px;
+}
+
+.modal-overlay2,
+.modal-overlay {
+ opacity: 0;
+ z-index: -100;
+ transform: scale(0.5);
+ transition: all 0.75s cubic-bezier(0.68, -0.55, 0.265, 1.55);
+}
+
+.modal-input2:checked ~ .modal-overlay2,
+.modal-input:checked ~ .modal-overlay {
+ opacity: 1;
+ transform: scale(1);
+ z-index: 800;
+}
+
+
+
+
+/****************************************************
+ NavBar && Footer Default
+****************************************************/
+.nav{
+ background-color: rgba(90, 111, 93, .8);
+ margin-bottom: 4%;
+ font-family: Raleway;
+}
+
+#navName {
+ color: #fff;
+ font-size: 2.6em;
+ font-family: lobster;
+}
+
+.nav a {
+ font-size: 1.4em;
+ color: #fff;
+}
+
+
+/****************************************************
+ Body Default
+****************************************************/
+body {
+ font-family: Raleway;
+ display: flex;
+ min-height: 100vh;
+ flex-direction: column;
+ background-color: #f1f5f0;
+}
+
+main {
+ flex: 1 0 auto;
+}
+
+.icons {
+ padding-left: 5px;
+ margin-top: 3px;
+}
+/****************************************************
+ Footer Default
+****************************************************/
+.footer {
+ font-family: Raleway;
+ height: 40px;
+ width: 100%;
+ background-color: rgba(255, 255, 255, .6);
+ z-index: 1;
+ box-shadow: 10px 0px 10px black;
+ margin-top: 4%;
+}
+
+.footer p {
+ color: #000;
+}
+
+
+/*====================================
+ Customer Login Page
+=====================================*/
+.lowerHeader {
+ margin-top: 12%;
+}
+
+#text1 {
+ font-size: 2.5em;
+ font-style: italic;
+ font-weight: bold;
+ color: #fff;
+ text-shadow: 0px 5px 8px #000;
+}
+
+#text2 {
+ font-size: 8em;
+ color: #fff;
+ font-weight: bold;
+ text-shadow: 0px 5px 8px #000;
+}
+
+#hero1 {
+ margin-top: -4%;
+ background-image: url('../img/mainFoodBackground.jpg');
+ background-size: 100% 100%;
+}
+
+#hero2 {
+
+ padding-top: -100px;
+ background-color: #fff;
+ height: 500px;
+}
+
+#hero3 {
+ background-image: url('../img/foodImage.jpg');
+ background-size: 100%;
+}
+
+#hero4 {
+ background-color: #fff;
+ margin-bottom: -55px;
+ height: 400px;
+}
+
+.box {
+ box-shadow: 0px 12px 13px #ccc;
+ background-color: #fbfbfb;
+
+}
+
+.box img {
+ size: 800px;
+}
+
+.p-tag-left {
+ color: rgb(90, 111, 93);
+ font-size: 2.2em;
+ margin-top: -65px;
+ margin-bottom: 10px;
+}
+
+.p-tag {
+ color: rgb(90, 111, 93);
+ font-size: 2.2em;
+ text-align: center;
+}
+
+.card {
+ box-shadow: 0px 12px 13px #ccc;
+}
+
+.card p {
+ color: rgb(90, 111, 93);
+}
+
+#headerText1 {
+ font-size: 9em;
+ font-family: lobster;
+ color: #fff;
+ text-shadow: 0px 7px 9px #000;
+}
+
+#headerText2 {
+ font-size: 2.3em;
+ color: #fff;
+ text-shadow: 0px 5px 8px #000;
+}
+
+.sm-text {
+ color: #fff;
+ margin-top: 4px;
+ text-shadow: 0px 5px 2px #000;
+}
+
+/*====================================
+ Restaurant Page Login Page
+=====================================*/
+
+.menu-group-header {
+ font-size: 1.3em;
+ font-weight: bold;
+ padding-left: 10px;
+ color: #294949;
+ padding-top: 10px;
+}
+
+.panel-heading {
+ background-color: #294949;
+}
+.panel-heading p {
+ font-weight: bold;
+ font-size: 1.2em;
+ color: #fff;
+}
+
+.add-to-cart-btn {
+ color: #fff;
+ background-color: #697f7f;
+ border: none;
+}
+
+.menu-table td{
+ max-width: 15px;
+}
+
+.checkout-box {
+ background-color: rgb(127,191,127);
+ margin-bottom: 20px;
+}
+
+.panel-block {
+ background-color: #fff;
+ box-shadow: 0px 5px 10px #ccc;
+}
+
+.reviews {
+ margin-top: 4%;
+}
+
+.write-reviews,
+.cart {
+ margin-bottom: 2%;
+}
+
+.total-amt {
+ color: rgb(127,191,127);
+ font-size: 1.4em;
+ font-weight: bold;
+ margin-bottom: 6px;
+}
+
+.review-submit-button,
+.checkout-btn {
+ background-color: rgb(127,191,127);
+ color: #fff;
+}
+
+#loginModalBox2,
+#loginModalBox {
+ box-shadow: none;
+}
+
+#headerBox {
+ box-shadow: none;
+ background-color: rgba(64, 64, 64, .6);
+}
+
+#headerBox2 {
+ box-shadow: none;
+ border-width: 2px;
+ border-style: solid;
+ border-color: #fff;
+ border-width: 10px;
+ background-color: rgba(64, 64, 64, .6);
+}
+
+/*====================================
+ Restaurant Page restaurantList Page
+=====================================*/
+.restaurant-list-panel {
+ background-color: #294949;
+ color: #fff;
+}
+
+.restaurant-list-panel p {
+ font-weight: bold;
+ font-size: 1.2em;
+}
+
+.select-restaurant {
+ background-color: #5a6f5d;
+ color: #fff;
+}
+
+.button:hover,
+.button:focus,
+.button.is-active {
+ color: #fff;
+ box-shadow: 3px 3px 5px #ccc;
+}
+
+.rating-font {
+ font-size: 1.6em;
+ text-align: center;
+}
+
+#ratingNumber {
+ margin-top: 1%;
+ margin-bottom: 1%;
}
\ No newline at end of file
diff --git a/app/img/city.jpg b/app/img/city.jpg
new file mode 100644
index 0000000..bdd3855
Binary files /dev/null and b/app/img/city.jpg differ
diff --git a/app/img/foodImage.jpg b/app/img/foodImage.jpg
new file mode 100644
index 0000000..3352284
Binary files /dev/null and b/app/img/foodImage.jpg differ
diff --git a/app/img/fooddelivery.jpg b/app/img/fooddelivery.jpg
new file mode 100644
index 0000000..e0fb1bf
Binary files /dev/null and b/app/img/fooddelivery.jpg differ
diff --git a/app/img/gathering.jpg b/app/img/gathering.jpg
new file mode 100644
index 0000000..4ea0adf
Binary files /dev/null and b/app/img/gathering.jpg differ
diff --git a/app/img/goodQuality.jpg b/app/img/goodQuality.jpg
new file mode 100644
index 0000000..678eac1
Binary files /dev/null and b/app/img/goodQuality.jpg differ
diff --git a/app/img/mainFoodBackground.jpg b/app/img/mainFoodBackground.jpg
new file mode 100644
index 0000000..9c74bf3
Binary files /dev/null and b/app/img/mainFoodBackground.jpg differ
diff --git a/app/img/personTexting.jpg b/app/img/personTexting.jpg
new file mode 100644
index 0000000..0b44d06
Binary files /dev/null and b/app/img/personTexting.jpg differ
diff --git a/app/img/pizza.jpg b/app/img/pizza.jpg
new file mode 100644
index 0000000..c1408cc
Binary files /dev/null and b/app/img/pizza.jpg differ
diff --git a/app/index.html b/app/index.html
index 0ec26b2..df5177d 100644
--- a/app/index.html
+++ b/app/index.html
@@ -3,43 +3,54 @@
NoshSpot - Customer
+
+
+
+
+
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
+
+
+
-
+
+
diff --git a/app/js/app.module.js b/app/js/app.module.js
index c6d92e4..49a822d 100644
--- a/app/js/app.module.js
+++ b/app/js/app.module.js
@@ -2,43 +2,47 @@
'use strict';
angular
- .module('app', ['ui.router', 'toastr'])
+ .module('app', ['ui.router', 'toastr', 'stripe.checkout'])
.value('apiUrl', 'http://localhost:61815/api')
.config(appConfig);
- appConfig.$inject = ['$urlRouterProvider', '$stateProvider'];
+ appConfig.$inject = ['$urlRouterProvider', '$stateProvider', 'StripeCheckoutProvider'];
- function appConfig($urlRouterProvider, $stateProvider) {
+ function appConfig($urlRouterProvider, $stateProvider, StripeCheckoutProvider) {
- $urlRouterProvider.otherwise('/restaurants');
+ StripeCheckoutProvider.defaults({
+ key: 'pk_test_XE4OKSyJR5b8YXIX41XXEsN6'
+ });
- $stateProvider
- .state('restaurants', {
- url: '/restaurants',
- abstract: true,
- template: ''
- })
+ $urlRouterProvider.otherwise('/login');
+
+ $stateProvider
+ .state('restaurants', {
+ url: '/restaurants',
+ abstract: true,
+ template: ''
+ })
.state('restaurants.list', {
- url: '/list',
+ url: '/list?customerId',
controller: 'RestaurantListController as restaurantList',
templateUrl: 'js/restaurant/restaurantList.html'
})
.state('restaurants.detail', {
- url: '/detail?restaurantId',
+ url: '/detail?restaurantId?customerId',
controller: 'RestaurantDetailController as restaurantDetail',
- templateUrl: 'js/restaurant/restaurant.detail.html'//Make sure this works
+ templateUrl: 'js/restaurant/restaurant.detail.html' //Make sure this works
+ })
+ .state('login', {
+ url: '/login',
+ controller: 'LoginController as login',
+ templateUrl: 'js/login/login.html'
})
- .state('login', {
- url: '/login',
- controller: 'LoginController as login',
- templateUrl: 'js/login/login.html'
- })
- .state('orders', {
- url: '/orders',
- controller: 'OrdersController as orders',
- templateUrl: 'js/orders/orders.html'
- })
+ .state('orders', {
+ url: '/orders?customerId',
+ controller: 'OrdersController as orders',
+ templateUrl: 'js/orders/orders.html'
+ });
}
-})();
\ No newline at end of file
+})();
diff --git a/app/js/core/crud.factory.js b/app/js/core/crud.factory.js
index 1ee8119..9e5e69c 100644
--- a/app/js/core/crud.factory.js
+++ b/app/js/core/crud.factory.js
@@ -21,19 +21,19 @@
////////////////
- function getAll() {
- var deferred = $q.defer();
-
- $http.get(endpoint)
- .success(function(data) {
- deferred.resolve(data);
- })
- .error(function(error) {
- console.log(error);
- deferred.reject('There was a problem fetching ' + entityName.toLowerCase() + 's.');
- });
-
- return deferred.promise;
+ function getAll() {
+ var deferred = $q.defer();
+
+ $http.get(endpoint)
+ .success(function(data) {
+ deferred.resolve(data);
+ })
+ .error(function(error) {
+ console.log(error);
+ deferred.reject('There was a problem fetching ' + entityName.toLowerCase() + 's.');
+ });
+
+ return deferred.promise;
}
function getById(id) {
diff --git a/app/js/core/order.factory.js b/app/js/core/order.factory.js
new file mode 100644
index 0000000..1fb42ea
--- /dev/null
+++ b/app/js/core/order.factory.js
@@ -0,0 +1,14 @@
+(function() {
+ 'use strict';
+
+ angular
+ .module('app')
+ .factory('OrderFactory', OrderFactory);
+
+ OrderFactory.$inject = ['$http', '$q', 'CRUDFactory', 'apiUrl'];
+
+ /* @ngInject */
+ function OrderFactory($http, $q, CRUDFactory, apiUrl) {
+ return CRUDFactory(apiUrl + '/orders', 'order');
+ }
+})();
\ No newline at end of file
diff --git a/app/js/core/orderItem.factory.js b/app/js/core/orderItem.factory.js
new file mode 100644
index 0000000..f134b62
--- /dev/null
+++ b/app/js/core/orderItem.factory.js
@@ -0,0 +1,14 @@
+(function() {
+ 'use strict';
+
+ angular
+ .module('app')
+ .factory('OrderItemFactory', OrderItemFactory);
+
+ OrderItemFactory.$inject = ['$http', '$q', 'CRUDFactory', 'apiUrl'];
+
+ /* @ngInject */
+ function OrderItemFactory($http, $q, CRUDFactory, apiUrl) {
+ return CRUDFactory(apiUrl + '/orderItems', 'orderItem');
+ }
+})();
\ No newline at end of file
diff --git a/app/js/core/payment.factory.js b/app/js/core/payment.factory.js
new file mode 100644
index 0000000..bb87564
--- /dev/null
+++ b/app/js/core/payment.factory.js
@@ -0,0 +1,14 @@
+(function() {
+ 'use strict';
+
+ angular
+ .module('app')
+ .factory('PaymentFactory', PaymentFactory);
+
+ PaymentFactory.$inject = ['$http', '$q', 'CRUDFactory', 'apiUrl'];
+
+ /* @ngInject */
+ function PaymentFactory($http, $q, CRUDFactory, apiUrl) {
+ return CRUDFactory(apiUrl + '/payments', 'payment');
+ }
+})();
\ No newline at end of file
diff --git a/app/js/core/stripePayment.factory.js b/app/js/core/stripePayment.factory.js
new file mode 100644
index 0000000..f348bf8
--- /dev/null
+++ b/app/js/core/stripePayment.factory.js
@@ -0,0 +1,14 @@
+(function() {
+ 'use strict';
+
+ angular
+ .module('app')
+ .factory('StripePaymentFactory', StripePaymentFactory);
+
+ StripePaymentFactory.$inject = ['$http', '$q', 'CRUDFactory', 'apiUrl'];
+
+ /* @ngInject */
+ function StripePaymentFactory($http, $q, CRUDFactory, apiUrl) {
+ return CRUDFactory(apiUrl + '/payments/charge', 'payment');
+ }
+})();
\ No newline at end of file
diff --git a/app/js/login/login.controller.js b/app/js/login/login.controller.js
index ded82d3..b32dbbe 100644
--- a/app/js/login/login.controller.js
+++ b/app/js/login/login.controller.js
@@ -5,23 +5,55 @@
.module('app')
.controller('LoginController', LoginController);
- LoginController.$inject = ['$state', '$stateParams'];
+ LoginController.$inject = ['$state', '$stateParams', 'customerFactory'];
/* @ngInject */
- function LoginController($state, $stateParams) {
+ function LoginController($state, $stateParams, customerFactory) {
var vm = this;
vm.title = 'LoginController';
vm.loginInfo = {};
+ vm.customers;
+ vm.newCustomer = {};
+ vm.expand = false;
+
vm.loginCustomer = loginCustomer;
+ vm.addNewCustomer = addNewCustomer;
+
+ allCustomers();
////////////////
+ function allCustomers() {
+ customerFactory.getAll().then(
+ function(data){
+ vm.customers = data;
+ }
+ );
+ }
+
+ function addNewCustomer(newCustomer){
+ if (vm.password === vm.confirmPassword) {
+ customerFactory.add(newCustomer).then(
+ function(data){
+ console.log(data);
+ $state.go('restaurants.list', {customerId: data.customerId});
+ },
+ function(error){
+ console.log(error);
+ }
+ );
+ }
+ else {
+ alert("Passwords do not match");
+ }
+ }
+
function loginCustomer() {
if(vm.loginInfo.password != 'butts') {
alert("You entered the wrong password");
}
else
{
- $state.go('restaurants.list');
+ $state.go('restaurants.list', {customerId: vm.selectedCustomer});
}
}
}
diff --git a/app/js/login/login.html b/app/js/login/login.html
index 0b0cfce..cc49720 100644
--- a/app/js/login/login.html
+++ b/app/js/login/login.html
@@ -1,19 +1,283 @@
-
+
+
+
+
+
+
+
+
+
Not a member yet? Sign up for free!
+
+
+
+
+
+
+
+
+
+
The Most Convenient Food Service..Ever.
+
+
+
+
+

+
+
+
Easy Ordering.
+
+
+
+
+

+
+
+
High Quality Food.
+
+
+
+
+

+
+
+
Fast Delivery.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ I like it. Easy to use. Easy to pay. Hell yeah! A +
+
+ 11:09 PM - 16 Sep 2016
+
+
+
+
+
+
+
+
+
+ All I can say is, Wow! Awesome food. Fast Delivery. Easy Process.
+ Will do business again!
+
+ 09:09 PM - 15 Sep 2016
+
+
+
+
+
+
+
+
+
+
+ How can I invest? It goes hard.
+
+ 04:09 PM - 17 Sep 2016
+
+
+
+
+
+
+
+
+
+
+ This app is so damn legit, it brings tears to my eyes.
+
+ 12:09 PM - 15 Sep 2016
+
+
+
+
+
+
+
+
+
diff --git a/app/js/orders/orders.controller.js b/app/js/orders/orders.controller.js
index b681324..1726d57 100644
--- a/app/js/orders/orders.controller.js
+++ b/app/js/orders/orders.controller.js
@@ -1,26 +1,78 @@
-(function(){
- 'use strict'
+(function() {
+ 'use strict'
- angular
- .module('app')
- .controller('OrdersController', OrdersController);
+ angular
+ .module('app')
+ .controller('OrdersController', OrdersController);
- OrdersController.$inject =['$stateParams', 'customerFactory', 'reviewFactory'];
+ OrdersController.$inject = ['$stateParams', 'customerFactory', 'reviewFactory', 'StripePaymentFactory', 'StripeCheckout', '$timeout'];
- function OrdersController($stateParams, customerFactory, reviewFactory){
- var vm = this;
+ function OrdersController($stateParams, customerFactory, reviewFactory, StripePaymentFactory, StripeCheckout, $timeout) {
+ var vm = this;
- allOrders();
+ var stripeCheckoutHandler;
- function allOrders(){
- customerFactory.getById(3).then(
- function(data){
- vm.details = data;
- console.log(vm.details);
- }
- );
- }
+ // function
+ vm.allOrders = allOrders;
+ vm.doCheckout = doCheckout;
+ // variables
+ vm.customerId = $stateParams.customerId;
+ vm.details;
- }
-})();
\ No newline at end of file
+ allOrders();
+
+ StripeCheckout.load().then(function() {
+ stripeCheckoutHandler = StripeCheckout.configure({
+ name: "NoshSpot",
+ token: function(token, args) {
+ console.log(token, args);
+
+ var payInfo = {
+ "token": token.id,
+ "orderAmount": parseInt(vm.selectedOrder.orderTotal * 100),
+ "description": vm.selectedOrder.restaurant.name
+ };
+
+ StripePaymentFactory.add(payInfo).then(
+ function(data) {
+ console.log(data);
+ PaymentFactory.add(
+ {
+ orderId: data.orderId,
+ customerId: $stateParams.customerId,
+ paymentDate: new Date(),
+ paymentAmount: stripePaymentData.amount
+ });
+
+ },
+ function(error) {
+ console.log(error);
+ }
+ );
+ }
+ });
+ });
+
+ // Get orders for customer
+ function allOrders() {
+ customerFactory.getById(vm.customerId).then(
+ function(data) {
+ vm.details = data;
+ console.log(vm.details);
+ }
+ );
+ }
+
+ // Buy order again using stripe
+ function doCheckout(order) {
+ vm.selectedOrder = order;
+
+ stripeCheckoutHandler.open({
+ name: "NoshSpot",
+ description: "NoshSpot Food Order",
+ amount: parseInt(order.orderTotal * 100)
+ });
+ }
+ }
+})();
diff --git a/app/js/orders/orders.html b/app/js/orders/orders.html
index 8fb546f..79a31f6 100644
--- a/app/js/orders/orders.html
+++ b/app/js/orders/orders.html
@@ -1,15 +1,50 @@
-
-
-
- | Recent Orders |
-
- Order Total |
-
-
-
- | {{data.orderTotal}} |
-
-
-
-
-
+
+
+
+
+
+
+
+ | Date |
+ Restaurants |
+ Order |
+ Paid |
+ |
+
+
+
+
+ | {{order.timeStamp | date: 'short'}} |
+ {{order.restaurant.name}} |
+
+
+ -
+ {{items.menuItem.name}} - {{items.menuItem.price | currency: '$'}}
+
+
+ |
+ {{order.orderTotal | currency: '$'}} |
+ |
+
+
+
+
+
+
diff --git a/app/js/restaurant/restaurant.detail.controller.js b/app/js/restaurant/restaurant.detail.controller.js
index 4e0565f..195c2c5 100644
--- a/app/js/restaurant/restaurant.detail.controller.js
+++ b/app/js/restaurant/restaurant.detail.controller.js
@@ -5,16 +5,26 @@
.module('app')
.controller('RestaurantDetailController', RestaurantDetailController);
- RestaurantDetailController.$inject = ['$stateParams', '$state', 'restaurantFactory'];
+ RestaurantDetailController.$inject = ['$stateParams', '$state', 'restaurantFactory', 'OrderFactory', 'OrderItemFactory', 'StripePaymentFactory', 'reviewFactory'];
/* @ngInject */
- function RestaurantDetailController($stateParams, $state, restaurantFactory) {
+ function RestaurantDetailController($stateParams, $state, restaurantFactory, OrderFactory, OrderItemFactory, StripePaymentFactory, reviewFactory) {
var vm = this;
vm.title = 'restaurantDetailController';
+
+ // variables
vm.menu = {};
- vm.addToCart = addToCart;
+ vm.newReviewDescription = "";
+ vm.newReviewRating;
vm.restaurantId = $stateParams.restaurantId;
+ vm.customerId = $stateParams.customerId;
+
+ // functions
+ vm.addReview = addReview;
+ vm.addToCart = addToCart;
vm.removeItem = removeItem;
+ vm.doCheckout = doCheckout;
+
getMenu();
////////////////
@@ -22,7 +32,6 @@
function getMenu() {
restaurantFactory.getById($stateParams.restaurantId).then(
function(response) {
- console.log(response);
vm.menu = response;
vm.cart = {
cost: function() {
@@ -44,14 +53,80 @@
}
);
}
+
+ ////////////////
+
function addToCart(item) {
vm.cart.items.push(angular.copy(item));
}
+ ////////////////
+
+ function addReview () {
+ vm.newReview = {
+ customerId: vm.customerId,
+ restaurantId: $stateParams.restaurantId,
+ reviewDescription: vm.newReviewDescription,
+ rating: vm.newReviewRating
+ };
+ reviewFactory.add(vm.newReview).then(
+ function(){
+ alert('Review added');
+ getMenu();
+ console.log(vm.newReview);
+ });
+ }
+
function removeItem(item) {
var index = vm.cart.items.indexOf(item);
vm.cart.items.splice(index, 1);
}
+
+ function doCheckout(token) {
+ // create order in database
+ // create order items in database
+ // pay in stripe
+ // add payment to database
+ var order = {
+ restaurantId: $stateParams.restaurantId,
+ customerId: $stateParams.customerId,
+ timeStamp: new Date()
+ };
+
+ OrderFactory.add(order).then(function(data) {
+ for(var i = 0; i < vm.cart.items.length; i++) {
+ var item = vm.cart.items[i];
+
+ var orderItem = {
+ menuItemId: item.menuItemId,
+ orderId: data.orderId
+ };
+ OrderItemFactory.add(orderItem);
+ }
+
+ var payInfo = {
+ "token": token.id,
+ "orderAmount": parseInt(vm.cart.cost() * 100),
+ "description": vm.menu.name
+ };
+
+ StripePaymentFactory.add(payInfo)
+ .then(function(stripePaymentData){
+ vm.allRestaurants = data;
+ console.log(vm.allRestaurants);
+ PaymentFactory.add({
+ orderId: data.orderId,
+ customerId: $stateParams.customerId,
+ paymentDate: new Date(),
+ paymentAmount: stripePaymentData.amount
+ });
+ },
+ function(error){
+ console.log(error);
+ }
+ );
+ });
+ }
}
})();
diff --git a/app/js/restaurant/restaurant.detail.html b/app/js/restaurant/restaurant.detail.html
index 5a5b4c9..39a0043 100644
--- a/app/js/restaurant/restaurant.detail.html
+++ b/app/js/restaurant/restaurant.detail.html
@@ -1,72 +1,136 @@
-{{restaurantDetail.menu.name}}
-
-
-Menu
-
-
-
-
-
- | Name |
- Description |
- Price |
-
-
-
-
- | {{item.name}} |
- {{item.description}} |
- {{item.price}} |
- |
-
-
-
-
-
-
-Reviews
-
-
-
- | Description |
- Rating |
-
-
-
-
-
- | {{review.reviewDescription}} |
- {{review.rating}} |
-
-
-
-
-
-
-
Cart
-
-
-
- | Name |
- Price |
-
-
-
-
- | {{item.name}} |
- {{item.price}} |
- |
-
-
-
-
-
-
-
-
-
-Cost: {{restaurantDetail.cart.cost() | currency: '$'}}
-
-
-
+
+
+
+
+
+
{{restaurantDetail.menu.name}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ | Items |
+ Price |
+ |
+
+
+
+
+ | {{item.name}} |
+ {{item.price | currency}} |
+
+
+ |
+
+
+
+
+
Total: {{restaurantDetail.cart.cost() | currency: '$'}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ | Description |
+ Rating |
+
+
+
+
+ | {{review.reviewDescription}} |
+ {{review.rating}} |
+
+
+
+
+
+
+
+
+
+
Enter a Number (Between 1 and 5):
+
+
+
+
+
+
+
+
+
+
diff --git a/app/js/restaurant/restaurant.list.controller.js b/app/js/restaurant/restaurant.list.controller.js
index c275913..976a2cc 100644
--- a/app/js/restaurant/restaurant.list.controller.js
+++ b/app/js/restaurant/restaurant.list.controller.js
@@ -5,26 +5,44 @@
.module('app')
.controller('RestaurantListController', RestaurantListController);
- RestaurantListController.$inject = ['$stateParams', 'restaurantFactory'];
+ RestaurantListController.$inject = ['$stateParams', 'restaurantFactory', 'customerFactory'];
- function RestaurantListController($stateParams, restaurantFactory){
+ function RestaurantListController($stateParams, restaurantFactory, customerFactory){
var vm = this;
vm.allRestaurants = [];
+ vm.customer = {};
vm.restaurantId = $stateParams.restaurantId;
+ vm.customerId = $stateParams.customerId;
+
getAllRestaurants();
+ getCustomerInfo();
-/*************************************************************************/
- function getAllRestaurants(){
- restaurantFactory.getAll()
- .then(function(data){
- vm.allRestaurants = data;
- console.log(vm.allRestaurants);
- },
- function(error){
+ function getCustomerInfo() {
+ if ($stateParams.customerId) {
+ customerFactory.getById($stateParams.customerId).then(
+ function(data) {
+ vm.customer = data;
+ console.log(vm.customer);
+ }
+ );
+ }
+ else
+ {
+ vm.customer = {};
+ }
+ }
- }
- );
+ function getAllRestaurants(){
+ restaurantFactory.getAll().then(
+ function(data){
+ vm.allRestaurants = data;
+ console.log(vm.allRestaurants);
+ },
+ function(error){
+ console.log(error);
+ }
+ );
}
}
})();
diff --git a/app/js/restaurant/restaurantList.html b/app/js/restaurant/restaurantList.html
index c9aaef2..c24f74e 100644
--- a/app/js/restaurant/restaurantList.html
+++ b/app/js/restaurant/restaurantList.html
@@ -1,19 +1,68 @@
-
-
-
- Restaurants |
-
-
-
-
- | {{restaurant.name}} |
- {{restaurant.address}} |
- {{restaurant.zipcode}} |
- {{restaurant.telephone}} |
- {{restaurant.email}} |
- {{restaurant.website}} |
- {{restaurant.description}} |
- |
-
-
-
\ No newline at end of file
+
+
+
+
+
+
+
+
+
+
+
+
+ | Restaurant: |
+ Address: |
+ Zipcode: |
+ Telephone: |
+ Email: |
+ Website: |
+ Description: |
+ |
+
+
+
+
+ | {{restaurant.name}} |
+ {{restaurant.address}} |
+ {{restaurant.zipCode}} |
+ {{restaurant.telephone}} |
+ {{restaurant.email}} |
+ {{restaurant.webSite}} |
+ {{restaurant.description}} |
+ |
+
+
+
+
+
+
+
+
+
diff --git a/bower.json b/bower.json
index fd2e62d..ece4d73 100644
--- a/bower.json
+++ b/bower.json
@@ -27,6 +27,7 @@
"angular-toastr": "^2.0.0",
"angular-ui-router": "^0.3.1",
"bulma": "^0.1.2",
- "font-awesome": "^4.6.3"
+ "font-awesome": "^4.6.3",
+ "angular-stripe-checkout": "^5.1.0"
}
-}
\ No newline at end of file
+}
diff --git a/gulpfile.js b/gulpfile.js
index 819ad3e..0c2c97c 100644
--- a/gulpfile.js
+++ b/gulpfile.js
@@ -11,7 +11,7 @@ var jsSources = ['app/js/**/*.js'],
cssSources = ['app/css/**/*.css'],
htmlSources = ['app/**/*.html'];
-var paths = ['node_modules/angular/angular.js', 'node_modules/angular-ui-router/release/angular-ui-router.js', 'node_modules/angular-toastr/dist/angular-toastr.js','node_modules/angular-toastr/dist/angular-toastr.tpls.js', 'node_modules/angular-toastr/dist/angular-toastr.css', 'node_modules/bulma/css/bulma.css','./app/js/app.module.js', './app/js/**/*.js', './app/css/**/*.css'];
+var paths = ['./app/js/app.module.js', './app/js/**/*.js', './app/css/**/*.css'];
gulp.task('watch', function() {
gulp.watch(jsSources, ['js']);
@@ -34,22 +34,6 @@ gulp.task('connect', function(){
});
});
-gulp.task('app', function () {
- var browser;
- if(process.platform === 'darwin'){
- browser = "Google Chrome"
- }else{
- browser = 'chrome'
- }
-
- var options = {
- uri: "http://localhost:8080",
- app: browser
- };
- gulp.src('./app/index.html')
- .pipe(open(options));
-})
-
gulp.task('js', function() {
gulp.src(jsSources)
.pipe(connect.reload())
@@ -65,4 +49,22 @@ gulp.task('css', function() {
.pipe(connect.reload())
});
-gulp.task('serve', ['connect', 'watch', 'inject', 'app']);
\ No newline at end of file
+gulp.task('app', function() {
+ var browser;
+ if (process.platform === 'darwin') {
+ browser = 'Google Chrome'
+ }
+ else {
+
+ browser = 'chrome'
+ }
+ var options = {
+ uri: 'http://localhost:8080',
+ app: browser
+ };
+ gulp.src('./app/index.html')
+ .pipe(open(options));
+});
+
+gulp.task('serve', ['connect', 'watch', 'inject', 'app']);
+