@@ -6,7 +6,6 @@ import { isArray } from '@ember/array';
6
6
import { isBlank } from '@ember/utils' ;
7
7
import { getOwner } from '@ember/application' ;
8
8
import { format as formatDate , formatDistanceToNow , isValid as isValidDate } from 'date-fns' ;
9
- import groupBy from '@fleetbase/ember-core/utils/macros/group-by' ;
10
9
import isNotModel from '@fleetbase/ember-core/utils/is-not-model' ;
11
10
12
11
export default class OrderModel extends Model {
@@ -23,12 +22,14 @@ export default class OrderModel extends Model {
23
22
@attr ( 'string' ) tracking_number_uuid ;
24
23
@attr ( 'string' ) driver_assigned_uuid ;
25
24
@attr ( 'string' ) service_quote_uuid ;
25
+ @attr ( 'string' ) order_config_uuid ;
26
26
@attr ( 'string' ) payload_id ;
27
27
@attr ( 'string' ) purchase_rate_id ;
28
28
@attr ( 'string' ) driver_id ;
29
29
30
30
/** @relationships */
31
31
@belongsTo ( 'company' ) company ;
32
+ @belongsTo ( 'order-config' ) order_config ;
32
33
@belongsTo ( 'customer' , { polymorphic : true , async : false } ) customer ;
33
34
@belongsTo ( 'facilitator' , { polymorphic : true , async : false } ) facilitator ;
34
35
@belongsTo ( 'transaction' , { async : false } ) transaction ;
@@ -37,10 +38,10 @@ export default class OrderModel extends Model {
37
38
@belongsTo ( 'route' , { async : false } ) route ;
38
39
@belongsTo ( 'purchase-rate' , { async : false } ) purchase_rate ;
39
40
@belongsTo ( 'tracking-number' , { async : false } ) tracking_number ;
40
- @belongsTo ( 'order-config' , { async : false } ) order_config ;
41
41
@hasMany ( 'tracking-status' , { async : false } ) tracking_statuses ;
42
42
@hasMany ( 'comment' , { async : false } ) comments ;
43
43
@hasMany ( 'file' , { async : false } ) files ;
44
+ @hasMany ( 'custom-field-value' , { async : false } ) custom_field_values ;
44
45
45
46
/** @aliases */
46
47
@alias ( 'driver_assigned' ) driver ;
@@ -101,8 +102,6 @@ export default class OrderModel extends Model {
101
102
@not ( 'hasPayload' ) missing_payload ;
102
103
@bool ( 'dispatched' ) isDispatched ;
103
104
@not ( 'dispatched' ) isNotDispatched ;
104
- @equal ( 'type' , 'storefront' ) isStorefrontOrder ;
105
- @groupBy ( 'order_config.meta.fields' , 'group' ) groupedMetaFields ;
106
105
107
106
@computed ( 'payload.{pickup.name,current_waypoint_uui,waypoints.@each.name}' )
108
107
get pickupName ( ) {
@@ -411,6 +410,26 @@ export default class OrderModel extends Model {
411
410
return this ;
412
411
}
413
412
413
+ async persistProperty ( key , value , options = { } ) {
414
+ return this . persistProperties ( { [ key ] : value } , options ) ;
415
+ }
416
+
417
+ async persistProperties ( properties = { } , options = { } ) {
418
+ const owner = getOwner ( this ) ;
419
+ const fetch = owner . lookup ( 'service:fetch' ) ;
420
+
421
+ this . setProperties ( properties ) ;
422
+ if ( typeof options . onBefore === 'function' ) {
423
+ options . onBefore ( this ) ;
424
+ }
425
+
426
+ return fetch . put ( `orders/${ this . id } ` , properties , { normalizeToEmberData : true , normalizeModelType : 'order' } ) . then ( ( order ) => {
427
+ if ( typeof options . onAfter === 'function' ) {
428
+ options . onAfter ( order ) ;
429
+ }
430
+ } ) ;
431
+ }
432
+
414
433
async loadPayload ( options = { } ) {
415
434
const owner = getOwner ( this ) ;
416
435
const store = owner . lookup ( 'service:store' ) ;
@@ -465,18 +484,16 @@ export default class OrderModel extends Model {
465
484
466
485
async loadOrderConfig ( options = { } ) {
467
486
const owner = getOwner ( this ) ;
468
- const fetch = owner . lookup ( 'service:fetch ' ) ;
487
+ const store = owner . lookup ( 'service:store ' ) ;
469
488
470
- if ( ! isBlank ( this . order_config ) ) {
489
+ if ( ! this . order_config_uuid || ! isBlank ( this . order_config ) ) {
471
490
return ;
472
491
}
473
492
474
- return fetch
475
- . get ( 'fleet-ops/order-configs/get-installed' , { key : this . type ?? 'default' , single : true } , { normalizeToEmberData : true , normalizeModelType : 'order-config' , ...options } )
476
- . then ( ( orderConfig ) => {
477
- this . set ( 'order_config' , orderConfig ) ;
478
- return orderConfig ;
479
- } ) ;
493
+ return store . findRecord ( 'order-config' , this . order_config_uuid , options ) . then ( ( orderConfig ) => {
494
+ this . set ( 'order_config' , orderConfig ) ;
495
+ return orderConfig ;
496
+ } ) ;
480
497
}
481
498
482
499
async loadDriver ( options = { } ) {
0 commit comments