angular.module('fasit') .controller('ObjektIProjektCtrl', ['$scope', '$filter', '$timeout', 'objektIProjektService', 'maeklarObjektService', 'globalTimerService', 'navigationService', 'fbBroadcastService', 'searchService', function ($scope: fb.IObjektIProjektScope, $filter: ng.IFilterService, $timeout: ng.ITimeoutService, objektIProjektService: fb.IObjektIProjektService, maeklarObjektService: fb.IMaeklarObjektService, globalTimerService: fb.IGlobalTimerService, navigationService: fb.INavigationService, fbBroadcastService: fb.IFbBroadcastService, searchService: fb.ISearchService) { $scope.uppdateraLista = function () { var tmp = objektIProjektService.getObjektIProjekt($scope.$parent.maeklarObjekt.MaeklarObjektId.value); tmp.$promise.then(function () { $scope.ObjektIProjekt = tmp.getArray(); $scope.ObjektIProjekt.$resolved = true; }); $scope.markeradeObjekt = []; }; $scope.uppdateraLista(); var valdaKolumner = $scope.$parent.maeklarObjekt.ProjektInfo.ValdaKolumnerFoerObjektIProjekt.value ? JSON.parse($scope.$parent.maeklarObjekt.ProjektInfo.ValdaKolumnerFoerObjektIProjekt.value) : null; $scope.Kolumner = { ObjektNummer: { show: valdaKolumner && valdaKolumner.ObjektNummer !== undefined ? valdaKolumner.ObjektNummer : true, // Om kolumnen visas ShowName: $filter('translate')('OBJEKTIPROJEKT.ObjektNummer'), // Vilket namn som visas hiddenColumn: false // Om valet av kolumn är dolt }, AdressText: { show: valdaKolumner && valdaKolumner.AdressText !== undefined ? valdaKolumner.AdressText : true, ShowName: $filter('translate')('OBJEKTIPROJEKT.AdressText'), hiddenColumn: false }, LghRefNr: { show: valdaKolumner && valdaKolumner.LghRefNr !== undefined ? valdaKolumner.LghRefNr : ($scope.$parent.maeklarObjekt.ProjektInfo.ObjektTypIdFoerObjektIProjekt.value === fb.FasITDomain.ObjektTypId.MOBostadsraett), ShowName: $filter('translate')('OBJEKTIPROJEKT.LghRefNr'), hiddenColumn: $scope.$parent.maeklarObjekt.ProjektInfo.ObjektTypIdFoerObjektIProjekt.value !== fb.FasITDomain.ObjektTypId.MOBostadsraett }, Husnummer: { show: valdaKolumner && valdaKolumner.Husnummer !== undefined ? valdaKolumner.Husnummer : ($scope.$parent.maeklarObjekt.ProjektInfo.ObjektTypIdFoerObjektIProjekt.value !== fb.FasITDomain.ObjektTypId.MOBostadsraett), ShowName: $filter('translate')('OBJEKTIPROJEKT.Husnummer'), hiddenColumn: $scope.$parent.maeklarObjekt.ProjektInfo.ObjektTypIdFoerObjektIProjekt.value === fb.FasITDomain.ObjektTypId.MOBostadsraett }, UppdragStatusSpecifikation: { show: valdaKolumner && valdaKolumner.UppdragStatusSpecifikation !== undefined ? valdaKolumner.UppdragStatusSpecifikation : false, ShowName: $filter('translate')('OBJEKTIPROJEKT.UppdragStatusSpecifikation'), hiddenColumn: false }, BoYta: { show: valdaKolumner && valdaKolumner.BoYta !== undefined ? valdaKolumner.BoYta : true, ShowName: $filter('translate')('OBJEKTIPROJEKT.BoYta'), hiddenColumn: false }, AntalRum: { show: valdaKolumner && valdaKolumner.AntalRum !== undefined ? valdaKolumner.AntalRum : true, ShowName: $filter('translate')('OBJEKTIPROJEKT.AntalRum'), hiddenColumn: false }, Pris: { show: valdaKolumner && valdaKolumner.Pris !== undefined ? valdaKolumner.Pris : true, ShowName: $filter('translate')('OBJEKTIPROJEKT.Pris'), hiddenColumn: false }, Avgift: { show: valdaKolumner && valdaKolumner.Avgift !== undefined && $scope.$parent.maeklarObjekt.ProjektInfo.ObjektTypIdFoerObjektIProjekt.value === fb.FasITDomain.ObjektTypId.MOBostadsraett ? valdaKolumner.Pris : false, ShowName: $filter('translate')('OBJEKTIPROJEKT.Avgift'), hiddenColumn: $scope.$parent.maeklarObjekt.ProjektInfo.ObjektTypIdFoerObjektIProjekt.value !== fb.FasITDomain.ObjektTypId.MOBostadsraett }, Vaaningsplan: { show: valdaKolumner && valdaKolumner.Vaaningsplan !== undefined ? valdaKolumner.Vaaningsplan : false, ShowName: $filter('translate')('OBJEKTIPROJEKT.Vaaningsplan'), hiddenColumn: $scope.$parent.maeklarObjekt.ProjektInfo.ObjektTypIdFoerObjektIProjekt.value !== fb.FasITDomain.ObjektTypId.MOBostadsraett } }; var onKolumnerChange = function(newVal: boolean, oldVal: boolean) { if (newVal !== oldVal) { var objektIProjektKolumn = {}; for (var key in $scope.Kolumner) { if ($scope.Kolumner.hasOwnProperty(key)) { var col = $scope.Kolumner[key]; objektIProjektKolumn[key] = col.show; } } $scope.$parent.maeklarObjekt.ProjektInfo.ValdaKolumnerFoerObjektIProjekt.setValue(JSON.stringify(objektIProjektKolumn)); } }; $scope.$watch('Kolumner', onKolumnerChange, true); $scope.passthrough = { Kolumner: $scope.Kolumner, gotoObjekt: $scope.$parent.gotoObjekt }; $scope.markeradeObjekt = []; $scope.LaeggTillObjektIProjekt = function () { var call = objektIProjektService.skapaObjektIProjekt($scope.$parent.maeklarObjekt.MaeklarObjektId.value); $scope.ObjektIProjekt.$resolved = false; $scope.markeradeObjekt = []; var save = globalTimerService.globalSave(true); save.then(function () { call.$promise.finally(function () { $scope.uppdateraLista(); }); }); }; $scope.taBort = { TaBortMarkerade: function () { var foundErrors = false; var accepteradeStatusar = [ fb.FasITDomain.UppdragStatus.AATERTAGEN, fb.FasITDomain.UppdragStatus.INGET_UPPDRAG, fb.FasITDomain.UppdragStatus.PROJEKT_AVSLUTAT, fb.FasITDomain.UppdragStatus.SAALD ]; _.forEach($scope.markeradeObjekt, function (value) { if (accepteradeStatusar.indexOf(value.UppdragStatus.value) === -1) { foundErrors = true; } }); if (foundErrors) { $scope.taBort.errorVidBorttagning = 'Ett/flera objekt befinner sig inte i en slutstatus.'; return; } var ids = _.map($scope.markeradeObjekt, function (value: fb.ObjektIProjektDO) { return value.MaeklarObjektId.value; }); var res = maeklarObjektService.remove(ids); $scope.ObjektIProjekt.$resolved = false; res.$promise.finally(function () { $scope.uppdateraLista(); navigationService.cleanOeppnaOchStaengda(); }); res.$promise.catch(function (data) { $scope.taBort.errorVidBorttagning = data.data.Message; }); }, errorVidBorttagning: '', showTaBortPopover: false }; $scope.DupliceraObjekt = { VisaDialog: function () { if ($scope.markeradeObjekt.length === 1) { $scope.DupliceraObjekt.DupliceraDialog = true; } else { $scope.DupliceraObjekt.FelaktigtAntalMarkeradeDialog = true; } }, DupliceraMarkerad: function () { if ($scope.markeradeObjekt.length === 1) { var duplicering = objektIProjektService.dupliceraObjektIProjekt({ AerFastighet: $scope.$parent.maeklarObjekt.isSmaahus, AnsvarigMaeklarePersonId: $scope.markeradeObjekt[0].AnsvarigMaeklarePersonId !== undefined && $scope.markeradeObjekt[0].AnsvarigMaeklarePersonId.value !== null ? $scope.markeradeObjekt[0].AnsvarigMaeklarePersonId.value : $scope.$parent.maeklarObjekt.AnsvarigMaeklareId.value, AntalKopiorAttSkapa: $scope.DupliceraObjekt.AntalKopior, MaeklarObjektIdAttKopiera: $scope.markeradeObjekt[0].MaeklarObjektId.value }); $scope.DupliceraObjekt.KopieringPaagaarDialog = true; $scope.ObjektIProjekt.$resolved = false; duplicering.$promise.finally(function () { $scope.DupliceraObjekt.KopieringPaagaarDialog = false; if (duplicering.AntalSkapadeKopior > 0) { $scope.uppdateraLista(); } else { $scope.ObjektIProjekt.$resolved = true; } }); $scope.DupliceraObjekt.DupliceraDialog = false; $scope.DupliceraObjekt.AntalKopior = 1; } else { $scope.DupliceraObjekt.FelaktigtAntalMarkeradeDialog = true; } }, FelaktigtAntalMarkeradeDialog: false, KopieringPaagaarDialog: false, CloseFelaktigtAntalMarkeradeDialog: function () { $scope.DupliceraObjekt.FelaktigtAntalMarkeradeDialog = false; }, CloseDupliceraDialog: function () { $scope.DupliceraObjekt.DupliceraDialog = false; $scope.DupliceraObjekt.AntalKopior = 1; }, DupliceraDialog: false, AntalKopior: 1, }; $scope.$watchCollection('markeradeObjekt', function () { if ($scope.markeradeObjekt.length === 1) { $scope.DupliceraObjekt.FelaktigtAntalMarkeradeDialog = false; } if (!!fbBroadcastService) { fbBroadcastService.broadcast(fb.FasITDomain.GlobalEvents.HANTERA_MARKERING_OBJEKT_I_PROJEKT, $scope.markeradeObjekt); // Angular } }); $scope.visaIObjektLista = function () { const parameterList = [ new fb.SoekFilterParameter({ DatabasNamn: fb.FasITDomain.SearchListaDatabasNamn.ObjektIProjekt, FritextVaerde: $scope.$parent.maeklarObjekt.ObjektNummer.value })]; searchService.setSearchMaeklarObjektParameters(parameterList); navigationService.gotoObjektlista(); }; $scope.preventClose = function (event: Event) { event.stopPropagation(); }; }]);