/** * @ngdoc TopNavCtrl * @name fasit.component.#TopNavCtrl * @TopNavCtrl * * @description * Controllern för top-baren * */ angular.module('fasit').controller('TopNavCtrl', [ '$scope', '$rootScope', '$timeout', '$filter', '$routeParams', '$window', '$translate', 'securityService', 'globalTimerService', 'queueService', 'navigationService', 'quickSearchService', 'postitService', 'kontorssamarbetenService', 'sideDrawerService', 'stateService', 'meddelandeTillAnvaendareService', 'uiService', 'fasitSupportService', 'commonService', 'resourceService', 'logService', 'budService', 'maeklarObjektService', 'intressentService', 'notifyService', function ( $scope: fb.ITopNavScope, $rootScope: fb.IRootScope, $timeout: ng.ITimeoutService, $filter: ng.IFilterService, $routeParams: ng.route.IRouteParamsService, $window: ng.IWindowService, $translate: any, securityService: fb.ISecurityService, globalTimerService: fb.IGlobalTimerService, queueService: fb.IQueueService, navigationService: fb.INavigationService, quickSearchService: fb.IQuickSearchService, postitService: fb.IPostitService, kontorssamarbetenService: fb.IKontorssamarbetenService, sideDrawerService: fb.ISideDrawerService, stateService: fb.IStateService, meddelandeTillAnvaendareService: fb.IMeddelandeTillAnvaendareService, uiService: fb.IUIService, fasitSupportService: fb.IFasitSupportService, commonService: fb.ICommonService, resourceService: fb.IResourceService, logService: fb.ILogService, budService: fb.IBudService, maeklarObjektService: fb.IMaeklarObjektService, intressentService: fb.IIntressentService, notifyService: fb.INotifyService ) { 'use strict'; $scope.menus = { laeggTill: false, help: false } $scope.showSettingsMenu = false; $scope.showOfficeExpand = false; $scope.showNewsMenu = false; $scope.quickSearchResultShow = false; $scope.showNotis = false; $scope.mediaURL = fb.Environment.mediaURL; $scope.quickSearchClose = function () { uiService.close(fb.FasITDomain.UIState.Soek); $scope.quickSearchResultShow = false; $scope.search.quickSearchString = ""; }; $scope.checkResultShow = function (value: string) { $scope.quickSearchResultShow = value && (value.length > 1); }; var getGroupedQueue = function (queueName: string) { var queue = queueService.get(queueName).queue; var groupedQueue: fb.IGroupQueue = {}; _.each(queue, function (item: fb.IQueueableItem) { var localFKO = item.Item.getForeignKeyObject(); if (localFKO) { if (!groupedQueue[localFKO.entity]) { groupedQueue[localFKO.entity] = []; } if (!groupedQueue[localFKO.entity][localFKO.key]) { groupedQueue[localFKO.entity][localFKO.key] = { nav: getNavObjectForEntity(localFKO.entity, localFKO.key), $lastModification: item.Item.$lastModification, LastResolved: item.LastResolved, //UniqueId: item.UniqueId, FKO: localFKO, Entity: localFKO.entity }; } else { var old: fb.IGroupQueueItem = groupedQueue[localFKO.entity][localFKO.key]; old.$lastModification = Math.max(old.$lastModification, item.Item.$lastModification); old.LastResolved = Math.max(old.LastResolved, item.LastResolved); } } }); var ret: fb.IGroupQueueItem[] = []; _.each(groupedQueue, function (keyObjPair) { var keys = Object.keys(keyObjPair) _.each(keys, function (key) { ret.push(keyObjPair[key]); }); }); return ret; }; var kundoLink = fasitSupportService.getJuridikLink(); kundoLink.$promise.then(function () { $scope.kundoUrl = kundoLink['Url']; }); var getNavObjectForEntity = function (entity: fb.ForeignKeyEntity, key: number): fb.NavigationsObjekt { switch (entity) { case fb.ForeignKeyEntity.MAEKLAROBJEKT: case fb.ForeignKeyEntity.KONTAKT: return navigationService.getNavigationsObjekt(entity, key) case fb.ForeignKeyEntity.DOKUMENT: return new fb.NavigationsObjekt({ Visningstext: 'Dokument', ObjektTypId: fb.NavigationsObjektTypId.DOKUMENT }); case fb.ForeignKeyEntity.INSTAELLNINGAR: return new fb.NavigationsObjekt({ Visningstext: 'Inställningar', ObjektTypId: fb.NavigationsObjektTypId.INSTAELLNINGAR }); case fb.ForeignKeyEntity.KALENDERPOSTER: return new fb.NavigationsObjekt({ Visningstext: 'Kalenderpost', ObjektTypId: fb.NavigationsObjektTypId.KALENDERPOST }); case fb.ForeignKeyEntity.NOTISAR: return new fb.NavigationsObjekt({ Visningstext: 'Notis', ObjektTypId: fb.NavigationsObjektTypId.NOTIS }); case fb.ForeignKeyEntity.NAEROMRAADE: return new fb.NavigationsObjekt({ Visningstext: 'Närområde', ObjektTypId: fb.NavigationsObjektTypId.NAEROMRAADE }); case fb.ForeignKeyEntity.ANTECKNING: return new fb.NavigationsObjekt({ Visningstext: 'Anteckning', ObjektTypId: fb.NavigationsObjektTypId.ANTECKNING }); case fb.ForeignKeyEntity.MOEJLIGHET: return new fb.NavigationsObjekt({ Visningstext: 'Möjlighet', ObjektTypId: fb.NavigationsObjektTypId.MOEJLIGHET }); case fb.ForeignKeyEntity.NYADMINISTATIVKONTAKT: return new fb.NavigationsObjekt({ Visningstext: 'Ny Kontaktperson', ObjektTypId: fb.NavigationsObjektTypId.KONTAKT }); case fb.ForeignKeyEntity.BUDGET: return new fb.NavigationsObjekt({ Visningstext: 'Budget', ObjektTypId: fb.NavigationsObjektTypId.BUDGET }); default: throw 'Okänd foreignKey' } } $scope.pendingQueue = queueService.get('pending').queue; $scope.dirtyQueue = queueService.get('dirty').queue; $scope.resolvedQueue = queueService.get('resolved').queue; $scope.errorQueue = queueService.get('error').queue; $scope.$watch('pendingQueue.length', function () { $scope.pendingGroupedQueue = getGroupedQueue('pending'); $scope.resolvedGroupedQueue = getGroupedQueue('resolved'); }); $scope.$watch('dirtyQueue.length', function () { $scope.dirtyGroupedQueue = getGroupedQueue('dirty'); }); $scope.$watch('resolvedQueue.length', function () { $scope.resolvedGroupedQueue = getGroupedQueue('resolved'); }); $scope.$watch('errorQueue.length', function () { _.each($scope.errorQueue, function (item: fb.IQueueableItem) { var localFKO = item.Item.getForeignKeyObject(); item.nav = getNavObjectForEntity(localFKO.entity, localFKO.key); }); }); $scope.resolve = function (obj: fb.IQueueableItem) { // loop som sätter värden så som de bör vara enligt användarens val for (var i: number = 0; i < obj.Item.mergeConflicts.length; i++) { // ignore eftersom att else case aldrig kan hända, men kontrollen if array behövs för att inte krasha om koden innan skulle ändras och det plötsligt kan komma sådana värden /* istanbul ignore else */ if (obj.Item.mergeConflicts[i].keepLocal.value) { obj.Item.mergeConflicts[i].localValue.dirty = true; obj.Item.mergeConflicts[i].localValue.originalValue = obj.Item.mergeConflicts[i].databaseValue; } else { obj.Item.mergeConflicts[i].localValue.value = obj.Item.mergeConflicts[i].databaseValue; obj.Item.mergeConflicts[i].localValue.originalValue = obj.Item.mergeConflicts[i].databaseValue; } } obj.Item.mergeConflicts.length = 0; queueService.get('dirty').enqueue(obj); queueService.get('error').remove(obj.Item.getGlobalUniqueId()); globalTimerService.saveItem(obj.Item.getGlobalUniqueId()); } $scope.forceSave = function (saveItem) { var toBeSaved: string[] = []; _.each($scope.dirtyQueue, function (item: fb.IQueueableItem) { var itemFKO = item.Item.getForeignKeyObject(); if (itemFKO.entity === saveItem.FKO.entity && itemFKO.key === saveItem.FKO.key) { toBeSaved.push(item.UniqueId); } }); _.each(toBeSaved, function (uniqueId: string) { globalTimerService.saveItem(uniqueId); }); logService.log('SparningLoggad', null, null, fb.FasITDomain.LogLevel.Info, null, null); }; $scope.forceReload = function (item) { var navType; var ctrlName var oId; if (item.Item.$rootName === fb.MaeklarObjektDO.$rootName) { navType = 'MaeklarObjekt'; ctrlName = 'MaeklarObjektCtrl'; oId = (item.Item).MaeklarObjektId.value logService.log("forceReload :: ladda om har anropats för ett mäklarobjekt med id: " + oId); } else if (item.Item.$rootName === fb.FysiskPerson2DO.$rootName || item.Item.$rootName === fb.JuridiskPersonDO.$rootName) { navType = 'Kontakt'; ctrlName = 'KontaktCtrl'; oId = (item.Item).PersonId.value logService.log("forceReload :: ladda om har anropats för en kontakt med id: " + oId); } if (navType) { navigationService.close(item.nav, navType); navigationService.findOpenObjekt(ctrlName, oId, true); } else { resourceService.removeFromQueues(item.Item.getGlobalUniqueId()); navigationService.goto(new fb.NavigationsObjekt({ NavigeraTill: 'Saljdriv' })); } }; $scope.saveAll = function () { $scope.showCurrentSaveDialog = true; globalTimerService.globalSave(true); }; $scope.gotoQueueItem = function (item: fb.IGroupQueueItem) { // TODO: Används inte? if (item.Entity === fb.ForeignKeyEntity.MAEKLAROBJEKT || item.Entity === fb.ForeignKeyEntity.KONTAKT) { navigationService.goto(item.nav); } } $scope.globalTimerStatus = globalTimerService.status; $scope.pingIsError = function () { var now = new Date().getTime(); var errorLimit = 5 * 60 * 1000; return (Math.abs(now - $scope.globalTimerStatus.lastPingResponse) >= errorLimit); }; $scope.search = { quickSearchString: "" }; $scope.toggleSearch = function (e?: any) { if (uiService.getCurrentBreakpoint() === fb.FasITDomain.Breakpoints.xs) { if (!uiService.toggle(fb.FasITDomain.UIState.Soek)) { return } } if (e) { e.preventDefault(); } $('#topNavSearchField').focus(); $scope.search.quickSearchString = ''; } var quickSearchAwaitingTimeout: ng.IPromise; $scope.quickSearch = function (searchString) { $scope.checkResultShow(searchString); $scope.quickSearchResult = undefined; if (searchString.length > 1) { if (quickSearchAwaitingTimeout) { $timeout.cancel(quickSearchAwaitingTimeout); } quickSearchAwaitingTimeout = $timeout(function () { $scope.quickSearchResult = quickSearchService.quickSearch(searchString); $scope.quickSearchResult.$promise.then(function () { $scope.quickSearchHighlight = 0; if ($scope.quickSearchResult && $scope.quickSearchResult.Kontakter) { visaRaettTelefonnummer($scope.quickSearchResult.Kontakter, searchString); } }); }, 200); } }; var visaRaettTelefonnummer = function (kontakter, soekStraeng) { _.each(kontakter, function (kontakt: any) { var mob: any, hem: any, arb: any, vax: any, dir: any; if (kontakt.TelDir) { dir = { original: kontakt.TelDir, stripped: kontakt.TelDir.replace('-', '') }; } if (kontakt.TelVax) { vax = { original: kontakt.TelVax, stripped: kontakt.TelVax.replace('-', '') }; } if (kontakt.TelHem) { hem = { original: kontakt.TelHem, stripped: kontakt.TelHem.replace('-', '') }; } if (kontakt.TelArb) { arb = { original: kontakt.TelArb, stripped: kontakt.TelArb.replace('-', '') }; } if (kontakt.TelMob) { mob = { original: kontakt.TelMob, stripped: kontakt.TelMob.replace('-', '') } } var nummer = [hem, mob, arb, vax, dir]; var traeff = $filter('filter')(nummer, soekStraeng); if (traeff.length === 0) { var tfn = _.find(nummer, function (tfn: any) { return !!tfn; }); kontakt.telefonnummer = tfn ? tfn.original : ''; } else { kontakt.telefonnummer = traeff[0].original; } }); }; //$scope.showCurrentSaveDialog = function () { // $rootScope.showCurrentSaveDialog = true; //}; $scope.quickSearchClick = function (objekt) { if (objekt.ObjektTypId === 1 || objekt.ObjektTypId === 2) { navigationService.goto(objekt); } $scope.quickSearchClose(); }; $scope.quickSearchKeypress = function (event) { if (event.keyCode === 27) { // escape $scope.quickSearchClose(); } else if ($scope.quickSearchResult && $scope.quickSearchResult.$resolved) { var length = $scope.quickSearchResult.MaeklarObjekts.length + $scope.quickSearchResult.Kontakter.length; if (event.keyCode === 40) {//arrow down if ($scope.quickSearchHighlight < length + 1) { $scope.quickSearchHighlight++; } } else if (event.keyCode === 38) {//arrow up if ($scope.quickSearchHighlight > 0) { $scope.quickSearchHighlight--; } } else if (event.keyCode === 13) {//enter var objekt: fb.NavigationsObjekt; if ($scope.quickSearchHighlight < $scope.quickSearchResult.MaeklarObjekts.length) { objekt = $scope.quickSearchResult.MaeklarObjekts[$scope.quickSearchHighlight]; $scope.quickSearchClick(objekt); } else if ($scope.quickSearchHighlight === $scope.quickSearchResult.MaeklarObjekts.length) { $scope.gotoMaeklarObjektListSearchString(); } else if ($scope.quickSearchHighlight === $scope.quickSearchResult.MaeklarObjekts.length + $scope.quickSearchResult.Kontakter.length + 1) { $scope.gotoKontaktListSearchString(); } else { objekt = $scope.quickSearchResult.Kontakter[$scope.quickSearchHighlight - $scope.quickSearchResult.MaeklarObjekts.length - 1]; $scope.quickSearchClick(objekt); } $scope.quickSearchClose(); } } }; $scope.gotoMaeklarObjektListSearchString = function () { stateService.addState('Soeklista', 'quickSearch', function () { return { searchString: $scope.search.quickSearchString }; }); stateService.offLoadState('Soeklista', 'quickSearch'); navigationService.gotoObjektlista(); }; $scope.gotoKontaktListSearchString = function () { stateService.addState('Soeklista', 'quickSearch', function () { return { searchString: $scope.search.quickSearchString }; }); stateService.offLoadState('Soeklista', 'quickSearch'); navigationService.gotoKontaktlista(); }; $scope.getKundoLaenk = fasitSupportService.getKundoLink().$promise.then(function () { var kundoLink = fasitSupportService.getKundoLink(); kundoLink.$promise.then(function () { $scope.KundoLaenk = kundoLink['Url']; }); }) $scope.openSupportPage = function () { $window.open($scope.KundoLaenk); }; $scope.openJuridikPage = function () { var kundoLink = fasitSupportService.getJuridikLink(); kundoLink.$promise.then(function () { $window.open(kundoLink['Url'], '_blank'); }); }; $scope.openFasitNytt = function () { navigationService.goto(new fb.NavigationsObjekt({ ObjektTypId: fb.NavigationsObjektTypId.FASIT_NYTT })); }; $scope.gotoNyttMaeklarObjekt = function () { navigationService.goto(new fb.NyttMaeklarNavigationsObjekt({}), true); }; $scope.gotoNyKontakt = function () { navigationService.gotoAndCreateNyKontakt(); }; $scope.gotoInstaellningar = function () { navigationService.goto(new fb.NavigationsObjekt({ ObjektTypId: fb.NavigationsObjektTypId.INSTAELLNINGAR })); }; $scope.gotoInstaellningarOmraade = function () { navigationService.goto(new fb.NavigationsObjekt({ ObjektTypId: fb.NavigationsObjektTypId.OMRADEN })); }; $scope.gotoInstaellningarTillaeggsklausuler = function () { navigationService.goto(new fb.NavigationsObjekt({ ObjektTypId: fb.NavigationsObjektTypId.TILLAGGSKLAUSULER })); }; $scope.gotoFristaaendeDokument = function () { navigationService.goto(new fb.NavigationsObjekt({ ObjektTypId: fb.NavigationsObjektTypId.FRISTAAENDE_DOKUMENT })); }; //End quickSearch //Postit $scope.postitDialog = { show: false, add: true, currentPostit: null, }; $scope.showPostitStack = false; $scope.postits = postitService.query(); $scope.setActivePostit = function (postit: fb.Postit) { $scope.postitDialog.show = true; if (postit && postit.PostitId) { $scope.postitDialog.currentPostit = postit; $scope.postitDialog.add = false; } else { $scope.postitDialog.currentPostit = new fb.Postit({ Text: '', SkapadDatum: '', SenastAendrad: '' }); $scope.postitDialog.add = true; } // Timeout för att HTML-en ska hinna renderas $timeout(function () { var postIt = $('textarea[name="postitdialog.currentpostit.text"]'); if (postIt.length > 0) { (postIt[0]).focus(); } }, 100, true); }; $scope.savePostitDialog = function () { var current = $scope.postitDialog.currentPostit; if ($scope.postitDialog.add) { if (current.Text && current.Text.value !== '') { var add = postitService.add(current); add.$promise.then(function (data) { $scope.postits.push(add); }); } } else if (current.Text.value !== current.Text.originalValue) { postitService.save(current); } $scope.postitDialog.show = false; }; $scope.deletePostit = function () { var current = $scope.postitDialog.currentPostit; if ($scope.postitDialog.add) { //throw new Error("Kan inte ta bort osparade notisar"); } else { var remove = postitService.remove(current.PostitId.value); remove.$promise.then(function () { for (var i = 0; i < $scope.postits.length; i++) { if ($scope.postits[i].PostitId.value === current.PostitId.value) { $scope.postits.splice(i, 1); break; } } }); } $scope.postitDialog.show = false; }; //End Postit //Meddelanden $scope.getPrioriteratMeddelande = function () { $scope.prioriteratMeddelande = meddelandeTillAnvaendareService.getPrioriterat(); }; $scope.getMeddelande = function () { $scope.meddelanden = meddelandeTillAnvaendareService.getMeddelandeLists(); $scope.meddelanden.$promise.then(function () { var ejHanteradeDigibudMap = {}; var hanteradeDigibudLista = []; var oevrigaOlaestaMeddelandenLista = []; var oevrigaLaestaMeddelandenLista = []; angular.forEach($scope.meddelanden.FasitMeddelandeList, function (meddelande: fb.MeddelandeRO) { if (meddelande.MeddelandeTypId === fb.FasITDomain.FasitMeddelandeTyp.ManuellaBudAttGodkaenna || meddelande.MeddelandeTypId === fb.FasITDomain.FasitMeddelandeTyp.NyBudgivareAttGodkaenna || meddelande.MeddelandeTypId === fb.FasITDomain.FasitMeddelandeTyp.AutomatiskaBud || meddelande.MeddelandeTypId === fb.FasITDomain.FasitMeddelandeTyp.ManuelltBudGodkaent || meddelande.MeddelandeTypId === fb.FasITDomain.FasitMeddelandeTyp.NyBudgivareGodkaent) { var key = meddelande.MaeklarObjektId + '_' + meddelande.MeddelandeTypId; switch (meddelande.Prio) { case 1: if (ejHanteradeDigibudMap[key] !== undefined) { ejHanteradeDigibudMap[key].meddelandeList.push({ meddelande: meddelande, showGodkaennAvslaaPopover: false, showAvslaaPopover: false }); if (meddelande.SkapatDatum > ejHanteradeDigibudMap[key].senasteTid) { ejHanteradeDigibudMap[key].senasteTid = meddelande.SkapatDatum; } } else { ejHanteradeDigibudMap[key] = { meddelandeList: [{ meddelande: meddelande, showGodkaennAvslaaPopover: false, showAvslaaPopover: false, model: 0 }], maeklarObjektId: meddelande.MaeklarObjektId, adress: meddelande.AdressText, senasteTid: meddelande.SkapatDatum, meddelandeTyp: meddelande.MeddelandeTypId, showList: false }; } break; case 2: hanteradeDigibudLista.push(meddelande); meddelandeTillAnvaendareService.markeraSomAerLaest(meddelande.MeddelandeId); break; case 3: // Prio 3 ska läggas med övriga meddelanden även om de är av någon av digital budgivningsmeddelandetyperna hanteradeDigibudLista.push(meddelande); break; default: // Ska ej visas i notifierings-dropdown break; } } else { switch (meddelande.Prio) { case 2: // Övriga meddelanden ska aldrig ha prio 1 oevrigaOlaestaMeddelandenLista.push(meddelande); meddelandeTillAnvaendareService.markeraSomAerLaest(meddelande.MeddelandeId); break; case 3: oevrigaLaestaMeddelandenLista.push(meddelande); break; default: // Ska ej visas i notifierings-dropdown break; } } }); $scope.processadeMeddelanden = { DigitalBudgivningsmeddelandenEjHanterade: _.isEmpty(ejHanteradeDigibudMap) ? null : ejHanteradeDigibudMap, DigitalBudgivningsmeddelandenHanterade: hanteradeDigibudLista, Driftstoerningsmeddelande: $scope.meddelanden.Driftstoerningsmeddelande, FasitMeddelandeList: oevrigaOlaestaMeddelandenLista.concat(oevrigaLaestaMeddelandenLista), } }); }; $scope.getPrioriteratMeddelande(); $scope.DriftstoerningsmeddelandeNivaa = fb.FasITDomain.DriftstoerningsmeddelandeNivaa; $scope.dismissFasitMeddelande = function (meddelande) { meddelandeTillAnvaendareService.markeraSomAerLaest(meddelande.MeddelandeId).$promise.then(function () { $scope.processadeMeddelanden.FasitMeddelandeList.splice($scope.processadeMeddelanden.FasitMeddelandeList.indexOf(meddelande), 1); }); }; $scope.dismissHanteradeFasitMeddelande = function (meddelande) { meddelandeTillAnvaendareService.markeraSomAerLaest(meddelande.MeddelandeId).$promise.then(function () { $scope.processadeMeddelanden.DigitalBudgivningsmeddelandenHanterade.splice($scope.processadeMeddelanden.DigitalBudgivningsmeddelandenHanterade.indexOf(meddelande), 1); }); }; $scope.dismissDriftstoerningsMeddelande = function (meddelande) { meddelandeTillAnvaendareService.kvitteraDriftstoerningsmeddelande(meddelande.MeddelandeId).$promise.then(function () { $scope.processadeMeddelanden.Driftstoerningsmeddelande = null; }); }; var sparaOchLaddaOmObjektOmOeppet = function (maeklarObjektId: number) { if (parseInt($routeParams['id']) === maeklarObjektId) { globalTimerService.globalSave(true); navigationService.reloadObjekt(maeklarObjektId, fb.NavigationsObjektTypId.MAEKLAROBJEKT); } }; function efterGodkaenn(bud: fb.Bud, meddelande: fb.MeddelandeRO) { var foerstaBudFoerObjekt = budService.foerstaBudFoerObjekt(meddelande.MaeklarObjektId, meddelande.PersonId); foerstaBudFoerObjekt.$promise.then(function (resp) { var intressent = resp.ObjektIntressent; $scope.showNewsMenu = false; $scope.getPrioriteratMeddelande(); sideDrawerService.setSideDrawer('SMSUtskick', { extended: true, useDefaultExtendedForBud: true, recipients: [], maeklarObjektId: meddelande.MaeklarObjektId, textMallNamn: fb.FasITDomain.TextMallNamn.BUDGIVNING_NYTT_BUD, extraData: { BudgivareBud: bud.Bud.value, BudgivareNummer: bud.Alias.value } }); if (resp.AerFoerstaBudPaaObjekt) { // första budet på objektet sideDrawerService.stackQueue('SMSUtskick', { extended: true, recipients: [], maeklarObjektId: meddelande.MaeklarObjektId, textMallNamn: fb.FasITDomain.TextMallNamn.BUDGIVNING_BUDSTART_SAELJARE, extraKontakter: { saeljare: new fb.ChangeTrack(true), } }) } if (resp.AerFoerstaBudFoerObjektIntressent && !!intressent) { // första budet på budgivaren var mottagare = new fb.PersonMottagare({ PersonId: intressent.PersonId, PersonNamn: intressent.PersonNamn, EjReklam: !!intressent.TelefonnummerMobil && !!intressent.TelefonnummerMobil.AerSpaerrat, TelefonnummerMobil: (!!intressent.TelefonnummerMobil ? $filter('phoneNumber')(intressent.TelefonnummerMobil.NormaliseratTelefonnummer) : ''), }); sideDrawerService.stackQueue('SMSUtskick', { extended: true, recipients: [mottagare], maeklarObjektId: meddelande.MaeklarObjektId, textMallNamn: fb.FasITDomain.TextMallNamn.BUDGIVNING_BUDSTART_BUDGIVARE, extraData: { BudgivareNummer: bud.Alias.value, }, }); } }); } $scope.godkaennBud = function (meddelande: fb.MeddelandeRO) { var bud = budService.godkaenn(meddelande.BudAttGodkaennaId, meddelande.MaeklarObjektId); bud.$promise.then(function () { sparaOchLaddaOmObjektOmOeppet(meddelande.MaeklarObjektId); efterGodkaenn(bud, meddelande); }, function (error) { $scope.addBlaaNotifiering(error, meddelande) }); } function efterAvvisa(bud: fb.Bud, meddelande: fb.MeddelandeRO, val: number) { $scope.showNewsMenu = false; $scope.getPrioriteratMeddelande(); if (val === fb.FasITDomain.BudAvvisningsTyp.ANNULLERA && bud.Bud && bud.Alias) { sideDrawerService.setSideDrawer('SMSUtskick', { extended: true, useDefaultExtendedForBud: true, recipients: [], maeklarObjektId: meddelande.MaeklarObjektId, textMallNamn: fb.FasITDomain.TextMallNamn.BUDGIVNING_ANNULERAT_BUD, extraData: { BudgivareBud: bud.Bud.value, BudgivareNummer: bud.Alias.value } }); } } $scope.avvisaOptions = { 'ANNULLERA': fb.FasITDomain.BudAvvisningsTyp.ANNULLERA, 'TA_BORT': fb.FasITDomain.BudAvvisningsTyp.TA_BORT, 'AVVISA': fb.FasITDomain.BudAvvisningsTyp.AVVISA }; $scope.setAvvisa = function (budAvvisningsTyp: number, meddelandeWrapper: any) { meddelandeWrapper.model = budAvvisningsTyp; }; $scope.avvisaBud = function (meddelande: fb.MeddelandeRO, val: number) { var bud = budService.avvisa(meddelande.BudAttGodkaennaId, meddelande.MaeklarObjektId, val); bud.$promise.then(function () { sparaOchLaddaOmObjektOmOeppet(meddelande.MaeklarObjektId); efterAvvisa(bud, meddelande, val); }, function (error) { $scope.addBlaaNotifiering(error, meddelande) }); }; $scope.hanteraBudgivare = function (meddelande: fb.MeddelandeRO, behoeverDubblettFoerslag: boolean = true, intressent: fb.Objektintressent = null) { var maeklarObjekt: fb.MaeklarObjektDO = maeklarObjektService.get(meddelande.MaeklarObjektId); var navObject: fb.ISideDrawerIntressentParams = { maeklarObjekt: maeklarObjekt, PersonId: meddelande.PersonId, behoeverDubblettFoerslag: behoeverDubblettFoerslag, updateEfterDubblettSammanslagning: function (personId: number, maeklarObjektId: number, intressent: fb.Objektintressent) { sparaOchLaddaOmObjektOmOeppet(meddelande.MaeklarObjektId); $scope.hanteraBudgivare(new fb.MeddelandeRO({ PersonId: personId, MaeklarObjektId: maeklarObjektId }), false, intressent); }, sammanslagningFraanNotifiering: true, skipUpdateTable: true }; if (intressent !== null) { navObject.row = { Intressent: intressent, subRows: [], primarTelefonnummer: null, hoegstaBud: null, senastVisning: null, joinAnteckningar: null, isKoepare: false, isExtraKontakt: false }; } maeklarObjekt.$promise.then(function () { $scope.showNewsMenu = false; sideDrawerService.setSideDrawer('Intressent', navObject, '75%'); }, function (error) { $scope.addBlaaNotifiering(error, meddelande) }); } $scope.addBlaaNotifiering = function (error, meddelande: fb.MeddelandeRO) { if (error.status === 403) { var title: string; var message: string; switch (meddelande.MeddelandeTypId) { case fb.FasITDomain.FasitMeddelandeTyp.ManuellaBudAttGodkaenna: title = 'Kan inte hantera budet'; message = 'Budet du försöker hantera tillhör ett annat kontorssamarbete.'; break; case fb.FasITDomain.FasitMeddelandeTyp.NyBudgivareAttGodkaenna: title = 'Kan inte hantera budgivare'; message = 'Budgivaren du försöker hantera tillhör ett annat kontorssamarbete.'; break; default: return; // Hamnar vi här har vi gjort nåt fel } notifyService.addNotification({ Title: title, Message: message, Level: 'Info' }); } } $scope.gotoAllaHaendelser = function () { $scope.showNewsMenu = false; navigationService.goto(new fb.NavigationsObjekt({ ObjektTypId: fb.NavigationsObjektTypId.HAENDELSER })); } //End meddelanden $scope.onHamburgerMenuClick = function () { uiService.toggle(fb.FasITDomain.UIState.VaensterMeny); }; /*$scope.getLeftNavVisibilityStatus = function () { return navigationService.getLeftNavVisibilityStatus(); };*/ $scope.signOff = function () { securityService.signOff(); }; $scope.onNotisButtonClick = function () { $scope.showNotis = !$scope.showNotis; if ($scope.showNotis) { $scope.postits = postitService.query(); } }; $scope.hideNotis = function () { $scope.showNotis = false; }; $scope.hideLaeggTill = function () { $scope.menus.laeggTill = false; }; $scope.hideSettingsMenu = function () { $scope.showSettingsMenu = false; }; $scope.switchOffice = function (kontorId) { securityService.switchOffice(kontorId); }; $scope.openNyKalenderPost = function () { sideDrawerService.setSideDrawer('KalenderHandelse', { }, '500px'); }; $scope.openNyEpost = function () { sideDrawerService.setSideDrawer('EpostUtskick', { recipients: [], sender: null, body: null, personId: parseInt($routeParams['personId'], 10) || null, maeklarObjektId: parseInt($routeParams['id'], 10) || null, subject: null, showAddButtons: true }); }; $scope.openNyttSms = function () { sideDrawerService.setSideDrawer('SMSUtskick', { extended: false, recipients: [], sender: null, body: null, personId: parseInt($routeParams['personId'], 10) || null, maeklarObjektId: parseInt($routeParams['id'], 10) || null, }); }; $scope.getJuridiskIcon = function (jurPersonTyp: number) { return commonService.JuridiskPerson.getJuridiskIcon(jurPersonTyp); } $scope.getJuridiskInitials = function (jurPersonTyp: number, visningstext : string) { return commonService.JuridiskPerson.getJuridiskInitials(jurPersonTyp, visningstext); } $scope.getKundKategoriAlt = function (kundkategori: number): string { return commonService.KundKategori.getKundKategoriAltText(kundkategori); } // Gå till kontakt med personId $scope.openKontakt = function (personId, aktivitetState?: number) { if (aktivitetState !== undefined) { stateService.addState(fb.FasITDomain.StateServiceObjectName.AktivitetCtrl, personId, function () { return { AktivitetState: aktivitetState }; }); stateService.offLoadState(fb.FasITDomain.StateServiceObjectName.AktivitetCtrl, personId); } navigationService.findOpenObjekt(fb.FasITDomain.NavigationController.KONTAKT, personId, true); }; // Gå till objekt med maeklarObjektId $scope.openMaeklarObjekt = function (maeklarObjektId) { navigationService.findOpenObjekt(fb.FasITDomain.NavigationController.MAEKLAROBJEKT, maeklarObjektId, true); }; $rootScope.$watch('init.loadFinished', function (newVal, oldVal) { if (newVal === true) { $scope.kontorssamarbeten = _.groupBy($rootScope.InloggadAnvaendare.JobbarPaaKontor, 'KontorsgruppId'); } }); $scope['dj'] = function () { $('.fa,.icon').addClass('fa-spin'); } $scope.devOutput = function () { var watchers = (function () { var root = $(document.getElementsByTagName('body')); var watchers = []; var f = function (element) { if (element.data().hasOwnProperty('$scope')) { angular.forEach(element.data().$scope.$$watchers, function (watcher) { watchers.push(watcher); }); } angular.forEach(element.children(), function (childElement) { f($(childElement)); }); }; f(root); return watchers; })(); console.info({ Watchers: watchers }); var invert = function () { var css = 'html {-webkit-filter: invert(100%);' + '-moz-filter: invert(100%);' + '-o-filter: invert(100%);' + '-ms-filter: invert(100%); }', head = document.getElementsByTagName('head')[0], style = document.createElement('style'); style.type = 'text/css'; if (( style).styleSheet) { (( style).styleSheet).cssText = css; } else { style.appendChild(document.createTextNode(css)); } head.appendChild(style); } invert(); }; }]);