Skip to content

Commit 75a116a

Browse files
committed
new methods, hotfixes for fleet-ops data
1 parent 93d01b9 commit 75a116a

File tree

9 files changed

+67
-17
lines changed

9 files changed

+67
-17
lines changed

addon/models/driver.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,8 @@ export default class DriverModel extends Model {
4949
@attr('string') drivers_license_number;
5050
@attr('string', {
5151
defaultValue: get(config, 'defaultValues.driverAvatar'),
52-
}) avatar_url;
52+
})
53+
avatar_url;
5354
@attr('string') avatar_value;
5455
@attr('point') location;
5556
@attr('number') heading;

addon/models/order-config.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,11 @@ export default class OrderConfigModel extends Model {
2121
@attr('string') key;
2222
@attr('string') status;
2323
@attr('string') version;
24+
@attr('string') type;
2425
@attr('boolean', { defaultValue: false }) core_service;
2526
@attr('array') tags;
26-
@attr('object') flow;
2727
@attr('array') entities;
28+
@attr('object') flow;
2829
@attr('object') meta;
2930

3031
/** @computed */

addon/models/order.js

+29-12
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import { isArray } from '@ember/array';
66
import { isBlank } from '@ember/utils';
77
import { getOwner } from '@ember/application';
88
import { format as formatDate, formatDistanceToNow, isValid as isValidDate } from 'date-fns';
9-
import groupBy from '@fleetbase/ember-core/utils/macros/group-by';
109
import isNotModel from '@fleetbase/ember-core/utils/is-not-model';
1110

1211
export default class OrderModel extends Model {
@@ -23,12 +22,14 @@ export default class OrderModel extends Model {
2322
@attr('string') tracking_number_uuid;
2423
@attr('string') driver_assigned_uuid;
2524
@attr('string') service_quote_uuid;
25+
@attr('string') order_config_uuid;
2626
@attr('string') payload_id;
2727
@attr('string') purchase_rate_id;
2828
@attr('string') driver_id;
2929

3030
/** @relationships */
3131
@belongsTo('company') company;
32+
@belongsTo('order-config') order_config;
3233
@belongsTo('customer', { polymorphic: true, async: false }) customer;
3334
@belongsTo('facilitator', { polymorphic: true, async: false }) facilitator;
3435
@belongsTo('transaction', { async: false }) transaction;
@@ -37,10 +38,10 @@ export default class OrderModel extends Model {
3738
@belongsTo('route', { async: false }) route;
3839
@belongsTo('purchase-rate', { async: false }) purchase_rate;
3940
@belongsTo('tracking-number', { async: false }) tracking_number;
40-
@belongsTo('order-config', { async: false }) order_config;
4141
@hasMany('tracking-status', { async: false }) tracking_statuses;
4242
@hasMany('comment', { async: false }) comments;
4343
@hasMany('file', { async: false }) files;
44+
@hasMany('custom-field-value', { async: false }) custom_field_values;
4445

4546
/** @aliases */
4647
@alias('driver_assigned') driver;
@@ -101,8 +102,6 @@ export default class OrderModel extends Model {
101102
@not('hasPayload') missing_payload;
102103
@bool('dispatched') isDispatched;
103104
@not('dispatched') isNotDispatched;
104-
@equal('type', 'storefront') isStorefrontOrder;
105-
@groupBy('order_config.meta.fields', 'group') groupedMetaFields;
106105

107106
@computed('payload.{pickup.name,current_waypoint_uui,waypoints.@each.name}')
108107
get pickupName() {
@@ -411,6 +410,26 @@ export default class OrderModel extends Model {
411410
return this;
412411
}
413412

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+
414433
async loadPayload(options = {}) {
415434
const owner = getOwner(this);
416435
const store = owner.lookup('service:store');
@@ -465,18 +484,16 @@ export default class OrderModel extends Model {
465484

466485
async loadOrderConfig(options = {}) {
467486
const owner = getOwner(this);
468-
const fetch = owner.lookup('service:fetch');
487+
const store = owner.lookup('service:store');
469488

470-
if (!isBlank(this.order_config)) {
489+
if (!this.order_config_uuid || !isBlank(this.order_config)) {
471490
return;
472491
}
473492

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+
});
480497
}
481498

482499
async loadDriver(options = {}) {

addon/models/place.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@ export default class PlaceModel extends Model {
1818
@attr('string') type;
1919
@attr('string', {
2020
defaultValue: get(config, 'defaultValues.placeAvatar'),
21-
}) avatar_url;
21+
})
22+
avatar_url;
2223
@attr('string') avatar_value;
2324
@attr('string') address;
2425
@attr('string') address_html;

addon/serializers/order-config.js

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import ApplicationSerializer from '@fleetbase/ember-core/serializers/application';
2+
import { EmbeddedRecordsMixin } from '@ember-data/serializer/rest';
3+
4+
export default class OrderConfigSerializer extends ApplicationSerializer.extend(EmbeddedRecordsMixin) {}

addon/serializers/order.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ export default class OrderSerializer extends ApplicationSerializer.extend(Embedd
1010
*/
1111
get attrs() {
1212
return {
13+
order_config: { embedded: 'always' },
1314
payload: { embedded: 'always' },
1415
driver_assigned: { embedded: 'always' },
1516
facilitator: { embedded: 'always' },
@@ -21,6 +22,7 @@ export default class OrderSerializer extends ApplicationSerializer.extend(Embedd
2122
tracking_statuses: { embedded: 'always' },
2223
files: { embedded: 'always' },
2324
comments: { embedded: 'always' },
25+
custom_field_values: { embedded: 'always' },
2426
};
2527
}
2628

@@ -35,7 +37,6 @@ export default class OrderSerializer extends ApplicationSerializer.extend(Embedd
3537
const json = super.serialize(snapshot, options);
3638
const unshiftAttributes = [
3739
'order_config',
38-
'order_config_uuid',
3940
'driver_name',
4041
'tracking',
4142
'total_entities',

app/serializers/order-config.js

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export { default } from '@fleetbase/fleetops-data/serializers/order-config';

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@fleetbase/fleetops-data",
3-
"version": "0.1.11",
3+
"version": "0.1.12",
44
"description": "Fleetbase Fleet-Ops based models, serializers, transforms, adapters and GeoJson utility functions.",
55
"keywords": [
66
"fleetbase-data",
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import { module, test } from 'qunit';
2+
3+
import { setupTest } from 'dummy/tests/helpers';
4+
5+
module('Unit | Serializer | order config', function (hooks) {
6+
setupTest(hooks);
7+
8+
// Replace this with your real tests.
9+
test('it exists', function (assert) {
10+
let store = this.owner.lookup('service:store');
11+
let serializer = store.serializerFor('order-config');
12+
13+
assert.ok(serializer);
14+
});
15+
16+
test('it serializes records', function (assert) {
17+
let store = this.owner.lookup('service:store');
18+
let record = store.createRecord('order-config', {});
19+
20+
let serializedRecord = record.serialize();
21+
22+
assert.ok(serializedRecord);
23+
});
24+
});

0 commit comments

Comments
 (0)