added basic order and staff view

This commit is contained in:
Devin Smith 2014-11-20 10:25:52 -08:00
parent 16b64d1153
commit 721efdc95d
10 changed files with 195 additions and 70 deletions

View File

@ -39,7 +39,7 @@ class Controller_api_order extends Crunchbutton_Controller_RestAccount {
default:
$order = Order::uuid(c::getPagePiece(2));
/* @var $order Crunchbutton_Order */
if (!$order->id_order) {
$order = Order::o(c::getPagePiece(2));
}
@ -48,15 +48,23 @@ class Controller_api_order extends Crunchbutton_Controller_RestAccount {
$order = $order->get(0);
}
if( $order->id_order ){
$restaurant = Admin::restaurantOrderPlacement();
if( $restaurant && $restaurant->id_restaurant && $order->id_restaurant == $order->id_restaurant ){
echo $order->json();
} else {
echo json_encode(['error' => 'invalid object']);
}
if (!$order->id_order) {
header('HTTP/1.0 404 Not Found');
exit;
}
$restaurant = Admin::restaurantOrderPlacement();
if (!c::admin()->permission()->check(['global','orders-all','orders-list-page']) && $restaurant->id_restaurant != $order->id_restaurant) {
header('HTTP/1.1 401 Unauthorized');
exit;
}
$out = $order->exports();
$out['user'] = $order->user()->id_user ? $order->user()->exports() : null;
$out['restaurant'] = $order->restaurant()->id_restaurant ? $order->restaurant()->exports() : null;
echo json_encode($out);;
break;
}
break;

View File

@ -4,7 +4,7 @@ class Controller_api_staff extends Crunchbutton_Controller_RestAccount {
public function init() {
if (!c::admin()->permission()->check(['global', 'permission-all', 'permission-users'])){
if (!c::admin()->permission()->check(['global', 'permission-all', 'permission-users'])) {
header('HTTP/1.1 401 Unauthorized');
exit;
}

View File

@ -170,7 +170,7 @@ class Cockpit_Order extends Crunchbutton_Order {
}
$out['status'] = $this->status()->last();
$out['driver'] = $this->status()->driver();
$out['driver'] = $this->status()->driver()->exports();
return $out;
}

View File

@ -39,7 +39,7 @@
<a href="/community/{{order._community_name}}">{{order._community_name}}</a>
</td>
<td><a href="/customer/{{id_user}}">{{order.name}}</a></td>
<td><a href="/driver/{{order.status.driver.id_admin}}">{{order.status.driver.name}}</a></td>
<td><a href="/staff/{{order.status.driver.id_admin}}">{{order.status.driver.name}}</a></td>
<td>${{order.final_price_plus_delivery_markup}}</td>
<td>
<b>{{order.status.status}}</b><br>

View File

@ -0,0 +1,124 @@
<div class="top-pad"></div>
<div class="content-padding" ng-if="ready">
<h1 class="title left"><i class="fa fa-car"></i><span>Order</span> : #{{order.id_order}}</h1>
<div class="ticket-status-top">
<div class="ticket-status-open">{{order.status.status}}</div>
</div>
<div class="divider"></div>
<div class="support-boxes">
<div ng-if="!order.id_order" class="support-box-wrap">
<h1>Invalid Order</h1>
</div>
<div ng-if="order.id_order" class="support-box-wrap">
<h1>Order <a href="/order/{{order.id_order}}">#{{order.id_order}}</a></h1>
<div class="box-content-color">
<div class="field-container">
<div class="field-row">
<div class="field-key">Pay / Type</div>
<div class="field-value">{{order.pay_type | capitalize}} / {{order.delivery_type | capitalize}}</div>
</div>
<div class="field-row">
<div class="field-key">Placed At</div>
<div class="field-value">{{order.date}} (<span am-time-ago="order.date"></span>)</div>
</div>
<div class="field-row">
<div class="field-key">Status</div>
<div class="field-value">
<span ng-if="order.status"><b>{{order.status.status}}</b> <span am-time-ago="order.status.timestamp*1000"></span></span>
<span ng-if="!order.status">{{order.confirmed ? 'Confirmed' : 'Placed'}}</span>
</div>
</div>
</div>
</div>
</div>
<div ng-if="order.user.id_user" class="support-box-wrap">
<h1>Customer <a href="/customer/{{order.user.id_user}}">#{{order.user.id_user}}</a></h1>
<div class="box-content-color">
<div class="field-container">
<div class="field-row">
<div class="field-key">Name</div>
<div class="field-value">{{order.user.name}}</div>
</div>
<div class="field-row">
<div class="field-key">Phone</div>
<div class="field-value"><a href ng-click="callText(order.user.phone)">{{order.user.phone | formatPhone}}</a></div>
</div>
<div class="field-row">
<div class="field-key">Address</div>
<div class="field-value"><a href ng-click="routeAddress(order.user.address)">{{order.user.address}}</a></div>
</div>
<div class="field-row">
<div class="field-key">Distance from restaurant</div>
<div class="field-value">@todo</div>
</div>
</div>
</div>
</div>
<div ng-if="order.driver.id_admin" class="support-box-wrap">
<h1>Driver <a href="/staff/{{ticket.driver.id_admin}}">#{{order.driver.id_admin}}</a></h1>
<div class="box-content-color">
<div class="field-container">
<div class="field-row">
<div class="field-key">Name</div>
<div class="field-value">{{order.driver.name}}</div>
</div>
<div class="field-row">
<div class="field-key">Phone</div>
<div class="field-value"><a href ng-click="callText(order.driver.phone)">{{order.driver.phone | formatPhone}}</a></div>
</div>
<div class="field-row">
<div class="field-key">Deliveries</div>
<div class="field-value">{{order.driver.deliveries.length}}</div>
</div>
<div class="field-row">
<div class="field-key">Shift ends in</div>
<div class="field-value">@todo</div>
</div>
</div>
</div>
</div>
<div ng-if="order.restaurant.id_restaurant" class="support-box-wrap">
<h1>Restaurant <a href="/restaurant/{{order.restaurant.id_restaurant}}">#{{order.restaurant.id_restaurant}}</a></h1>
<div class="box-content-color">
<div class="field-container">
<div class="field-row">
<div class="field-key">Name</div>
<div class="field-value">{{order.restaurant.name}}</div>
</div>
<div class="field-row">
<div class="field-key">Phone</div>
<div class="field-value"><a href ng-click="callText(order.restaurant.phone)">{{order.restaurant.phone | formatPhone}}</a></div>
</div>
<div class="field-row">
<div class="field-key">Address</div>
<div class="field-value"><a href ng-click="routeAddress(order.restaurant.address)">{{order.restaurant.address}}</a></div>
</div>
<div class="field-row">
<div class="field-key">Distance from customer</div>
<div class="field-value">@todo</div>
</div>
</div>
</div>
</div>
</div>
</div>
<hack-expand-content></hack-expand-content>

View File

@ -0,0 +1,32 @@
<div class="top-pad"></div>
<div class="content-padding">
<h1 class="subltitle "><i class="fa fa-comments-o"></i>&nbsp;&nbsp;<span>{{staff.name}}</span></h1>
<div class="box-content2 box-content-table">
<table class="tb-zebra">
<tr>
<th>ID</th>
<th>From</th>
<th>Updated</th>
<th>Name</th>
<th>Message</th>
</tr>
<tr ng-repeat="ticket in tickets">
<td><a href="/ticket/{{ticket.id_support}}">{{ticket.id_support}}</td>
<td><a href ng-click="callText(ticket.user.phone)">{{ticket.user.phone | formatPhone}}</a></td>
<td>
<span ng-if="ticket.timestamp" am-time-ago="ticket.timestamp*1000"></span>
<span ng-if="!ticket.timestamp"><i>Unknown</i></span>
</td>
<td>{{ticket.name}}</td>
<td>{{ticket.message}}</td>
</tr>
</table>
</div>
</div>

View File

@ -48,7 +48,7 @@
</div>
<div ng-if="ticket.order.driver.id_admin" class="support-box-wrap">
<h1>Driver <a href="/driver/{{ticket.driver.id_admin}}">#{{ticket.order.driver.id_admin}}</a></h1>
<h1>Driver <a href="/staff/{{ticket.driver.id_admin}}">#{{ticket.order.driver.id_admin}}</a></h1>
<div class="box-content-color">
<div class="field-container">
<div class="field-row">

View File

@ -93,6 +93,7 @@
</table>
</a>
<? /*
<a href="/restaurant/order/placement/dashboard" class="menu-link" ng-if="(account.user.permissions.GLOBAL || account.isRestaurant) && menu.toggle=='admin'" ng-class="{'nav-active': (navigation.page == 'restaurant-order-placement')}">
<table cellpadding="0" cellspacing="0" class="side-menu-wrap">
<tr>
@ -101,6 +102,7 @@
</tr>
</table>
</a>
*/ ?>
<a href="/settlement" class="menu-link" ng-if="account.user.permissions.GLOBAL && menu.toggle=='admin'" ng-class="{'nav-active': (navigation.page == 'settlement')}">
<table cellpadding="0" cellspacing="0" class="side-menu-wrap">
@ -138,7 +140,7 @@
</table>
</a>
<a href="/deploy" class="menu-link" ng-if="account.user.permissions.GLOBAL || account.user.permissions['SERVER-DEPLOY'] || account.user.permissions['SERVER-DEPLOY-ADMIN'] && menu.toggle=='admin'" ng-class="{'nav-active': (navigation.page == 'deploy' || navigation.page == 'deploy-server' || navigation.page == 'deploy-version')}">
<a href="/deploy" class="menu-link" ng-if="(account.user.permissions.GLOBAL || account.user.permissions['SERVER-DEPLOY'] || account.user.permissions['SERVER-DEPLOY-ADMIN']) && menu.toggle=='admin'" ng-class="{'nav-active': (navigation.page == 'deploy' || navigation.page == 'deploy-server' || navigation.page == 'deploy-version')}">
<table cellpadding="0" cellspacing="0" class="side-menu-wrap">
<tr>
<td class="side-menu-icon"><i class="fa fa-code"></i></td>

View File

@ -63,62 +63,9 @@ NGApp.controller('OrdersCtrl', function ($scope, $routeParams, $location, OrderS
};
});
NGApp.controller('OrderCtrl', function ($scope, $routeParams, DeployServices, $interval, MainNavigationService, DateTimeService) {
$scope.deploy = {
date: DateTimeService.local(new Date).format('YYYY-MM-DD HH:mm:ss Z'),
version: 'master'
};
$scope.updateCommits = function() {
$scope.commitLoad = true;
DeployServices.server.commits($routeParams.id, function(d) {
$scope.commits = d;
$scope.commitLoad = false;
});
};
$scope.updateCommits();
$scope.server = {
name: $routeParams.id
};
var update = function() {
DeployServices.server.get($routeParams.id, function(d) {
$scope.server = d;
});
DeployServices.server.versions($routeParams.id, function(d) {
$scope.versions = d;
});
$scope.saveDeploy = function() {
if ($scope.deploying) {
return;
}
$scope.deploying = true;
var version = {
date: DateTimeService.server($scope.deploy.date).format('YYYY-MM-DD HH:mm:ss Z'),
id_deploy_server: $routeParams.id,
version: $scope.deploy.version
};
DeployServices.version.post(version, function(d) {
$scope.deploying = false;
MainNavigationService.link('/deploy/version/' + d.id_deploy_version);
});
};
};
update();
$scope.cancel = function(id) {
DeployServices.version.cancel(id, update);
};
$scope.updater = $interval(update, 5000);
$scope.$on('$destroy', function() {
$interval.cancel($scope.updater);
NGApp.controller('OrderCtrl', function ($scope, $routeParams, $interval, OrderService) {
OrderService.get($routeParams.id, function(d) {
$scope.order = d;
$scope.ready = true;
});
});

View File

@ -6,6 +6,11 @@ NGApp.config(['$routeProvider', function($routeProvider) {
templateUrl: 'assets/view/staff-list.html',
reloadOnSearch: false
})
.when('/staff/:id', {
action: 'staff',
controller: 'StaffInfoCtrl',
templateUrl: 'assets/view/staff-staff.html'
})
.when('/staff/:id/payinfo', {
action: 'staff',
controller: 'StaffPayInfoCtrl',
@ -13,6 +18,13 @@ NGApp.config(['$routeProvider', function($routeProvider) {
});
}]);
NGApp.controller('StaffInfoCtrl', function ($scope, $routeParams, $location, StaffService) {
StaffService.get($routeParams.id, function(staff) {
$scope.staff = staff;
$scope.ready = true;
});
});
NGApp.controller('StaffCtrl', function ($scope, $routeParams, $location, StaffService) {
var query = $location.search();