/** * @ngdoc ObjektListaCtrl * @name fasit.controllers.#ObjektListaCtrl * @description Controller som hanterar objektlistan */ /* @ngInject */ // OBS! Denna kommentar gör att minifiering av filen fungerar angular.module('fasit').controller('ObjektListaCtrl', ObjektListaCtrl); function ObjektListaCtrl( $scope: fb.IObjektListaScope, $rootScope: fb.IRootScope, $q: ng.IQService, $filter: ng.IFilterService, $timeout: ng.ITimeoutService, commonService: fb.ICommonService, foereningService: fb.IFoereningService, kolumnDefService: fb.IKolumnDefService, kommunService: fb.IKommunService, kontorService: fb.IKontorService, domainService: fb.IDomainService, textWidthService: fb.ITextWidthService, navigationService: fb.INavigationService, stateService: fb.IStateService, maeklarObjektService: fb.IMaeklarObjektService, medarbetareService: fb.IMedarbetareService, uiService: fb.IUIService, utskriftService: fb.IUtskriftService, naeromraadeService: fb.INaeromraadeService, taggService: fb.ITaggService, annonsleverantoerService: fb.IAnnonsleverantoerService, anteckningService: fb.IAnteckningService, cacheService: fb.ICacheService, utskickService: fb.IUtskickService) : void { 'use strict'; uiService.view(fb.FasITDomain.VyerNamn.Objektlista); uiService.close(fb.FasITDomain.UIState.HoegerMeny); var state = stateService.loadState(fb.FasITDomain.StateServiceObjectName.ObjektListaCtrl, null); var stateDetaljStatus = stateService.loadState(fb.FasITDomain.StateServiceObjectName.ObjektListaCtrl, 'ObjektStatusDetaljstatusSearch'); stateService.clearState(fb.FasITDomain.StateServiceObjectName.ObjektListaCtrl, 'ObjektStatusDetaljstatusSearch'); const stateParameters = stateService.loadState(fb.FasITDomain.StateServiceObjectName.ObjektListaCtrl, 'Parameters'); stateService.clearState(fb.FasITDomain.StateServiceObjectName.ObjektListaCtrl, 'Parameters'); var translate = $filter('translate'); var niceDate = $filter('niceDate'); var niceCurrency = $filter('niceCurrency'); var uppdragStatus = $filter('uppdragStatus'); let removeListener = $scope.$on("view-select-changed", () => { stateDetaljStatus = {}; }); $scope.$on("$destroy", () => { removeListener(); }); const cache = cacheService.getCache('objektCache', { storageMode: 'none', verifyIntegrity: true }); function displayDate(propName: string, hideTime?: boolean) { return function (value: fb.MaeklarObjektLO) { var dateTime = value[propName]; var timePart = commonService.date.timePart(dateTime) var hasTimePart = timePart !== '' && timePart !== '00:00:00'; return niceDate(dateTime, true, !hideTime && hasTimePart); }; } function displayDateInterval(propNameFrom: string, propNameTo: string) { return function (value: fb.MaeklarObjektLO) { var from = displayDate(propNameFrom)(value); var to = displayDate(propNameTo)(value); var dateTime = value[propNameTo]; var timePart = commonService.date.timePart(dateTime) var hasTimePart = timePart !== '' && timePart !== '00:00:00' && timePart !== null; var timeMom = moment(dateTime); return (from ? (to ? from + ' - ' : from) : '') + (to ? ((from && hasTimePart) ? timeMom.format('HH:mm') : to) : ''); } } function displayDomain(propName: string, domainName?: string) { return domainService.maeklarObjekt.converter(propName, domainName); } function displayCurrency(propName: string) { return function (value: fb.MaeklarObjektLO) { var currency = value[propName]; return niceCurrency(currency, false, false, ''); }; } function displayChiliIcon() { return function (value: fb.MaeklarObjektLO) { if (value.UppdragTyp !== fb.FasITDomain.UppdragTyp.FOERSAELJNING || value.UppdragStatus !== fb.FasITDomain.UppdragStatus.FOERBEARBETNING) { return null; } if (!value.SannolikhetForUppdrag && moment(value.DatumForIntagsforsok).isBefore(moment())) { return -1; } return value.SannolikhetForUppdrag } } var Parametertyp = { Boolean: 0, ListVaerde: 1, NummerIntervall: 2, FritextVaerde: 3, DatumIntervall: 4 // Parametertyp: 5 // Parametertyp: 6 }; //Stöd för custom sort. Om en kolumn saknas används default, annars går det att skriva över //fb-grids currentSort här. var colSort = { 'TidFoerNaestaAktuellaVisning': { 'Sortable': true, 'Reverse': false, 'SortFn': function (row: fb.MaeklarObjektLO) { if (!row.TidFoerNaestaAktuellaVisning) { if (row.SlutTidFoerNaestaAktuellaVisning) { return row.SlutTidFoerNaestaAktuellaVisning; } else { return ""; } } return row.TidFoerNaestaAktuellaVisning; } }, 'SannolikhetForUppdrag': { 'Sortable': true, 'Reverse': true, 'SortFn': function (row: fb.MaeklarObjektLO) { var displayChiliIconType = displayChiliIcon()(row) return displayChiliIconType === null ? -10 : displayChiliIconType } }, 'Nyckelnummer': { 'Sortable': true, 'Reverse': true, 'naturalSort': true } } var colValue = { 'LandId': displayDomain('LandId'), 'OeverordnadBoendeform': displayDomain('OeverordnadBoendeform', 'Boendeform'), 'Upplaatelseform': displayDomain('Upplaatelseform', 'Upplaatelseform'), 'UppdragTyp': displayDomain('UppdragTyp', 'UppdragTyp'), 'EnergiDeklEnergiklass': displayDomain('EnergiDeklEnergiklass', 'EnergiDeklEnergiklass'), 'UppdragStatusSpecifikation': displayDomain('UppdragStatusSpecifikation', 'UppdragStatusSpecifikation'), 'IntagskaellaId': displayDomain('IntagskaellaId', 'IntagskaellaId'), 'EnergiDeklUtfoerd': displayDomain('EnergiDeklUtfoerd', 'EnergiDeklUtfoerd'), 'EnergiDeklEnergiklassUtslapp': displayDomain('EnergiDeklEnergiklass', 'EnergiDeklEnergiklass'), 'Avtalsdag': displayDate('Avtalsdag',true), 'DatumOchTidFoerIntagsfoersoek': displayDate('DatumOchTidFoerIntagsfoersoek'), 'Foerhandsavtalsdag': displayDate('Foerhandsavtalsdag'), 'SenasteAendrSomPaaverkarOen': displayDate('SenasteAendrSomPaaverkarOen'), 'SkapadIMS': displayDate('SkapadIMS'), 'Tilltraedelsedatum': displayDate('Tilltraedelsedatum'), 'FoerstaAnnonseringsDatum': displayDate('FoerstaAnnonseringsDatum', true), 'SenastAendradDatum': displayDate('SenastAendradDatum'), 'ProvisDatum': displayDate('ProvisDatum'), 'HandpenningSkaErlaeggasDatum': displayDate('HandpenningSkaErlaeggasDatum'), 'HandpenningErlagdDatum': displayDate('HandpenningErlagdDatum'), 'HandpenningRedovisadDatum': displayDate('HandpenningRedovisadDatum'), 'EnergiDeklDatum': displayDate('EnergiDeklDatum'), 'DellikvidDatum': displayDate('DellikvidDatum'), 'Uppdragsdag': displayDate('Uppdragsdag'), 'TidFoerNaestaAktuellaVisning': displayDateInterval('TidFoerNaestaAktuellaVisning', 'SlutTidFoerNaestaAktuellaVisning'), 'Pris': displayCurrency('Pris'), 'StartPris': displayCurrency('StartPris'), 'SlutPris': displayCurrency('SlutPris'), 'Provisionsbelopp': displayCurrency('Provisionsbelopp'), 'HandpenningBelopp': displayCurrency('HandpenningBelopp'), 'ExtraKostn1': displayCurrency('ExtraKostn1'), 'ExtraKostn2': displayCurrency('ExtraKostn2'), 'DellikvidBelopp': displayCurrency('DellikvidBelopp'), 'Avgift': displayCurrency('Avgift'), 'HoegstaBud': displayCurrency('HoegstaBud'), 'SannolikhetForUppdrag': displayChiliIcon(), 'BesiktigadDatum': displayDate('BesiktigadDatum'), 'LaanDatum': displayDate('LaanDatum'), 'OevrigaVillkorDatum': displayDate('OevrigaVillkorDatum') }; function defaultColumnWidth(key: string, text: string) { switch (key) { case 'AdressText': return 260; case 'MaeklareNamn': return 170; case 'Omrade': return 180; case 'UppdragStatusNamn': return 115; case 'DatumOchTidFoerIntagsfoersoek': return 115; default: return Math.max(80, textWidthService.getWidth(text, { fontSize: '14px' }) + 20); } } var gridColumnMap = function (key: string, i: number) { var text = translate('SOEK_MAEKLAR_OBJEKT_LO.' + key.toUpperCase()); var width = defaultColumnWidth(key, text); var defaultColumnIndex = _.indexOf(kolumnDefService.getDefaultColumnsForMaeklarObjekt(), key); //Om det finns colSort-poster så använder vi dessa för att customiza beteende för sortering var defaultSort = { Sortable: true }; var usedSort = defaultSort; if (colSort[key]) { usedSort = colSort[key]; } return { Key: key, Text: text, Converter: colValue[key], Visible: defaultColumnIndex !== -1, Width: width, ChangeTrackColumn: false, Sort: usedSort, Order: defaultColumnIndex, }; }; var gc = _.map(kolumnDefService.getMaeklarObjektLOProperties(), gridColumnMap); function onRowClicked(row: any) { navigationService.findOpenObjekt(fb.FasITDomain.NavigationController.MAEKLAROBJEKT, row.MaeklarObjektId, true); } function selectedMaeklarObjektId() { return _.map($scope.options.gridOptions.selectedItems, function (mo: fb.MaeklarObjektLO) { return mo.MaeklarObjektId; }); } function valideraObjektStatusFoerArkivering(mos: fb.MaeklarObjektLO[]) { var ret = true; _.forEach(mos, function (mo) { if (!maeklarObjektService.validation.valideraObjektStatusFoerArkivering(mo.UppdragStatus, mo.UppdragTyp)) { ret = false; } }); return ret; } function valideraObjektStatusFoerBorttag(mos: fb.MaeklarObjektLO[]) { var ret = true; _.forEach(mos, function (mo) { if (!maeklarObjektService.validation.valideraObjektStatusFoerBorttag(mo.UppdragStatus, mo.UppdragTyp, mo.isSaald())) { ret = false; } }); return ret; } function valideraSaaldObjektFoerBorttag(mos: fb.MaeklarObjektLO[]) { var ret = true; _.forEach(mos, function (mo) { if (mo.isSaald()) { ret = false; } }); return ret; } function valideraKanBytaAnsvarigMaeklare(mos: fb.MaeklarObjektLO[]) { var felStatusar = _.filter(mos, function (item: fb.MaeklarObjektLO) { return item.AerFoersaeljningsrapporterat || _.contains([ fb.FasITDomain.UppdragStatus.INGET_UPPDRAG, fb.FasITDomain.UppdragStatus.AATERTAGEN, fb.FasITDomain.UppdragStatus.SAALD, fb.FasITDomain.UppdragStatus.PROJEKT_AVSLUTAT ], item.UppdragStatus); }); return felStatusar.length === 0; } function flerValSkrivtUtMarkerade(rows, headersText, headers) { const statusH = headers .map((h, i) => ({ match: h.Key === 'UppdragStatusSpecifikation', index: i })) .find(h => h.match); const chiliH = headers .map((h, i) => ({ match: h.Key === 'SannolikhetForUppdrag', index: i })) .find(h => h.match); if (statusH) { rows.forEach(row => row[statusH.index] = ''); } if (chiliH) { rows.forEach(row => row[chiliH.index] = ''); } utskriftService.skrivUtTabellData(rows, headersText, 3); } function flerValSoekIntressenter() { navigationService.gotoKontaktlistaSearchObjIntressentRoll({ roll: [fb.ObjektIntressentRollId.Intressent], oid: selectedMaeklarObjektId() }); } function flerValSoekSaeljareKoepare() { navigationService.gotoKontaktlistaSearchObjIntressentRoll({ roll: [fb.ObjektIntressentRollId.Koepare, fb.ObjektIntressentRollId.Saeljare], oid: selectedMaeklarObjektId() }); } function flerValSoekKoepare() { navigationService.gotoKontaktlistaSearchObjIntressentRoll({ roll: [fb.ObjektIntressentRollId.Koepare], oid: selectedMaeklarObjektId() }); } function flerValSoekSaeljare() { navigationService.gotoKontaktlistaSearchObjIntressentRoll({ roll: [fb.ObjektIntressentRollId.Saeljare], oid: selectedMaeklarObjektId() }); } function flerValAvArkivera() { maeklarObjektService.aktivera(selectedMaeklarObjektId()); } function flerValArkivera() { if (valideraObjektStatusFoerArkivering($scope.options.gridOptions.selectedItems)) { $scope.arkiveringAlert = false; maeklarObjektService.arkivera(selectedMaeklarObjektId()); } else { $scope.arkiveringAlert = true; } } function flerValBytMaeklarObjektTaggar(objektTaggIds: number[], add: boolean) { const changeMaeklarObjektTaggWO = new fb.ChangeMaeklarObjektTaggWO({ ObjektIdList: selectedMaeklarObjektId(), ObjektTaggIdList: objektTaggIds }); const res = maeklarObjektService.changeObjektTaggar(add ? 1 : 0, changeMaeklarObjektTaggWO); res.$promise.then(() => forceSave()); function forceSave() { angular.forEach(selectedMaeklarObjektId(), function (objektId: number) { const maeklarObjektDO = new fb.MaeklarObjektDO({ MaeklarObjektId: objektId }, true); cache.remove(maeklarObjektDO.$rootName + objektId.toString()); }); } } function flerValBytAnsvarigMaeklare(ansvarigMaeklareId: number, force = false) { if (valideraKanBytaAnsvarigMaeklare($scope.options.gridOptions.selectedItems) || force) { $scope.bytAnsvarigMaeklareAlert = false; $scope.options.showBytAnsvarigMaeklareSpinner = true; var aemt = maeklarObjektService.aendraMaeklareTill(ansvarigMaeklareId, selectedMaeklarObjektId()); aemt.$promise.then(function () { $scope.exposeScope.doSearch(); $scope.options.showBytAnsvarigMaeklareSpinner = false; $scope.options.showBytMaeklarePopover = false; }); } else { $scope.bytAnsvarigMaeklareAlert = true; } } function flerValObjektTips(meddelande: string, objekts: fb.MaeklarObjektLOGen[], kontaktIds: number[]) { $scope.options.objektTipsErrorMessage = "Följande objekt är inte annonserade och kan inte skickas i ett bostadsförslag: "; $scope.options.showObjektTipsErrorMessage = false; var objektDOList = objekts.map((objekt: fb.MaeklarObjektLOGen) => { return maeklarObjektService.get(objekt.MaeklarObjektId); }); $q.all(_.map(objektDOList, x => x.$promise)).then(() => { _.each(objektDOList, (objektDO: fb.MaeklarObjektDO) => { if (objektDO.ObjektAnnons.length === 0) { $scope.options.objektTipsErrorMessage += objektDO.Adress.AdressText.value + ", "; $scope.options.showObjektTipsErrorMessage = true; } else { let aktivaAnnonserFinns = false; _.each(objektDO.ObjektAnnons, (objektAnnons: any) => { if (objektAnnons.AerHistorisk.value === false) { aktivaAnnonserFinns = true; } }); if (aktivaAnnonserFinns === false) { $scope.options.objektTipsErrorMessage += objektDO.Adress.AdressText.value + ", "; $scope.options.showObjektTipsErrorMessage = true; } } }); $scope.options.objektTipsErrorMessage = $scope.options.objektTipsErrorMessage.substring(0, $scope.options.objektTipsErrorMessage.lastIndexOf(",")); if ($scope.options.showObjektTipsErrorMessage) { return; } var objektIds = _.map(objekts, (objekt: fb.MaeklarObjektLOGen) => { return objekt.MaeklarObjektId; }); var objektTips = {} as fb.ObjektTipsDO; objektTips.Meddelande = meddelande; objektTips.Objekt = objektIds; objektTips.Mottagare = kontaktIds; utskickService.sendObjektTips(objektTips); $scope.options.showObjektTipsPopover = false; }); } function sparaAnteckning(anteckningText: string) { var currentUser = ($rootScope).InloggadAnvaendare; var objektIds = _.map($scope.options.gridOptions.selectedItems, function (objekt: fb.MaeklarObjektLO) { return objekt.MaeklarObjektId; }); anteckningService.addBatch({ Typ: "MaeklarObjekt", Anteckning: anteckningText, SparadAvPersonId: currentUser.PersonId, KoppladTillObjekt: objektIds } as fb.AnteckningBatch); } function flerValTaBort() { $scope.showBackendErrorAlert = false; if (valideraObjektStatusFoerBorttag($scope.options.gridOptions.selectedItems)) { $scope.borttagAlert = false; $scope.borttagSaaldAlert = false; var res = maeklarObjektService.remove(selectedMaeklarObjektId()); res.$promise.catch(function (err) { if (err.data && err.data.Message) { $scope.showBackendErrorAlert = true; $scope.removeErrorMessage = err.data.Message; } }); res.$promise.then(function () { navigationService.cleanOeppnaOchStaengda(); $scope.exposeScope.doSearch(); }); } else if (!valideraSaaldObjektFoerBorttag($scope.options.gridOptions.selectedItems)) { $scope.borttagSaaldAlert = true; } else { $scope.borttagAlert = true; } } var taggar: fb.Tagg[] = state.taggar || taggService.query(fb.FasITDomain.TaggTyp.MAEKLAROBJEKTTAGG); var medarbetareQuery = medarbetareService.query(false); var leverantoer = annonsleverantoerService.queryAlla(); var maeklare: fb.Medarbetare[]; // Filtreras från kontoretsMaeklareOchAssistenter var kontoretsMaeklareOchAssistenter = medarbetareService.getByRoll(false); var foerening = state.foerening || foereningService.query(fb.FasITDomain.ObjektTypId.MOBostadsraett); var kommun = state.kommun || kommunService.query(true); var naeromraade; var promiseNaeromraade; if (state.naeromraade) { naeromraade = state.naeromraade; } else { promiseNaeromraade = $rootScope.InloggadAnvaendare.promise.then(function () { naeromraade = naeromraadeService.kontor.query($rootScope.InloggadAnvaendare.InloggatKontorId); return naeromraade.$promise; }); } var kontor = state.kontor || kontorService.query(); var ctrlPromise = $q.all([kontoretsMaeklareOchAssistenter.$promise, foerening.$promise, kommun.$promise, promiseNaeromraade, leverantoer.$promise, taggar.$promise, medarbetareQuery.$promise]); ctrlPromise.then(function () { maeklare = _.uniq(_.sortBy(_.filter(kontoretsMaeklareOchAssistenter, function(m: fb.Medarbetare) { return m.MedarbetareRoll.value === fb.FasITDomain.MedarbetareRoll.MAEKLARE || m.MedarbetareRoll.value === fb.FasITDomain.MedarbetareRoll.SAELJARE_UTLAND || m.MedarbetareRoll.value === fb.FasITDomain.MedarbetareRoll.INNESAELJARE_UTLAND; }), function(item) { return item.Personnamn.value; }), function(medarbetare) { return medarbetare.PersonId.value; }); replaceContent(kontoretsMaeklareOchAssistenter, _.sortBy(kontoretsMaeklareOchAssistenter, function (item) { return item.Personnamn.value; })); replaceContent(foerening, _.sortBy(foerening, 'Namn')); replaceContent(naeromraade, _.sortBy(naeromraade, 'DelomraadeNamn')); replaceContent(kontor, _.sortBy(kontor, 'Kontorsnamn')); // remove medarbetare duplicates replaceContent(kontoretsMaeklareOchAssistenter, _.uniq(kontoretsMaeklareOchAssistenter, function (medarbetare) { return medarbetare.PersonId.value; })); replaceContent(maeklare, _.uniq(maeklare, function (medarbetare) { return medarbetare.PersonId.value; })); Array.prototype.splice.apply(taggar, ([0, taggar.length].concat(_.sortBy(taggar, function (tagg) { return tagg.TaggNamn.value; })))); // Vi kan inte sätta kolumnerna eller filtera annonsleverantörerna innan vi vet om vi är utland eller ej var isUtland = $rootScope.InloggadAnvaendare.BostadsmarknadId === fb.FasITDomain.Bostadsmarknad.UTLAND; leverantoer = filterLeverantoerer(leverantoer, isUtland); replaceContent(leverantoer, _.sortBy(leverantoer, 'AnnonsleverantoerNamn')); if (isUtland) { var newColKeysUtland = _.map(_.map(kolumnDefService.getMaeklarObjektLOPropertiesUtland(), gridColumnMap), function (item) { return item.Key }); var oldColKeysUtland = _.map($scope.options.gridOptions.columns, function (item) { return item.Key }); if (_.intersection(newColKeysUtland, oldColKeysUtland).length === 0) { $scope.options.gridOptions.columns = $scope.options.gridOptions.columns.concat(_.map(kolumnDefService.getMaeklarObjektLOPropertiesUtland(), gridColumnMap)); } } else { var newColKeys = _.map(_.map(kolumnDefService.getMaeklarObjektLOPropertiesEjUtland(), gridColumnMap), function (item) { return item.Key }); var oldColKeys = _.map($scope.options.gridOptions.columns, function (item) { return item.Key }); if (_.intersection(newColKeys, oldColKeys).length === 0) { $scope.options.gridOptions.columns = $scope.options.gridOptions.columns.concat(_.map(kolumnDefService.getMaeklarObjektLOPropertiesEjUtland(), gridColumnMap)); } } }); function replaceContent(toArray: any, fromArray: any) { Array.prototype.splice.apply(toArray, ([0, toArray.length].concat( fromArray))); } function filterLeverantoerer(lev: any, isUtland: boolean) { var indexes = []; angular.forEach(lev, function (l, index) { switch (l.AnnonsleverantoerNamn) { case 'Externen': if (isUtland) { indexes.unshift(index); } else { l.AnnonsleverantoerNamn = 'fastighetsbyran.se'; } break; case 'ExternenES': if (isUtland) { l.AnnonsleverantoerNamn = 'utland.fastighetsbyran.se'; } else { indexes.unshift(index); } break; case 'RightMove': if (!isUtland) { indexes.unshift(index); } break; default: break; } }); angular.forEach(indexes, function (index) { lev.splice(index, 1);}); return lev; } function getListParameterValues(databasNamn: string) { var filterValues: any = {}; if (databasNamn === fb.FasITDomain.SearchListaDatabasNamn.MaeklarePersonId) { filterValues.showAttr = 'Personnamn'; filterValues.keyAttr = 'PersonId'; filterValues.options = _.map(maeklare, function (meaklare) { var obj = {}; obj[filterValues.showAttr] = meaklare.Personnamn.value; obj[filterValues.keyAttr] = meaklare.PersonId.value; return obj; }); //var inloggadAnvaendareObj = {}; //inloggadAnvaendareObj[filterValues.showAttr] = "Inloggad användare"; //inloggadAnvaendareObj[filterValues.keyAttr] = -1; //filterValues.options.push(inloggadAnvaendareObj); } else if (databasNamn === 'MaeklareassistentPersonId') { filterValues.showAttr = 'Personnamn'; filterValues.keyAttr = 'PersonId'; filterValues.options = _.map(kontoretsMaeklareOchAssistenter, function (anvaendare) { var obj = {}; obj[filterValues.showAttr] = anvaendare.Personnamn.value; obj[filterValues.keyAttr] = anvaendare.PersonId.value; return obj; }); } else if (databasNamn === fb.FasITDomain.SearchListaDatabasNamn.Intagare) { filterValues.showAttr = 'Personnamn'; filterValues.keyAttr = 'PersonId'; filterValues.options = _.map(kontoretsMaeklareOchAssistenter, function (anvaendare) { var obj = {}; obj[filterValues.showAttr] = anvaendare.Personnamn.value; obj[filterValues.keyAttr] = anvaendare.PersonId.value; return obj; }); } else if (databasNamn === 'NaeromraadeInfoId') { filterValues.options = naeromraade; filterValues.showAttr = 'DelomraadeNamn'; filterValues.keyAttr = 'NaeromraadeInfoId'; } else if (databasNamn === 'BRFId') { filterValues.options = foerening; filterValues.showAttr = 'Namn'; filterValues.keyAttr = 'PersonId'; } else if (databasNamn === 'KontorId') { filterValues.options = kontor; filterValues.showAttr = 'Kontorsnamn'; filterValues.keyAttr = 'KontorId'; } else if (databasNamn === 'KommunId') { filterValues.options = kommun; filterValues.showAttr = 'KommunNamn'; filterValues.keyAttr = 'KommunId'; } else if (databasNamn === 'AnnonsleverantoerId') { filterValues.options = leverantoer; filterValues.showAttr = 'AnnonsleverantoerNamn'; filterValues.keyAttr = 'AnnonsleverantoerId'; } else if (databasNamn === 'Tagg' || databasNamn === 'Taggtvaa' || databasNamn === 'Taggtre') { filterValues.showAttr = 'TaggNamn'; filterValues.keyAttr = 'TaggId'; filterValues.options = _.map(taggar, function (tagg) { var obj = {}; obj[filterValues.showAttr] = tagg.TaggNamn.value; obj[filterValues.keyAttr] = tagg.TaggId.value; return obj; }); } else { filterValues.options = domainService.maeklarObjekt.domain(databasNamn) || []; if ($rootScope.InloggadAnvaendare.BostadsmarknadId === fb.FasITDomain.Bostadsmarknad.UTLAND) { if (databasNamn === fb.FasITDomain.SearchListaDatabasNamn.UppdragStatusSpecifikation) { filterValues.options = _.filter(filterValues.options, function (item: any) { return fb.FasITDomain.UppdragStatusSpecifikationNotUtland.indexOf(item.UppdragStatusSpecifikation) === -1; }); } else if (databasNamn === fb.FasITDomain.SearchListaDatabasNamn.Boendeform) { filterValues.options = domainService.boendeform.queryByKategori(fb.FasITDomain.BoendeKategori.UTLAND); } } filterValues.keyAttr = domainService.maeklarObjekt.domainKey(databasNamn) || ''; filterValues.showAttr = domainService.maeklarObjekt.domainNameKey(databasNamn) || ''; } return filterValues; } function addDefaultFilters(selectedViewParameters: fb.SoekFilterParameter[], filterParameters: fb.SoekFilterParameter[], addDefaultValues: boolean) { if (!_.isUndefined(stateDetaljStatus.UppdragStatusSpecifikation)) { var uppdragStatusSpecifikation = _.findWhere(selectedViewParameters, { DatabasNamn: fb.FasITDomain.SearchListaDatabasNamn.UppdragStatusSpecifikation }); if (!uppdragStatusSpecifikation) { uppdragStatusSpecifikation = _.findWhere(filterParameters, { DatabasNamn: fb.FasITDomain.SearchListaDatabasNamn.UppdragStatusSpecifikation }); if (uppdragStatusSpecifikation) { uppdragStatusSpecifikation.ModelList.push.apply(uppdragStatusSpecifikation.ModelList, stateDetaljStatus.UppdragStatusSpecifikation); selectedViewParameters.push(uppdragStatusSpecifikation); } } if (!_.isUndefined(stateDetaljStatus.MaeklarePersonId) && (stateDetaljStatus.MaeklarePersonId).length > 0) { var maeklarePersonId = _.findWhere(selectedViewParameters, { DatabasNamn: fb.FasITDomain.SearchListaDatabasNamn.MaeklarePersonId }); if (!maeklarePersonId) { maeklarePersonId = _.findWhere(filterParameters, { DatabasNamn: fb.FasITDomain.SearchListaDatabasNamn.MaeklarePersonId }); if (maeklarePersonId) { maeklarePersonId.ModelList.push.apply(maeklarePersonId.ModelList, stateDetaljStatus.MaeklarePersonId); selectedViewParameters.push(maeklarePersonId); } } } if (!_.isUndefined(stateDetaljStatus.KontorId) && (stateDetaljStatus.KontorId).length > 0) { var kontorId = _.findWhere(selectedViewParameters, { DatabasNamn: fb.FasITDomain.SearchListaDatabasNamn.KontorId }); if (!kontorId) { kontorId = _.findWhere(filterParameters, { DatabasNamn: fb.FasITDomain.SearchListaDatabasNamn.KontorId }); if (kontorId) { kontorId.ModelList.push.apply(kontorId.ModelList, stateDetaljStatus.KontorId); selectedViewParameters.push(kontorId); } } } } else if (!_.isUndefined(stateParameters.ParameterList)) { _.forEach(stateParameters.ParameterList, function (p: fb.SoekFilterParameter) { if (!_.isUndefined(p.DatabasNamn)) { let param = _.findWhere(selectedViewParameters, { DatabasNamn: p.DatabasNamn }); if (!param) { param = _.findWhere(filterParameters, { DatabasNamn: p.DatabasNamn }); if (param && p.FritextVaerde) { param.Model.setValue(p.FritextVaerde); selectedViewParameters.push(param); } else { throw new Error('Inparametern stöds inte för sökfilter'); } } } }); var uppdragStatusFilter = _.findWhere(selectedViewParameters, { DatabasNamn: 'UppdragStatus' }); if (!uppdragStatusFilter) { uppdragStatusFilter = _.findWhere(filterParameters, { DatabasNamn: 'UppdragStatus' }); if (uppdragStatusFilter) { selectedViewParameters.unshift(uppdragStatusFilter); } } var ansvarigMaklareFilter = _.findWhere(selectedViewParameters, { DatabasNamn: fb.FasITDomain.SearchListaDatabasNamn.MaeklarePersonId }); if (!ansvarigMaklareFilter) { ansvarigMaklareFilter = _.findWhere(filterParameters, { DatabasNamn: fb.FasITDomain.SearchListaDatabasNamn.MaeklarePersonId }); if (ansvarigMaklareFilter) { selectedViewParameters.unshift(ansvarigMaklareFilter); } } } else { var uppdragStatus = _.findWhere(selectedViewParameters, { DatabasNamn: 'UppdragStatus' }); if (!uppdragStatus) { uppdragStatus = _.findWhere(filterParameters, { DatabasNamn: 'UppdragStatus' }); if (uppdragStatus) { selectedViewParameters.unshift(uppdragStatus); } } var ansvarigMaklare = _.findWhere(selectedViewParameters, { DatabasNamn: fb.FasITDomain.SearchListaDatabasNamn.MaeklarePersonId }); if (!ansvarigMaklare) { ansvarigMaklare = _.findWhere(filterParameters, { DatabasNamn: fb.FasITDomain.SearchListaDatabasNamn.MaeklarePersonId }); if (ansvarigMaklare) { selectedViewParameters.unshift(ansvarigMaklare); } } if (ansvarigMaklare && _.isEmpty(ansvarigMaklare.ModelList) && addDefaultValues) { var valbarAnsvMaeklare = _.findWhere(ansvarigMaklare.ModelOptions, { PersonId: $rootScope.InloggadAnvaendare.PersonId }) if (valbarAnsvMaeklare) { ansvarigMaklare.ModelList.push(valbarAnsvMaeklare.PersonId); } } } } $scope.toggleDropdownPopup = function (selector: string) { $timeout(function () { $(selector).dropdown('toggle'); $timeout(function () { $(selector).find('input').focus(); }); }); }; $scope.exposeScope = {}; $scope.options = { filterTyp: 1, gridOptions: { columns: gc, // Utlandskolumner läggs till när användaren är resolved så vi vet om vi är utland eller ej. rows: [], selectedItems: [], pagination: true, itemsPerPage: 20, selectableItemsPerPage: [20, 50, 100, 200], onRowClicked: onRowClicked, titleForRow: function (row) { return ""; }, isMatchedHighlightedBevakning: function (row, col) { if (col.Key === 'BostadsbevakningAntal') { return row.BostadsbevakningNyaMatchningar; } return false; }, isMatchedBevakning: function (row, col) { if (col.Key === 'BostadsbevakningAntal') { return !row.BostadsbevakningNyaMatchningar; } return false; }, isIconColumn: function (col) { return col.Key === 'SannolikhetForUppdrag'; }, showIcon: function (row: any) { return true; }, getSortColumnForStatus() { return _.findWhere(gc, { Key: 'UppdragStatusSpecifikation' }); }, iconUrl: function (row: any) { return _.isNull(row.UppdragStatusSpecifikation) ? '' : uppdragStatus(row.UppdragStatusSpecifikation).url }, showNavIcon: false, showOverlayIcon: function (row: any) { return null; }, getIconTooltip: function (row: any) { return uppdragStatus(row.UppdragStatusSpecifikation).tooltip }, iconColumnWidth: 20, traeffarText: translate('OBJEKTLISTA.OBJEKT_MATCHAR_DIN_SOEKNING'), warningIsAllSelectedInPage: false, warningIsAllSelected: false }, flerVal: [ { text: 'OBJEKTLISTA.SKRIV_UT_MARKERADE', icon: 'fa-print', cb: flerValSkrivtUtMarkerade }, { text: 'OBJEKTLISTA.VISA_SAELJARE', icon: 'fa-user', cb: flerValSoekSaeljare, separator: true }, { text: 'OBJEKTLISTA.VISA_KOEPARE', icon: 'fa-user', cb: flerValSoekKoepare }, { text: 'OBJEKTLISTA.VISA_PARTER', icon: 'fa-user', cb: flerValSoekSaeljareKoepare }, { text: 'OBJEKTLISTA.VISA_INTRESSENTER', icon: 'fa-user', cb: flerValSoekIntressenter, }, { text: 'OBJEKTLISTA.ARKIVERA', icon: 'fa-archive', cb: flerValArkivera, separator: true }, { text: 'OBJEKTLISTA.AVARKIVERA', icon: 'fa-sign-out fa-rotate-270', cb: flerValAvArkivera, }, { text: 'OBJEKTLISTA.TA_BORT', icon: 'fa-trash-o', cb: function () { $scope.options.showTaBortPopover = true; } }, { text: 'OBJEKTLISTA.ANTECKNA', icon: 'fa-pencil', cb: function () { $scope.options.showAntecknaPopover = true; }, separator: true }, { text: 'OBJEKTLISTA.LAEGG_TILL_OBJEKTTAGGAR', icon: 'fa-tag', cb: function () { $scope.options.showAddMaeklarObjektTaggarPopover = true; }, separator: true }, { text: 'OBJEKTLISTA.TA_BORT_OBJEKTTAGGAR', icon: 'fa-tag', cb: function () { $scope.options.showRemoveMaeklarObjektTaggarPopover = true; }, }, { text: 'OBJEKTLISTA.BYT_ANSVARIG_MAEKLARE', icon: 'fa-share', cb: function () { $scope.options.showBytMaeklarePopover = true; }, separator: true }, { text: 'OBJEKTLISTA.BOSTADSFOERSLAG', icon: 'fa-paper-plane-o', cb: function () { $scope.options.showObjektTipsPopover = true; }, separator: true }, ], getListParameterValues: getListParameterValues, ctrlPromise: ctrlPromise, mabeColumns: ['BostadsbevakningAntal'], soekArkiveradeDatabasNamn: 'StatusLagring', addDefaultFilters: addDefaultFilters, flerValBytMaeklarObjektTaggar: flerValBytMaeklarObjektTaggar, flerValBytAnsvarigMaeklare: flerValBytAnsvarigMaeklare, flerValTaBort: flerValTaBort, flerValObjektTips: flerValObjektTips, sparaAnteckning: sparaAnteckning, onSearchCb: function () { $scope.showBackendErrorAlert = false; }, objektTipsErrorMessage: "Du har valt ett eller flera objekt som inte är onnonserade. Det går endast att skicka tips om annonserade objekt." }; //$scope.$on('$destroy', function () { // stateService.offLoadState('ObjektListaCtrl', null); //}); stateService.addState(fb.FasITDomain.StateServiceObjectName.ObjektListaCtrl, null, function () { return { naeromraade: naeromraade, foerening: foerening, kontor: kontor, kommun: kommun }; }); }