angular.module('fasit') .controller('DupliceraMaeklarObjektSideDrawerCtrl', [ '$scope', 'navigationService', 'sideDrawerService', 'domainService', 'medarbetareService', 'maeklarObjektService', 'commonService', 'stateService', '$rootScope', 'kontorService', 'objektIProjektService', function ( $scope: fb.IDupliceraMaeklarObjektSideDrawerScope, navigationService: fb.INavigationService, sideDrawerService: fb.ISideDrawerService, domainService: fb.IDomainService, medarbetareService: fb.IMedarbetareService, maeklarObjektService: fb.IMaeklarObjektService, commonService: fb.ICommonService, stateService: fb.IStateService, $rootScope: fb.IRootScope, kontorService: fb.IKontorService, objektIProjektService: fb.IObjektIProjektService ) { var params = sideDrawerService.getParams(); var oldMaeklarObjekt = params.maeklarObjekt; var medarbetare = medarbetareService.query(false); $scope.isUtland = $rootScope.InloggadAnvaendare.BostadsmarknadId === fb.FasITDomain.Bostadsmarknad.UTLAND; var ursprunglingtKontorsId = oldMaeklarObjekt.KontorId.value; $scope.KopieraTillKontorMedId = new fb.ChangeTrack(null); $scope.kontorIKontorssamarbetet = []; kontorService.kontorIKontorsamarbete().$promise.then(function (data) { $scope.KontorssamarbetetHarFleraKontor = (data.length > 1); if ($scope.KontorssamarbetetHarFleraKontor) { for (var i = 0; i < data.length; i++) { if (data[i].AerObjektskapandeInaktiverat === false) { $scope.kontorIKontorssamarbetet.push({ show: data[i].Kontorsnamn, val: data[i].KontorId }); } } } else { //Finns det bara 1 kontor och objektet inte tillhör det så säg att objektet ska kopieras till det //Hanterar objekt som ligger på kontor som inte längre är aktiva. //Finns det flera kontor så hanteras det av att man måste välja kontor i droppis if (data.length === 1 && data[0].KontorId !== ursprunglingtKontorsId) { $scope.maeklarObjekt.KopieraTillKontorMedId.setValue(data[0].KontorId); } } }); $scope.$watch('KopieraTillKontorMedId.value', function (newVal) { if (newVal !== undefined && newVal !== null) { if (newVal !== ursprunglingtKontorsId) { $scope.maeklarObjekt.KopieraTillKontorMedId.setValue(newVal); } } }); var dontSetDefaultFirstWatch = false; $scope.showSpinner = false; $scope.showChoices = false; var objektadress = oldMaeklarObjekt.Adress.AdressText.value; if ($scope.isUtland) { objektadress = oldMaeklarObjekt.Adress.GatuAdressUtland.value; } $scope.maeklarObjekt = new fb.DupliceraMaeklarobjektWO( { AdressText: objektadress, Fastighetsbeteckning: oldMaeklarObjekt.Fastighetsbeteckning.value, } ); $scope.choosenSaeljare = { Namn: new fb.ChangeTrack(null), PersonId: new fb.ChangeTrack(null) }; $scope.uppdragTyper = domainService.uppdragtyp.query(); $scope.intagskaellor = domainService.intagskaella.query(); $scope.ansvarigaMaeklare = []; $scope.intagareList = []; if (oldMaeklarObjekt.isObjektIProjekt()) { $scope.AerObjektIProjekt = true; $scope.maeklarObjekt.KopieraInteSomObjektIProjekt.value = false; } else { $scope.maeklarObjekt.KopieraInteSomObjektIProjekt.value = true; } if (params.defaultSammaSaeljare) { $scope.maeklarObjekt.setValue($scope.maeklarObjekt.Dupliceringstyp, fb.FasITDomain.MaeklarObjektDupliceringstyp.SAMMA_LÄGENHET_ELLER_FASTIGHET); $scope.maeklarObjekt.setValue($scope.maeklarObjekt.KopieraMedSaeljare, fb.FasITDomain.KopieraMedSaeljareTyp.SAMMA_SAELJARE); } // Säljare var obj = stateService.loadState('DupliceraMaeklarObjektSideDrawerCtrl', oldMaeklarObjekt.MaeklarObjektId.value) if (obj) { if (obj.maeklarObjekt) { dontSetDefaultFirstWatch = true; $scope.maeklarObjekt = obj.maeklarObjekt; } if (obj.choosenSaeljare) { $scope.choosenSaeljare = obj.choosenSaeljare; } } $scope.KopieraMedSaeljareTyp = { 'SAMMA_SAELJARE': fb.FasITDomain.KopieraMedSaeljareTyp.SAMMA_SAELJARE, 'KOEPARE_SOM_SAELJARE': fb.FasITDomain.KopieraMedSaeljareTyp.KOEPARE_SOM_SAELJARE, 'ANNAN_SAELJARE': fb.FasITDomain.KopieraMedSaeljareTyp.ANNAN_SAELJARE, }; $scope.MaeklarObjektDupliceringstyp = { 'SAMMA_LÄGENHET_ELLER_FASTIGHET': fb.FasITDomain.MaeklarObjektDupliceringstyp.SAMMA_LÄGENHET_ELLER_FASTIGHET, 'SAMMA_BYGGNAD': fb.FasITDomain.MaeklarObjektDupliceringstyp.SAMMA_BYGGNAD, 'LIKNANDE_FASTIGHET': fb.FasITDomain.MaeklarObjektDupliceringstyp.LIKNANDE_FASTIGHET, }; $scope.maeklarObjekt.MaeklarObjektIdAttKopiera.value = oldMaeklarObjekt.MaeklarObjektId.value; $scope.maeklarObjekt.AerFastighet.value = !oldMaeklarObjekt.isBRL; // Om det inte är BRL eller Småhus ska alternativet "Liknande fastighet" döljas. $scope.hideSammaByggnadAndLiknandeFastighet = !oldMaeklarObjekt.isBRL && !oldMaeklarObjekt.isSmaahus; if ($scope.hideSammaByggnadAndLiknandeFastighet) { $scope.maeklarObjekt.Dupliceringstyp.value = fb.FasITDomain.MaeklarObjektDupliceringstyp.SAMMA_LÄGENHET_ELLER_FASTIGHET; // Vill att den ska uppdatera valideringen av dupliceringstyp $scope.maeklarObjekt.Dupliceringstyp.valid = fb.changeTrackValid($scope.maeklarObjekt.Dupliceringstyp); } medarbetare.$promise.then(function () { $scope.ansvarigaMaeklare = commonService.filterMedarbetareList(medarbetare, [fb.FasITDomain.MedarbetareRoll.MAEKLARE, fb.FasITDomain.MedarbetareRoll.SAELJARE_UTLAND, fb.FasITDomain.MedarbetareRoll.INNESAELJARE_UTLAND]); $scope.maeklarObjekt.AnsvarigMaeklarePersonId.setValue($rootScope.InloggadAnvaendare.PersonId); if ($scope.isUtland) { $scope.intagareList = commonService.filterMedarbetareList(medarbetare, null); $scope.maeklarObjekt.IntagarePersonId.setValue($rootScope.InloggadAnvaendare.PersonId); // validation intagare $scope.maeklarObjekt.IntagarePersonId.required = true; $scope.maeklarObjekt.IntagarePersonId.valid = fb.changeTrackValid($scope.maeklarObjekt.IntagarePersonId); } else { $scope.maeklarObjekt.IntagarePersonId.setValue(-1); } }); var setDefault = function () { $scope.maeklarObjekt.KopieraAnteckningar.value = false; switch ($scope.maeklarObjekt.Dupliceringstyp.value) { case fb.FasITDomain.MaeklarObjektDupliceringstyp.SAMMA_LÄGENHET_ELLER_FASTIGHET: switch ($scope.maeklarObjekt.KopieraMedSaeljare.value) { case fb.FasITDomain.KopieraMedSaeljareTyp.SAMMA_SAELJARE: $scope.maeklarObjekt.KopieraBilder.value = true; $scope.maeklarObjekt.KopieraDokument.value = true; $scope.maeklarObjekt.KopieraInterioerOchSaeljbeskrivning.value = true; $scope.maeklarObjekt.KopieraLaan.value = true; $scope.maeklarObjekt.KopieraDriftskostnader.value = true; if (!$scope.maeklarObjekt.AerFastighet.value) { $scope.maeklarObjekt.KopieraEnergideklaration.value = true; } else { $scope.maeklarObjekt.KopieraEnergideklaration.value = true; } break; case fb.FasITDomain.KopieraMedSaeljareTyp.KOEPARE_SOM_SAELJARE: case fb.FasITDomain.KopieraMedSaeljareTyp.ANNAN_SAELJARE: $scope.maeklarObjekt.KopieraBilder.value = false; $scope.maeklarObjekt.KopieraDokument.value = false; $scope.maeklarObjekt.KopieraInterioerOchSaeljbeskrivning.value = true; $scope.maeklarObjekt.KopieraLaan.value = false; $scope.maeklarObjekt.KopieraDriftskostnader.value = false; if (!$scope.maeklarObjekt.AerFastighet.value) { $scope.maeklarObjekt.KopieraEnergideklaration.value = true; } else { $scope.maeklarObjekt.KopieraEnergideklaration.value = false; } break; } break; case fb.FasITDomain.MaeklarObjektDupliceringstyp.SAMMA_BYGGNAD: $scope.maeklarObjekt.KopieraBilder.value = false; $scope.maeklarObjekt.KopieraDokument.value = false; $scope.maeklarObjekt.KopieraInterioerOchSaeljbeskrivning.value = false; $scope.maeklarObjekt.KopieraLaan.value = false; $scope.maeklarObjekt.KopieraDriftskostnader.value = false; $scope.maeklarObjekt.KopieraEnergideklaration.value = true; break; case fb.FasITDomain.MaeklarObjektDupliceringstyp.LIKNANDE_FASTIGHET: $scope.maeklarObjekt.KopieraBilder.value = false; $scope.maeklarObjekt.KopieraDokument.value = false; $scope.maeklarObjekt.KopieraInterioerOchSaeljbeskrivning.value = false; $scope.maeklarObjekt.KopieraLaan.value = false; $scope.maeklarObjekt.KopieraDriftskostnader.value = false; $scope.maeklarObjekt.KopieraEnergideklaration.value = false; break; } }; var aerGrundValGjorda = function (dupliceringstyp: number, kopieraMedSaeljare: number): boolean { if (dupliceringstyp === fb.FasITDomain.MaeklarObjektDupliceringstyp.SAMMA_BYGGNAD || dupliceringstyp === fb.FasITDomain.MaeklarObjektDupliceringstyp.LIKNANDE_FASTIGHET) { $scope.maeklarObjekt.KopieraMedSaeljare.value = null; return true; } else if (dupliceringstyp === fb.FasITDomain.MaeklarObjektDupliceringstyp.SAMMA_LÄGENHET_ELLER_FASTIGHET && kopieraMedSaeljare !== undefined && kopieraMedSaeljare !== null) { return true; } return false; }; $scope.openSaeljareSideDrawer = function () { var contactType = new fb.ChangeTrack('KUND'); sideDrawerService.stack( 'AddContact', { callbackFn: $scope.addSaeljare, cancelFn: function () { sideDrawerService.unstack(); }, incomingScope: $scope, contactType: contactType, }, oldMaeklarObjekt.MaeklarObjektId.value, { maeklarObjekt: $scope.maeklarObjekt, choosenSaeljare: $scope.choosenSaeljare }); }; $scope.addSaeljare = function (person: fb.Models_IPersonDO) { $scope.choosenSaeljare.Namn.value = person.Personnamn.originalValue; $scope.choosenSaeljare.PersonId.value = person.PersonId.value; sideDrawerService.unstack(); }; $scope.closeDrawer = function () { sideDrawerService.clearDrawer(); }; $scope.saeljareRequired = function () { return !($scope.maeklarObjekt.Dupliceringstyp.value === $scope.MaeklarObjektDupliceringstyp['SAMMA_LÄGENHET_ELLER_FASTIGHET'] && ($scope.maeklarObjekt.KopieraMedSaeljare.value === $scope.KopieraMedSaeljareTyp['SAMMA_SAELJARE'] || $scope.maeklarObjekt.KopieraMedSaeljare.value === $scope.KopieraMedSaeljareTyp['KOEPARE_SOM_SAELJARE'])); } $scope.isValid = function () { var valid = $scope.showChoices && $scope.maeklarObjekt.isValid(); //if (valid) { // valid = !$scope.saeljareRequired() || $scope.choosenSaeljare.PersonId.value !== null; //} return valid; }; var efterDuplicering = function (maeklarObjektId: number) { $scope.showSpinner = false; navigationService.findOpenObjekt(fb.FasITDomain.NavigationController.MAEKLAROBJEKT, maeklarObjektId, true); $rootScope.$emit("maeklarobjekt_duplicerat"); $scope.closeDrawer(); } $scope.dupliceraMaeklarObjekt = function () { if ($scope.isValid()) { $scope.showSpinner = true; $scope.maeklarObjekt.SaeljareId.value = $scope.saeljareRequired() ? $scope.choosenSaeljare.PersonId.value : null; var res = maeklarObjektService.duplicera($scope.maeklarObjekt).$promise.then(function (data) { efterDuplicering(data.MaeklarObjektId); }, function () { $scope.showSpinner = false; }); } }; $scope.dupliceraMaeklarObjektIProjekt = function () { var intagare = (!oldMaeklarObjekt.IntagareId) ? oldMaeklarObjekt.IntagareId.value : -1; if (!$scope.maeklarObjekt.KopieraInteSomObjektIProjekt.value) { $scope.showSpinner = true; if (oldMaeklarObjekt.isUtland) { var duplicering = objektIProjektService.dupliceraObjektIProjekt({ AerFastighet: oldMaeklarObjekt.isSmaahus, AnsvarigMaeklarePersonId: oldMaeklarObjekt.AnsvarigMaeklareId.value, IntagarePersonId: oldMaeklarObjekt.IntagareId.value, AntalKopiorAttSkapa: 1, MaeklarObjektIdAttKopiera: oldMaeklarObjekt.MaeklarObjektId.value }).$promise.then(function (data) { efterDuplicering(data.MaeklarObjektId); }, function () { $scope.showSpinner = false; }); } else { var dupliceringTva = objektIProjektService.dupliceraObjektIProjekt({ AerFastighet: oldMaeklarObjekt.isSmaahus, AnsvarigMaeklarePersonId: oldMaeklarObjekt.AnsvarigMaeklareId.value, AntalKopiorAttSkapa: 1, MaeklarObjektIdAttKopiera: oldMaeklarObjekt.MaeklarObjektId.value }).$promise.then(function (data) { efterDuplicering(data.MaeklarObjektId); }, function () { $scope.showSpinner = false; }); } } } $scope.$watch('maeklarObjekt.Dupliceringstyp.value', function (newVal: number) { if (newVal !== undefined && newVal !== null) { if (aerGrundValGjorda(newVal, $scope.maeklarObjekt.KopieraMedSaeljare.value)) { if (!dontSetDefaultFirstWatch) { setDefault(); } $scope.showChoices = true; } else { $scope.showChoices = false; } } }); $scope.$watch('maeklarObjekt.KopieraMedSaeljare.value', function (newVal: number) { if (newVal !== undefined && newVal !== null) { if (aerGrundValGjorda($scope.maeklarObjekt.Dupliceringstyp.value, newVal)) { if (!dontSetDefaultFirstWatch) { setDefault(); } else { dontSetDefaultFirstWatch = false; } $scope.showChoices = true; } else { $scope.showChoices = false; } } }); }]);