diff --git a/addon/models/issue.js b/addon/models/issue.js index 38d0b22..50010bb 100644 --- a/addon/models/issue.js +++ b/addon/models/issue.js @@ -6,6 +6,7 @@ import isRelationMissing from '@fleetbase/ember-core/utils/is-relation-missing'; export default class IssueModel extends Model { /** @ids */ + @attr('string') uuid; @attr('string') public_id; @attr('string') issue_id; @attr('string') company_uuid; @@ -13,12 +14,15 @@ export default class IssueModel extends Model { @attr('string') assigned_to_uuid; @attr('string') driver_uuid; @attr('string') vehicle_uuid; + @attr('string') order_uuid; /** @relationships */ - @belongsTo('user') reporter; - @belongsTo('user') assignee; - @belongsTo('vehicle') vehicle; - @belongsTo('driver') driver; + @belongsTo('user', { async: false }) reporter; + @belongsTo('user', { async: false }) assignee; + @belongsTo('vehicle', { async: false }) vehicle; + @belongsTo('driver', { async: false }) driver; + @belongsTo('order', { async: false }) order; + @hasMany('file', { async: false }) files; @hasMany('custom-field-value', { async: false }) custom_field_values; /** @attributes */ @@ -37,6 +41,7 @@ export default class IssueModel extends Model { @attr('raw') meta; /** @dates */ + @attr('date') resolved_at; @attr('date') deleted_at; @attr('date') created_at; @attr('date') updated_at; diff --git a/addon/models/order.js b/addon/models/order.js index a444b72..b514a7f 100644 --- a/addon/models/order.js +++ b/addon/models/order.js @@ -80,6 +80,7 @@ export default class OrderModel extends Model { @attr('string') status; @attr('string') latest_status; @attr('string') latest_status_code; + @attr('string') currency; @attr('number') adhoc_distance; @attr('number') distance; @attr('number') time; diff --git a/addon/models/service-rate-fee.js b/addon/models/service-rate-fee.js index 6ce8d89..7d630b1 100644 --- a/addon/models/service-rate-fee.js +++ b/addon/models/service-rate-fee.js @@ -73,7 +73,11 @@ export default class ServiceRateFeeModel extends Model { return formatDate(this.created_at, 'dd, MMM'); } - @computed('is_fallback', 'zone_uuid', 'service_area_uuid', 'zone.id', 'service_area.id') get geography_type() { + @computed('selected_geography_type', 'is_fallback', 'zone_uuid', 'service_area_uuid', 'zone.id', 'service_area.id') get geography_type() { + if (this.selected_geography_type) { + return this.selected_geography_type; + } + if (this.is_fallback) { return 'fallback'; } diff --git a/addon/serializers/issue.js b/addon/serializers/issue.js index 979898a..b21d1f3 100644 --- a/addon/serializers/issue.js +++ b/addon/serializers/issue.js @@ -13,6 +13,8 @@ export default class IssueSerializer extends ApplicationSerializer.extend(Embedd vehicle: { embedded: 'always' }, reporter: { embedded: 'always' }, assignee: { embedded: 'always' }, + order: { embedded: 'always' }, + files: { embedded: 'always' }, custom_field_values: { embedded: 'always' }, }; } diff --git a/package.json b/package.json index b7d7837..65193b4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@fleetbase/fleetops-data", - "version": "0.1.34", + "version": "0.1.35", "description": "Fleetbase Fleet-Ops based models, serializers, transforms, adapters and GeoJson utility functions.", "keywords": [ "fleetbase-data", diff --git a/tests/unit/models/service-rate-fee-test.js b/tests/unit/models/service-rate-fee-test.js index 981fe0d..a21ecda 100644 --- a/tests/unit/models/service-rate-fee-test.js +++ b/tests/unit/models/service-rate-fee-test.js @@ -11,4 +11,32 @@ module('Unit | Model | service rate fee', function (hooks) { let model = store.createRecord('service-rate-fee', {}); assert.ok(model); }); + + test('geography type prefers transient selected geography type', function (assert) { + let store = this.owner.lookup('service:store'); + let model = store.createRecord('service-rate-fee', { + service_area_uuid: 'service_area_1', + }); + + model.set('selected_geography_type', 'zone'); + + assert.strictEqual(model.geography_type, 'zone'); + }); + + test('geography type derives from saved relationships when no transient type is selected', function (assert) { + let store = this.owner.lookup('service:store'); + let zoneRule = store.createRecord('service-rate-fee', { + zone_uuid: 'zone_1', + }); + let serviceAreaRule = store.createRecord('service-rate-fee', { + service_area_uuid: 'service_area_1', + }); + let fallbackRule = store.createRecord('service-rate-fee', { + is_fallback: true, + }); + + assert.strictEqual(zoneRule.geography_type, 'zone'); + assert.strictEqual(serviceAreaRule.geography_type, 'service_area'); + assert.strictEqual(fallbackRule.geography_type, 'fallback'); + }); });