Browse Source

feat: add order detail page localization and permission

skoc10/publish-charts-artifacthub
Mahmut Gundogdu 5 years ago
parent
commit
98662a1a96
  1. 9
      apps/angular/projects/ordering/config/src/enums/policy-names.ts
  2. 2
      apps/angular/projects/ordering/config/src/enums/route-names.ts
  3. 3
      apps/angular/projects/ordering/config/src/providers/route.provider.ts
  4. 34
      apps/angular/projects/ordering/src/pages/orders/order-detail/order-detail.component.html
  5. 9
      apps/angular/projects/ordering/src/pages/orders/orders.component.html
  6. 6
      apps/angular/projects/ordering/src/pages/orders/orders.component.ts
  7. 15
      services/ordering/src/EShopOnAbp.OrderingService.Domain.Shared/Localization/OrderingService/en.json

9
apps/angular/projects/ordering/config/src/enums/policy-names.ts

@ -1,7 +1,6 @@
export const enum eOrderingPolicyNames { export const enum eOrderingPolicyNames {
Ordering = 'CatalogService.Products', ordering = 'OrderingService.Orders',
detail = 'OrderingService.Orders.Orders',
ProductManagementCreate = 'CatalogService.Products.Create', setAsShipped = 'OrderingService.Orders.SetAsShipped',
ProductManagementUpdate = 'CatalogService.Products.Update', setAsCancelled = 'OrderingService.Products.SetAsCancelled',
ProductManagementDelete = 'CatalogService.Products.Delete',
} }

2
apps/angular/projects/ordering/config/src/enums/route-names.ts

@ -1,3 +1,3 @@
export const enum eOrderingRouteNames { export const enum eOrderingRouteNames {
Ordering = 'OrderingService::Menu:OrderManagement' ordering = 'OrderingService::Menu:OrderManagement'
} }

3
apps/angular/projects/ordering/config/src/providers/route.provider.ts

@ -12,8 +12,9 @@ export function configureRoutes(routesService: RoutesService) {
routesService.add([ routesService.add([
{ {
path: '/ordering', path: '/ordering',
name: eOrderingRouteNames.Ordering, name: eOrderingRouteNames.ordering,
layout: eLayoutType.application, layout: eLayoutType.application,
requiredPolicy: eOrderingPolicyNames.ordering,
parentName: null, parentName: null,
iconClass: 'bi bi-collection-fill', iconClass: 'bi bi-collection-fill',
}, },

34
apps/angular/projects/ordering/src/pages/orders/order-detail/order-detail.component.html

@ -1,18 +1,18 @@
<abp-modal [visible]='visible' (visibleChange)='visibleChange.emit($event)' [options]='modalOption'> <abp-modal [visible]='visible' (visibleChange)='visibleChange.emit($event)' [options]='modalOption'>
<ng-template #abpHeader> <ng-template #abpHeader>
<h3>Order Detail</h3> <h3>{{"OrderingService::ModalTitle" | abpLocalization }}</h3>
</ng-template> </ng-template>
<ng-template #abpBody> <ng-template #abpBody>
<div *ngIf='order'> <div *ngIf='order'>
<div class='container'> <div class='container'>
<lib-order-detail-item label='Order Number'>#{{order.orderNo}}</lib-order-detail-item> <lib-order-detail-item [label]="'OrderingService::DisplayName:OrderNo' | abpLocalization">#{{order.orderNo}}</lib-order-detail-item>
<lib-order-detail-item label='Order Status'>{{order.orderStatus}}</lib-order-detail-item> <lib-order-detail-item [label]="'OrderingService::DisplayName:OrderStatus' | abpLocalization">{{order.orderStatus}}</lib-order-detail-item>
<lib-order-detail-item label='Buyer Name'>{{order.buyer.name}}</lib-order-detail-item> <lib-order-detail-item [label]="'OrderingService::DisplayName:BuyerName' | abpLocalization">{{order.buyer.name}}</lib-order-detail-item>
<lib-order-detail-item label='Buyer Email'>{{order.buyer.email}}</lib-order-detail-item> <lib-order-detail-item [label]="'OrderingService::DisplayName:BuyerEmail' | abpLocalization">{{order.buyer.email}}</lib-order-detail-item>
<lib-order-detail-item label='Address'> <lib-order-detail-item [label]="'OrderingService::DisplayName:Address' | abpLocalization">
<span *ngIf='order.address as address'> <span *ngIf='order.address as address'>
{{address.description}} <br /> {{address.description}} <br />
{{address.street}} <br /> {{address.street}} <br />
@ -20,35 +20,33 @@
{{address.city}} / {{address.country}} <br /> {{address.city}} / {{address.country}} <br />
</span> </span>
</lib-order-detail-item> </lib-order-detail-item>
<lib-order-detail-item label='Payment Method'>{{order.paymentMethod}}</lib-order-detail-item> <lib-order-detail-item [label]="'OrderingService::DisplayName:PaymentMethod' | abpLocalization">{{order.paymentMethod}}</lib-order-detail-item>
<lib-order-detail-item label='Total'>{{order.orderTotal | currency}}</lib-order-detail-item> <lib-order-detail-item [label]="'OrderingService::DisplayName:Total' | abpLocalization">{{order.orderTotal | currency}}</lib-order-detail-item>
</div> </div>
<br><br><br> <br><br><br>
<ngx-datatable [rows]='(order.items)' default> <ngx-datatable [rows]='(order.items)' default>
<!-- TODO: localize column headers --> <!-- TODO: localize column headers -->
<ngx-datatable-column name='ProductId' prop='productId'></ngx-datatable-column> <ngx-datatable-column [name]="'OrderingService::DisplayName:ProductId' | abpLocalization" prop='productId'></ngx-datatable-column>
<ngx-datatable-column name='PictureUrl' prop='pictureUrl'> <ngx-datatable-column [name]="'OrderingService::DisplayName:PictureUrl' | abpLocalization" prop='pictureUrl'>
<ng-template let-value='value' ngx-datatable-cell-template> <ng-template let-value='value' ngx-datatable-cell-template>
<img [src]="mediaServerUrl + '/product-images/' + value" width='80' /> <img [src]="mediaServerUrl + '/product-images/' + value" width='80' alt='' />
</ng-template> </ng-template>
</ngx-datatable-column> </ngx-datatable-column>
<ngx-datatable-column name='ProductName' prop='productName'></ngx-datatable-column> <ngx-datatable-column [name]="'OrderingService::DisplayName:ProductName' | abpLocalization" prop='productName'></ngx-datatable-column>
<ngx-datatable-column name='UnitPrice' prop='unitPrice'> <ngx-datatable-column [name]="'OrderingService::DisplayName:UnitPrice' | abpLocalization" prop='unitPrice'>
<ng-template let-value='value' ngx-datatable-cell-template> <ng-template let-value='value' ngx-datatable-cell-template>
{{value | currency }} {{value | currency }}
</ng-template> </ng-template>
</ngx-datatable-column> </ngx-datatable-column>
<ngx-datatable-column name='Units' prop='units'></ngx-datatable-column> <ngx-datatable-column [name]="'OrderingService::DisplayName:Units' | abpLocalization" prop='units'></ngx-datatable-column>
<ngx-datatable-column name='Discount' prop='discount'> <ngx-datatable-column [name]="'OrderingService::DisplayName:Discount' | abpLocalization" prop='discount'>
<ng-template let-value='value' ngx-datatable-cell-template> <ng-template let-value='value' ngx-datatable-cell-template>
{{value }} % {{value }} %
</ng-template> </ng-template>
</ngx-datatable-column> </ngx-datatable-column>
<ngx-datatable-column name='Total Price'> <ngx-datatable-column [name]="'OrderingService::DisplayName:TotalPrice' | abpLocalization">
<ng-template let-row='row' ngx-datatable-cell-template> <ng-template let-row='row' ngx-datatable-cell-template>
{{(row.units * row.unitPrice) | currency }} {{(row.units * row.unitPrice) | currency }}
</ng-template> </ng-template>

9
apps/angular/projects/ordering/src/pages/orders/orders.component.html

@ -27,21 +27,24 @@
<button <button
class="dropdown-item" class="dropdown-item"
(click)='openModal(row)' (click)='openModal(row)'
*abpPermission='permissions.detail'
> >
{{ 'AbpUi::Edit' | abpLocalization }} {{ 'AbpUi::Detail' | abpLocalization }}
</button> </button>
<button <button
class="dropdown-item" class="dropdown-item"
(click)='setAsShipped(row)' (click)='setAsShipped(row)'
*abpPermission='permissions.setAsCancelled'
> >
{{ 'AbpOrdering::Permission:Orders.SetAsCancelled' | abpLocalization }} {{ 'OrderingService::Permission:Orders.SetAsCancelled' | abpLocalization }}
</button> </button>
<!-- Todo: Add permissions --> <!-- Todo: Add permissions -->
<button <button
class="dropdown-item" class="dropdown-item"
*abpPermission='permissions.setAsShipped'
(click)='setAsCancelled(row)' (click)='setAsCancelled(row)'
> >
{{ 'AbpOrdering::Permission:Orders.SetAsShipped' | abpLocalization }} {{ 'OrderingService::Permission:Orders.SetAsShipped' | abpLocalization }}
</button> </button>
</div> </div>
</div> </div>

6
apps/angular/projects/ordering/src/pages/orders/orders.component.ts

@ -3,6 +3,7 @@ import { OrderService } from '../../lib/proxy/orders';
import { OrderViewModel, toOrderViewModel } from '../../lib'; import { OrderViewModel, toOrderViewModel } from '../../lib';
import { Confirmation, ConfirmationService } from '@abp/ng.theme.shared'; import { Confirmation, ConfirmationService } from '@abp/ng.theme.shared';
import { ListService } from '@abp/ng.core'; import { ListService } from '@abp/ng.core';
import { eOrderingPolicyNames } from '@eshoponabp/ordering/config';
@Component({ @Component({
selector: 'lib-orders', selector: 'lib-orders',
@ -18,6 +19,11 @@ export class OrdersComponent implements OnInit {
isModalVisible = false; isModalVisible = false;
items: OrderViewModel[]; items: OrderViewModel[];
count = 0; count = 0;
permissions = {
detail: eOrderingPolicyNames.ordering,
setAsShipped: eOrderingPolicyNames.setAsShipped,
setAsCancelled: eOrderingPolicyNames.setAsCancelled,
};
ngOnInit(): void { ngOnInit(): void {

15
services/ordering/src/EShopOnAbp.OrderingService.Domain.Shared/Localization/OrderingService/en.json

@ -15,8 +15,21 @@
"DisplayName:OrderNo": "Order No", "DisplayName:OrderNo": "Order No",
"DisplayName:OrderDate": "Order Date", "DisplayName:OrderDate": "Order Date",
"DisplayName:OrderTotal": "Total", "DisplayName:OrderTotal": "Order Total",
"DisplayName:OrderStatus": "Order Status", "DisplayName:OrderStatus": "Order Status",
"DisplayName:ProductId": "Product Id",
"DisplayName:ProductName": "Product Name",
"DisplayName:PictureUrl": "Picture",
"DisplayName:Units": "Unit",
"DisplayName:UnitPrice": "Unit Price",
"DisplayName:Discount": "Discount",
"DisplayName:TotalPrice": "Total Price",
"DisplayName:BuyerName": "Buyer Name",
"DisplayName:BuyerEmail": "Buyer E-mail",
"DisplayName:Address": "Address",
"DisplayName:PaymentMethod": "Payment Method",
"DisplayName:Total": "Total",
"Permission:Orders.SetAsCancelled": "Set As Cancelled", "Permission:Orders.SetAsCancelled": "Set As Cancelled",
"Permission:Orders.SetAsShipped": "Set As Shipped" "Permission:Orders.SetAsShipped": "Set As Shipped"
} }

Loading…
Cancel
Save