@ducna01120/fleetops-engine
Version:
Fleet & Transport Management Extension for Fleetbase
87 lines (72 loc) • 3.22 kB
JavaScript
import Component from '@glimmer/component';
import { tracked } from '@glimmer/tracking';
import { inject as service } from '@ember/service';
import { action } from '@ember/object';
import { task } from 'ember-concurrency-decorators';
export default class DriverOnboardSettingsComponent extends Component {
fetch;
currentUser;
notifications;
companyId;
driverOnboardSettingsLoaded = false;
driverOnboardSettings = {};
driverOnboardMethods = ['invite', 'button'];
constructor() {
super(...arguments);
this.companyId = this.currentUser.companyId;
this.getDriverOnboardSettings.perform();
}
enableDriverOnboard(enableDriverOnboardFromApp) {
this.updateDriverOnboardSettings({ enableDriverOnboardFromApp });
}
enableDriverOnboardDocuments(driverMustProvideOnboardDocuments) {
this.updateDriverOnboardSettings({ driverMustProvideOnboardDocuments });
}
selectDriverOnboardMethod(driverOnboardAppMethod) {
this.updateDriverOnboardSettings({ driverOnboardAppMethod });
}
onOnboardDocumentsChanged(requiredOnboardDocuments) {
requiredOnboardDocuments = requiredOnboardDocuments.filter((documentName) => typeof documentName === 'string');
this.updateDriverOnboardSettings({ requiredOnboardDocuments });
}
*saveDriverOnboardSettings() {
const { driverOnboardSettings } = this;
let driverOnboardSettingsResponse;
try {
driverOnboardSettingsResponse = yield this.fetch.post('fleet-ops/settings/driver-onboard-settings', { driverOnboardSettings });
} catch (error) {
this.notifications.serverError(error);
return;
}
if (driverOnboardSettingsResponse && driverOnboardSettings && driverOnboardSettings.enableDriverOnboardFromApp == false) {
this.driverOnboardSettings = driverOnboardSettingsResponse.driverOnboardSettings;
}
}
*getDriverOnboardSettings() {
const companyId = this.currentUser.companyId;
const { driverOnboardSettings } = yield this.fetch.get(`fleet-ops/settings/driver-onboard-settings/${companyId}`);
this.driverOnboardSettings = driverOnboardSettings;
if (this.companyDoesntHaveDriverOnboardSettings()) {
this.updateDriverOnboardSettings({
enableDriverOnboardFromApp: false,
driverOnboardAppMethod: 'invite',
driverMustProvideOnboardDocuments: false,
requiredOnboardDocuments: [],
});
}
this.driverOnboardSettingsLoaded = true;
}
companyDoesntHaveDriverOnboardSettings() {
const companyId = this.driverOnboardSettings.companyId;
return companyId === undefined;
}
updateDriverOnboardSettings(props = {}) {
const companyId = this.currentUser.companyId;
const driverOnboardSettings = this.driverOnboardSettings ?? {};
this.driverOnboardSettings = {
companyId: companyId,
...driverOnboardSettings,
...props,
};
}
}