This commit is contained in:
arzynik 2014-06-17 11:55:38 -07:00
parent abd549dc3c
commit 3b680f15b1
6 changed files with 126 additions and 91 deletions

View File

@ -12,11 +12,6 @@ class Controller_api_order extends Crunchbutton_Controller_RestAccount {
$_POST = [
'name' => 'MR TEST DEVIN',
'subtotal' => '11.50',
'tip' => '2.00',
'phone' => '_PHONE_',
'address' => '123 main santa monica',
'card' => [
'id' => 'CC1yW7tINe5OHE77eplt5hPs',
'uri' => '/cards/CC1yW7tINe5OHE77eplt5hPs',
@ -27,9 +22,10 @@ class Controller_api_order extends Crunchbutton_Controller_RestAccount {
],
'pay_type' => 'card',
'delivery_type' => 'delivery',
'restaurant' => '26',
'notes' => 'test'
];
// @todo check to see if the restaurant has the permissions for that restaurant id
// $_POST['restaurant']
switch ($this->method()) {
@ -54,11 +50,10 @@ class Controller_api_order extends Crunchbutton_Controller_RestAccount {
$charge = $order->process($_POST, 'restaurant');
if ($charge === true) {
echo json_encode([
'id_user' => c::auth()->session()->id_user,
'txn' => $order->txn,
'id_order' => $order->id_order,
'id_user' => $order->user()->id_user,
'final_price' => $order->final_price,
'uuid' => (new Order($order->id_order))->uuid,
'token' => c::auth()->session()->token
'uuid' => (new Order($order->id_order))->uuid
]);
} else {
echo json_encode(['status' => 'false', 'errors' => $charge]);

View File

@ -4,77 +4,83 @@
<h1 class="title"><i class="fa fa-credit-card"></i><span>New Order</span></h1>
<div ng-if="!account.restaurant">
<p>select a restaurant</p>
</div>
<p>Please fill out all of the customer's information. Their name and phone number will be sent to the delivery drivers.</p>
<br><br>
<ul class="ul-inputs box-content">
<li class="li-input" ng-class="{'error':form.driverName.$invalid}">
<div class="label">Name</div>
<div class="input">
<input type="text" name="name" ng-model="order.name" required="" placeholder="Customer Name" ng-minlength="5" ng-maxlength="80" class="ng-pristine ng-valid-maxlength ng-valid-minlength ng-valid ng-valid-required">
</div>
<div class="box-error">
<small ng-show="form.driverName.$error.required" class="ng-hide">Required.</small>
<small ng-show="form.driverName.$error.minlength" class="ng-hide">Name is too short. Name is required to be at least 5 characters.</small>
<small ng-show="form.driverName.$error.maxlength" class="ng-hide">Name cannot be longer than 40 characters.</small>
</div>
</li>
<li class="li-input" ng-class="{'error':form.driverName.$invalid}">
<div class="label">Phone</div>
<div class="input">
<input type="text" name="name" ng-model="order.phone" required="" placeholder="646-783-1444" ng-minlength="5" ng-maxlength="80" class="ng-pristine ng-valid-maxlength ng-valid-minlength ng-valid ng-valid-required">
</div>
</li>
<li class="li-input" ng-class="{'error':form.driverName.$invalid}">
<div class="label">Address</div>
<div class="input">
<input type="text" name="name" ng-model="order.address" required="" placeholder="1120 Princeton Drive, Marina del Rey CA 90292" ng-minlength="5" ng-maxlength="80" class="ng-pristine ng-valid-maxlength ng-valid-minlength ng-valid ng-valid-required">
</div>
</li>
<li class="li-input" ng-class="{'error':form.driverName.$invalid}">
<div class="label">Notes</div>
<div class="input">
<input type="text" name="name" ng-model="order.notes" required="" placeholder="Building name, or dial code" ng-minlength="5" ng-maxlength="80" class="ng-pristine ng-valid-maxlength ng-valid-minlength ng-valid ng-valid-required">
</div>
</li>
<div ng-if="account.restaurant">
<li class="li-input" ng-class="{'error':form.driverName.$invalid}">
<div class="label">Subtotal</div>
<div class="input">
<input type="text" name="name" ng-model="order.subtotal" required="" placeholder="0.00" ng-minlength="5" ng-maxlength="80" class="ng-pristine ng-valid-maxlength ng-valid-minlength ng-valid ng-valid-required">
</div>
</li>
<li class="li-input" ng-class="{'error':form.driverName.$invalid}">
<div class="label">Tip</div>
<div class="input">
<input type="text" name="name" ng-model="order.tip" required="" placeholder="0.00" ng-minlength="5" ng-maxlength="80" class="ng-pristine ng-valid-maxlength ng-valid-minlength ng-valid ng-valid-required">
</div>
</li>
<li class="li-input" ng-class="{'error':form.driverName.$invalid}">
<div class="label">Card Number</div>
<div class="input">
<input type="text" name="name" ng-model="card.number" required="" placeholder="0000-0000-0000-0000" ng-minlength="5" ng-maxlength="80" class="ng-pristine ng-valid-maxlength ng-valid-minlength ng-valid ng-valid-required">
</div>
</li>
<li class="li-input" ng-class="{'error':form.driverName.$invalid}">
<div class="label">Card Expiration</div>
<div class="input">
<select ng-model="card.month" ng-options="month.value as month.label for month in card._months()" class=""></select>
<select ng-model="order.year" ng-options="year.value as year.label for year in card._years()" class=""></select>
</div>
</li>
<li class="li-input" ng-show="!isSubmitting"><button class="button orange" ng-click="submit();">Submit New Order</button></li>
</ul>
<p>Please fill out all of the customer's information. Their name and phone number will be sent to the delivery drivers.</p>
<br><br>
<ul class="ul-inputs box-content">
<li class="li-input" ng-class="{'error':form.driverName.$invalid}">
<div class="label">Name</div>
<div class="input">
<input type="text" name="name" ng-model="order.name" required="" placeholder="Customer Name" ng-minlength="5" ng-maxlength="80" class="ng-pristine ng-valid-maxlength ng-valid-minlength ng-valid ng-valid-required">
</div>
<div class="box-error">
<small ng-show="form.driverName.$error.required" class="ng-hide">Required.</small>
<small ng-show="form.driverName.$error.minlength" class="ng-hide">Name is too short. Name is required to be at least 5 characters.</small>
<small ng-show="form.driverName.$error.maxlength" class="ng-hide">Name cannot be longer than 40 characters.</small>
</div>
</li>
<li class="li-input" ng-class="{'error':form.driverName.$invalid}">
<div class="label">Phone</div>
<div class="input">
<input type="text" name="name" ng-model="order.phone" required="" placeholder="646-783-1444" ng-minlength="5" ng-maxlength="80" class="ng-pristine ng-valid-maxlength ng-valid-minlength ng-valid ng-valid-required">
</div>
</li>
<li class="li-input" ng-class="{'error':form.driverName.$invalid}">
<div class="label">Address</div>
<div class="input">
<input type="text" name="name" ng-model="order.address" required="" placeholder="1120 Princeton Drive, Marina del Rey CA 90292" ng-minlength="5" ng-maxlength="80" class="ng-pristine ng-valid-maxlength ng-valid-minlength ng-valid ng-valid-required">
</div>
</li>
<li class="li-input" ng-class="{'error':form.driverName.$invalid}">
<div class="label">Notes</div>
<div class="input">
<input type="text" name="name" ng-model="order.notes" required="" placeholder="Building name, or dial code" ng-minlength="5" ng-maxlength="80" class="ng-pristine ng-valid-maxlength ng-valid-minlength ng-valid ng-valid-required">
</div>
</li>
<li class="li-input" ng-class="{'error':form.driverName.$invalid}">
<div class="label">Subtotal</div>
<div class="input">
<input type="text" name="name" ng-model="order.subtotal" required="" placeholder="0.00" ng-minlength="5" ng-maxlength="80" class="ng-pristine ng-valid-maxlength ng-valid-minlength ng-valid ng-valid-required">
</div>
</li>
<li class="li-input" ng-class="{'error':form.driverName.$invalid}">
<div class="label">Tip</div>
<div class="input">
<input type="text" name="name" ng-model="order.tip" required="" placeholder="0.00" ng-minlength="5" ng-maxlength="80" class="ng-pristine ng-valid-maxlength ng-valid-minlength ng-valid ng-valid-required">
</div>
</li>
<li class="li-input" ng-class="{'error':form.driverName.$invalid}">
<div class="label">Card Number</div>
<div class="input">
<input type="text" name="name" ng-model="card.number" required="" placeholder="0000-0000-0000-0000" ng-minlength="5" ng-maxlength="80" class="ng-pristine ng-valid-maxlength ng-valid-minlength ng-valid ng-valid-required">
</div>
</li>
<li class="li-input" ng-class="{'error':form.driverName.$invalid}">
<div class="label">Card Expiration</div>
<div class="input">
<select ng-model="card.month" ng-options="month.value as month.label for month in card._months()" class=""></select>
<select ng-model="order.year" ng-options="year.value as year.label for year in card._years()" class=""></select>
</div>
</li>
<li class="li-input" ng-show="!isSubmitting"><button class="button orange" ng-click="submit();">Submit New Order</button></li>
</ul>
</div>
</div>

View File

@ -0,0 +1,13 @@
<div class="top-pad"></div>
<div class="content-padding">
<h1 class="title"><i class="fa fa-credit-card"></i><span>Order Complete</span></h1>
<b>Total</b> {{order.final_price_plus_delivery_markup || order.final_price}}
</div>

View File

@ -84,6 +84,11 @@ NGApp.config(['$routeProvider', '$locationProvider', function($routeProvider, $l
controller: 'RestaurantOrderNew',
templateUrl: 'assets/view/restaurant-order-new.html'
})
.when('/restaurant/order/:id', {
action: 'restaurant-order',
controller: 'RestaurantOrderView',
templateUrl: 'assets/view/restaurant-order-view.html'
})
/* Settlement */
.when('/settlement', {
action: 'settlement',

View File

@ -1,23 +1,32 @@
NGApp.controller('RestaurantOrderNew', function ($scope, $http) {
NGApp.controller('RestaurantOrderView', function ($scope, $http, $routeParams) {
$http.get('/api/order/' + $routeParams.id).success(function(data){
$scope.order = data;
});
});
NGApp.controller('RestaurantOrderNew', function ($scope, $http, MainNavigationService, AccountService) {
$scope.isSubmitting = false;
$scope.order = {};
$scope.submit = function() {
$scope.isSubmitting = true;
$scope.order.restaurant = AccountService.restaurant;
$http({
method: 'POST',
url: '/api/order',
data: $scope.order,
headers: {'Content-Type': 'application/x-www-form-urlencoded'}
}).success(function(data) {
console.log(data);
console.debug(data);
$scope.isSubmitting = false;
if (data.id_order) {
MainNavigationService.link('/restaurant/order/' + data.id_order);
} else {
alert(data.errors);
}
});
}

View File

@ -15,7 +15,8 @@ NGApp.factory( 'AccountService', function($http, $rootScope, $resource) {
isRestaurant: false,
isDriver: false,
isSupport: false,
isAdmin: false
isAdmin: false,
restaurants: []
};
service.isLoggedIn = function(){
@ -51,25 +52,31 @@ NGApp.factory( 'AccountService', function($http, $rootScope, $resource) {
service.isRestaurant = service.isDriver = service.isSupport = service.isAdmin = false;
service.restaurants = [];
if (service.user.permissions.GLOBAL) {
service.isAdmin = true;
}
if (service.user.permissions.RESTAURANT) {
service.isRestaurant = true;
for (var x in service.user.permissions) {
if (x.indexOf('RESTAURANT-') == 0) {
service.restaurants.push(x.replace(/[^0-9]/g,''));
}
}
// only one restaurant for now
service.restaurant = service.restaurants[0];
}
for (var x in service.user.groups) {
if (service.user.groups[x].indexOf('drivers-') == 0) {
service.isDriver = true;
break;
}
}
for (var x in service.user.groups) {
if (service.user.groups[x].indexOf('restaurants-') == 0) {
service.isRestaurant = true;
break;
}
}
if (service.user && service.user.id_admin) {
App.snap.enable();