angular.module('fasit') .controller('NyMoejlighetSideDrawerCtrl', ['$scope', 'sideDrawerService', 'moejlighetService', 'medarbetareService', 'kontorService','$rootScope', '$q', 'commonService', function ( $scope: fb.INyMoejlighetSideDrawerScope, sideDrawerService: fb.ISideDrawerService, moejlighetService: fb.IMoejlighetService, medarbetareService: fb.IMedarbetareService, kontorService: fb.IKontorService, $rootScope: fb.IRootScope, $q: ng.IQService, commonService: fb.ICommonService ) { var todayStr = function () { var today = new Date(); var yyyy = today.getFullYear().toString(); var mm = (today.getMonth() + 1).toString(); // getMonth() is zero-based var dd = today.getDate().toString(); return yyyy + '-' + (mm[1] ? mm : "0" + mm[0]) + '-' + (dd[1] ? dd : "0" + dd[0]); // padding }; var params = sideDrawerService.getParams(); $scope.koppladTillKunder = params.koppladTillKunder; $scope.medarbetareOchKontorArray = []; $scope.ansvarig = {}; $scope.isLoading = false; $scope.listTypArray = [fb.FasITDomain.MoejlighetListTyp.MAASTE, fb.FasITDomain.MoejlighetListTyp.BORDE, fb.FasITDomain.MoejlighetListTyp.KAN]; $scope.moejlighet = new fb.SkapaMoejlighetWO({ ListTyp: fb.FasITDomain.MoejlighetListTyp.MAASTE, SkallUtfoerasSenast: todayStr() }); var kontorArray = kontorService.kontorIKontorsamarbete(); var medarbetareArray = medarbetareService.query(false); $q.all([kontorArray.$promise, medarbetareArray.$promise, $rootScope.InloggadAnvaendare.promise]).then(function () { $scope.inloggadAnvaendare = $rootScope.InloggadAnvaendare.PersonId; var medarbetareArrayFiltered = commonService.filterMedarbetareList(medarbetareArray, []); $scope.medarbetareOchKontorArray = [].concat( _.map(kontorArray, function (kontor: fb.KontorLO) { return { Id: kontor.KontorId, Namn: kontor.Kontorsnamn, IsKontor: true } }) , _.map(medarbetareArrayFiltered, function (medarbetare: fb.Medarbetare) { return { Id: medarbetare.PersonId.value, Namn: medarbetare.Personnamn.value, IsKontor: false } })); $scope.inloggadAnvaendareObj = _.find($scope.medarbetareOchKontorArray, function (item: any) { return item.Id === $rootScope.InloggadAnvaendare.PersonId; }); $scope.ansvarig.obj = $scope.inloggadAnvaendareObj || $scope.medarbetareOchKontorArray[0]; }); $scope.skapaMoejlighet = function () { if ($scope.ansvarig.obj.IsKontor) { $scope.moejlighet.Ansvarig.PersonId.setValue(null); $scope.moejlighet.Ansvarig.KontorId.setValue($scope.ansvarig.obj.Id); } else { $scope.moejlighet.Ansvarig.PersonId.setValue($scope.ansvarig.obj.Id); $scope.moejlighet.Ansvarig.KontorId.setValue(null); } $scope.moejlighet.KundIds = _.map($scope.koppladTillKunder, function (koppladTillKund: fb.KoppladTillKund) { return new fb.ChangeTrack(koppladTillKund.PersonId); }); var res = moejlighetService.add($scope.moejlighet); ($scope.$parent).closeDrawer(); if (params.onSparaMoejlighet) { params.onSparaMoejlighet(res); } }; $scope.$watch('moejlighet.ListTyp.value', function (newVal: number, oldVal: number) { if (newVal !== oldVal) { if (newVal === fb.FasITDomain.MoejlighetListTyp.KAN) { $scope.moejlighet.SkallUtfoerasSenast.required = false; $scope.moejlighet.setValue($scope.moejlighet.SkallUtfoerasSenast, null); } else { $scope.moejlighet.SkallUtfoerasSenast.required = true; if (!!$scope.moejlighet.SkallUtfoerasSenast.value) { $scope.moejlighet.applyValue($scope.moejlighet.SkallUtfoerasSenast); } else { $scope.moejlighet.setValue($scope.moejlighet.SkallUtfoerasSenast, todayStr()); } } } }); }]);