"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); }); } ]); })();