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.

+
+
+
+
+
+
+
+
+

+ Simplicity. +

+
+
+
+
+
+
+
+
+
+
+
+
+
+ Image +
+
+
+

Reggie Sibley

+

@RegGetsHoes

+
+
+
+ I like it. Easy to use. Easy to pay. Hell yeah! A + +
+ 11:09 PM - 16 Sep 2016 +
+
+
+
+
+
+
+
+
+
+ Image +
+
+
+

Jeff Winkler

+

@JeffWinkler

+
+
+
+ All I can say is, Wow! Awesome food. Fast Delivery. Easy Process. + Will do business again! +
+ 09:09 PM - 15 Sep 2016 +
+
+
+
+ +
+
+
+
+
+
+ Image +
+
+
+

Cole Logan

+

@ColeSnapYoFingaz

+
+
+
+ How can I invest? It goes hard. +
+ 04:09 PM - 17 Sep 2016 +
+
+
+
+ +
+
+
+
+
+
+ Image +
+
+
+

Cameron Wilbey

+

@CamWilbey

+
+
+
+ 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}}
- + +
+
+
+ + + + + + + + + + + + + + + + + + + +
DateRestaurantsOrderPaid
{{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

-
-

{{menuGroup.menuGroupTitle}}

- - - - - - - - - - - - - - - - -
NameDescriptionPrice
{{item.name}}{{item.description}}{{item.price}}
-
- - -

Reviews

- - - - - - - - - - - - - -
DescriptionRating
{{review.reviewDescription}}{{review.rating}}
- - - -
-

Cart

- - - - - - - - - - - - - - - -
NamePrice
{{item.name}}{{item.price}}
- - - -
- -
Cost: {{restaurantDetail.cart.cost() | currency: '$'}}
- - - + +
+
+
+
+

{{restaurantDetail.menu.name}}

+
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + +
+ + + +
+
+

Cart

+
+
+
+
+ + + + + + + + + + + + + + + +
ItemsPrice
{{item.name}}{{item.price | currency}} + +
+
+

Total: {{restaurantDetail.cart.cost() | currency: '$'}}

+
+ +
+
+
+
+ +
+
+
+
+
+
+
+ +
+
+
+
+

Reviews:

+
+
+ + + + + + + + + + + + + +
DescriptionRating
{{review.reviewDescription}}{{review.rating}}
+
+
+
+

Write a review:

+
+
+ +
+

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 + + +
+
+
+
+

Restaurants:

+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
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']); +