partial #3350
This commit is contained in:
parent
abd549dc3c
commit
3b680f15b1
@ -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]);
|
||||
|
||||
@ -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>
|
||||
|
||||
|
||||
|
||||
@ -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>
|
||||
|
||||
|
||||
@ -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',
|
||||
|
||||
@ -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);
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
@ -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();
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user