partial #3350
This commit is contained in:
parent
abd549dc3c
commit
3b680f15b1
@ -12,11 +12,6 @@ class Controller_api_order extends Crunchbutton_Controller_RestAccount {
|
|||||||
|
|
||||||
|
|
||||||
$_POST = [
|
$_POST = [
|
||||||
'name' => 'MR TEST DEVIN',
|
|
||||||
'subtotal' => '11.50',
|
|
||||||
'tip' => '2.00',
|
|
||||||
'phone' => '_PHONE_',
|
|
||||||
'address' => '123 main santa monica',
|
|
||||||
'card' => [
|
'card' => [
|
||||||
'id' => 'CC1yW7tINe5OHE77eplt5hPs',
|
'id' => 'CC1yW7tINe5OHE77eplt5hPs',
|
||||||
'uri' => '/cards/CC1yW7tINe5OHE77eplt5hPs',
|
'uri' => '/cards/CC1yW7tINe5OHE77eplt5hPs',
|
||||||
@ -27,9 +22,10 @@ class Controller_api_order extends Crunchbutton_Controller_RestAccount {
|
|||||||
],
|
],
|
||||||
'pay_type' => 'card',
|
'pay_type' => 'card',
|
||||||
'delivery_type' => 'delivery',
|
'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()) {
|
switch ($this->method()) {
|
||||||
@ -54,11 +50,10 @@ class Controller_api_order extends Crunchbutton_Controller_RestAccount {
|
|||||||
$charge = $order->process($_POST, 'restaurant');
|
$charge = $order->process($_POST, 'restaurant');
|
||||||
if ($charge === true) {
|
if ($charge === true) {
|
||||||
echo json_encode([
|
echo json_encode([
|
||||||
'id_user' => c::auth()->session()->id_user,
|
'id_order' => $order->id_order,
|
||||||
'txn' => $order->txn,
|
'id_user' => $order->user()->id_user,
|
||||||
'final_price' => $order->final_price,
|
'final_price' => $order->final_price,
|
||||||
'uuid' => (new Order($order->id_order))->uuid,
|
'uuid' => (new Order($order->id_order))->uuid
|
||||||
'token' => c::auth()->session()->token
|
|
||||||
]);
|
]);
|
||||||
} else {
|
} else {
|
||||||
echo json_encode(['status' => 'false', 'errors' => $charge]);
|
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>
|
<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>
|
<div ng-if="account.restaurant">
|
||||||
|
|
||||||
<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>
|
|
||||||
|
|
||||||
|
<p>Please fill out all of the customer's information. Their name and phone number will be sent to the delivery drivers.</p>
|
||||||
|
|
||||||
<li class="li-input" ng-class="{'error':form.driverName.$invalid}">
|
<br><br>
|
||||||
<div class="label">Card Expiration</div>
|
<ul class="ul-inputs box-content">
|
||||||
<div class="input">
|
<li class="li-input" ng-class="{'error':form.driverName.$invalid}">
|
||||||
|
<div class="label">Name</div>
|
||||||
<select ng-model="card.month" ng-options="month.value as month.label for month in card._months()" class=""></select>
|
<div class="input">
|
||||||
<select ng-model="order.year" ng-options="year.value as year.label for year in card._years()" class=""></select>
|
<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>
|
||||||
</li>
|
<div class="box-error">
|
||||||
<li class="li-input" ng-show="!isSubmitting"><button class="button orange" ng-click="submit();">Submit New Order</button></li>
|
<small ng-show="form.driverName.$error.required" class="ng-hide">Required.</small>
|
||||||
</ul>
|
<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>
|
</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',
|
controller: 'RestaurantOrderNew',
|
||||||
templateUrl: 'assets/view/restaurant-order-new.html'
|
templateUrl: 'assets/view/restaurant-order-new.html'
|
||||||
})
|
})
|
||||||
|
.when('/restaurant/order/:id', {
|
||||||
|
action: 'restaurant-order',
|
||||||
|
controller: 'RestaurantOrderView',
|
||||||
|
templateUrl: 'assets/view/restaurant-order-view.html'
|
||||||
|
})
|
||||||
/* Settlement */
|
/* Settlement */
|
||||||
.when('/settlement', {
|
.when('/settlement', {
|
||||||
action: '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.isSubmitting = false;
|
||||||
$scope.order = {};
|
$scope.order = {};
|
||||||
|
|
||||||
$scope.submit = function() {
|
$scope.submit = function() {
|
||||||
$scope.isSubmitting = true;
|
$scope.isSubmitting = true;
|
||||||
|
$scope.order.restaurant = AccountService.restaurant;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
$http({
|
$http({
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
url: '/api/order',
|
url: '/api/order',
|
||||||
data: $scope.order,
|
data: $scope.order,
|
||||||
headers: {'Content-Type': 'application/x-www-form-urlencoded'}
|
headers: {'Content-Type': 'application/x-www-form-urlencoded'}
|
||||||
}).success(function(data) {
|
}).success(function(data) {
|
||||||
console.log(data);
|
console.debug(data);
|
||||||
|
|
||||||
$scope.isSubmitting = false;
|
$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,
|
isRestaurant: false,
|
||||||
isDriver: false,
|
isDriver: false,
|
||||||
isSupport: false,
|
isSupport: false,
|
||||||
isAdmin: false
|
isAdmin: false,
|
||||||
|
restaurants: []
|
||||||
};
|
};
|
||||||
|
|
||||||
service.isLoggedIn = function(){
|
service.isLoggedIn = function(){
|
||||||
@ -51,25 +52,31 @@ NGApp.factory( 'AccountService', function($http, $rootScope, $resource) {
|
|||||||
|
|
||||||
|
|
||||||
service.isRestaurant = service.isDriver = service.isSupport = service.isAdmin = false;
|
service.isRestaurant = service.isDriver = service.isSupport = service.isAdmin = false;
|
||||||
|
service.restaurants = [];
|
||||||
|
|
||||||
if (service.user.permissions.GLOBAL) {
|
if (service.user.permissions.GLOBAL) {
|
||||||
service.isAdmin = true;
|
service.isAdmin = true;
|
||||||
}
|
}
|
||||||
if (service.user.permissions.RESTAURANT) {
|
if (service.user.permissions.RESTAURANT) {
|
||||||
service.isRestaurant = true;
|
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) {
|
for (var x in service.user.groups) {
|
||||||
if (service.user.groups[x].indexOf('drivers-') == 0) {
|
if (service.user.groups[x].indexOf('drivers-') == 0) {
|
||||||
service.isDriver = true;
|
service.isDriver = true;
|
||||||
break;
|
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) {
|
if (service.user && service.user.id_admin) {
|
||||||
App.snap.enable();
|
App.snap.enable();
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user