@fleetbase/fleetops-data
Version:
Fleetbase Fleet-Ops based models, serializers, transforms, adapters and GeoJson utility functions.
121 lines (104 loc) • 3.5 kB
JavaScript
import Model, { attr, belongsTo } from '@ember-data/model';
import { computed } from '@ember/object';
import { getOwner } from '@ember/application';
import { format as formatDate, isValid as isValidDate, formatDistanceToNow } from 'date-fns';
import isRelationMissing from '@fleetbase/ember-core/utils/is-relation-missing';
export default class FuelReportModel extends Model {
/** @ids */
public_id;
company_uuid;
driver_uuid;
vehicle_uuid;
reported_by_uuid;
/** @relationships */
driver;
vehicle;
reporter;
/** @attributes */
reporter_name;
driver_name;
vehicle_name;
report;
odometer;
amount;
currency;
volume;
metric_unit;
status;
location;
meta;
/** @dates */
deleted_at;
created_at;
updated_at;
/** @computed */
get updatedAgo() {
if (!isValidDate(this.updated_at)) {
return null;
}
return formatDistanceToNow(this.updated_at);
}
get updatedAt() {
if (!isValidDate(this.updated_at)) {
return null;
}
return formatDate(this.updated_at, 'PPP p');
}
get updatedAtShort() {
if (!isValidDate(this.updated_at)) {
return null;
}
return formatDate(this.updated_at, 'dd, MMM');
}
get createdAgo() {
if (!isValidDate(this.created_at)) {
return null;
}
return formatDistanceToNow(this.created_at);
}
get createdAt() {
if (!isValidDate(this.created_at)) {
return null;
}
return formatDate(this.created_at, 'PPP p');
}
get createdAtShort() {
if (!isValidDate(this.created_at)) {
return null;
}
return formatDate(this.created_at, 'dd, MMM');
}
/** @methods */
loadVehicle() {
const owner = getOwner(this);
const store = owner.lookup('service:store');
return new Promise((resolve, reject) => {
if (isRelationMissing(this, 'vehicle')) {
return store
.findRecord('vehicle', this.vehicle_uuid)
.then((vehicle) => {
this.vehicle = vehicle;
resolve(vehicle);
})
.catch(reject);
}
resolve(this.vehicle);
});
}
loadDriver() {
const owner = getOwner(this);
const store = owner.lookup('service:store');
return new Promise((resolve, reject) => {
if (isRelationMissing(this, 'driver')) {
return store
.findRecord('driver', this.driver_uuid)
.then((driver) => {
this.driver = driver;
resolve(driver);
})
.catch(reject);
}
resolve(this.driver);
});
}
}