SmartIT_Extensions/BMC/smart-it-full-helix/scripts/app/asset/asset-edit-header-controlle...

88 lines
4.1 KiB
JavaScript

"use strict";
(function () {
'use strict';
angular.module('assetModule')
.controller('AssetEditHeaderController', ['$scope', 'events', 'assetModel', 'searchModel', 'systemAlertService', '$filter', '$q', 'createTicketModel',
function ($scope, events, assetModel, searchModel, systemAlertService, $filter, $q, createTicketModel) {
var updatedModel = {};
$scope.state = {
tooManyCompanies: false
};
$scope.selections = {};
$scope.getList = function (type, term) {
return createTicketModel.getList(type, term);
};
$scope.getCompaniesByName = function (name) {
return searchModel.getCompaniesByText(name).then(function (response) {
return { list: response.companies, exceedsChunkSize: response.exceedsChunkSize };
});
};
$scope.updateCompanyField = function (item) {
updatedModel.company = item;
$scope.currentAssetCompany = item.name;
};
$scope.currentAssetCompany = '';
$scope.isAssetSaving = true;
fetchAssetHeaderData();
$scope.$on(events.TOGGLE_EDIT_MODE, function () {
fetchAssetHeaderData();
$scope.$emit(events.PROFILE_EDIT_HEADER, true);
});
function fetchAssetHeaderData() {
$q.all([assetModel.getAssetDetailsByID(assetModel.assetId, assetModel.assetClassId), searchModel.getOperatingCompanies(null, -1)]).then(function (data) {
var companies = data[1].companies;
updatedModel = angular.copy(_.head(data));
$scope.currentAssetCompany = updatedModel.company.name;
$scope.updatedModel = updatedModel;
$scope.selections.companies = _.cloneDeep(companies);
$scope.state.tooManyCompanies = data[1].exceedsChunkSize;
}).finally(function () {
$scope.isAssetSaving = false;
});
}
$scope.$on(events.SAVE_CHANGES, function () {
if (!_.isEmpty(updatedModel)) {
$scope.isAssetSaving = true; // invoke loading-spinner
var updateData = {
name: updatedModel.name,
tag: updatedModel.tagNumber,
companyName: updatedModel.company && updatedModel.company.name
};
//Backend clears the value for this field only if sent as blank string.
if (!updateData.companyName) {
updateData.companyName = "";
}
assetModel.update(updateData).then(function (data) {
$scope.$emit(events.PROFILE_EDIT_HEADER, false);
$scope.$emit(events.SAVE_CHANGES_COMPLETE);
if (data.needsReconciliation) {
systemAlertService.warning({
text: $filter('i18n')('asset.reconWarning'),
hide: 10000
});
}
else {
assetModel.updateCacheAssetDetails(data);
}
}).catch(function (error) {
$scope.$emit(events.SAVE_ALL_CHANGES_FAULT);
if (error) {
systemAlertService.error({
text: error.data.error,
clear: false
});
}
return $q.reject(error);
}).finally(function () {
$scope.isAssetSaving = false;
});
}
});
$scope.$on(events.DISCARD_CHANGES, function () {
fetchAssetHeaderData();
$scope.$emit(events.PROFILE_EDIT_HEADER, false);
});
}
]);
})();