// Refakorering gjord av Viktor Leandersson 31/3 2017 // Notera att this ännu ej är kopplat till objektet, då man måste hantera // controllerAs i sideDrawer. Fixa gärna detta :) (function () { angular.module("fasit") .controller("EpostUtskickCtrl", EpostUtskickCtrl); /* @ngInject */ function EpostUtskickCtrl( $q: ng.IQService, $scope: fb.IEpostUtskickScope, $filter: any, $translate: any, $rootScope: fb.IRootScope, sideDrawerService: fb.ISideDrawerService, oeppnaObjektService: fb.IOeppnaObjektService, utskickService: fb.IUtskickService, dokumentService: fb.IDokumentService, commonService: fb.ICommonService, textMallService: fb.ITextMallService, kontorService: fb.IKontorService, filService: fb.IFilService, medarbetareService: fb.IMedarbetareService, makroDataService: fb.IMakroDataService, signaturService: fb.ISignaturService, fritextService: fb.IFritextService, stateService: fb.IStateService, domainService: fb.IDomainService, personService: fb.IPersonService, intressentService: fb.IIntressentService, maeklarObjektService: fb.IMaeklarObjektService ) { //const vm: fb.IEpostUtskickScope = this; //TODO Fixa controllerAs syntax $scope.addPart = addPart; $scope.showRecipientOptions = showRecipientOptions; $scope.saveDraft = saveDraft; $scope.disableSend = disableSend; $scope.tooManyRecipients = tooManyRecipients; $scope.removeNoAdvertisingRecipients = removeNoAdvertisingRecipients; $scope.sendEpost = sendEpost; $scope.sidvalChanged = sidvalChanged; $scope.openTemplateEditor = openTemplateEditor; var params = sideDrawerService.getParams(); $scope.inparams = params; const saeljare: fb.PersonMottagare[] = []; const koepare: fb.PersonMottagare[] = []; const bank: fb.PersonMottagare[] = []; var currentMaeklarObjekt = ($scope.$parent).maeklarObjekt; if (currentMaeklarObjekt === undefined && !!$scope.inparams.maeklarObjektId) { currentMaeklarObjekt = maeklarObjektService.get($scope.inparams.maeklarObjektId); } function init(): void { //TODO Populera init bank.push(setBankPart()); $scope.likvidavraekningName = fb.FasITDomain.DokumentMallNamn.LIKVIDAVRAEKNING; } init(); ////////////////////////////// var currentUser = ($rootScope).InloggadAnvaendare; var kontor = kontorService.getKontor(($rootScope).InloggadAnvaendare.InloggatKontorId); var medarbetare = medarbetareService.getByRoll(false); var mallar = textMallService.queryEmejlMall(); var mailSentCallback = params.mailSentCallback; var allaSaknarEmail = true; var maxRecipients = 500; $scope.addPart = addPart; var obj = stateService.loadState('EpostUtskickCtrl', 0); if (obj && obj.subject) { params.subject = obj.subject; params.body = obj.body; } $scope.oeppnaMaeklarObjekt = oeppnaObjektService.query(); $scope.makroData = new fb.MakroData({}); $scope.signatur = new fb.PersonSignatur({}); $scope.missingMejlAdress = false; $scope.noAdvertising = false; $scope.recipients = { suggestionsFn: null, suggestions: null, chosen: null, warning: null, invalid: null, sort: null, makeChangeTrack: null, bcc: new fb.ChangeTrack(true) }; $scope.noTextMall = params.noTextMall || false; // Delar upp parter i köpare + tillhörande kontaktpersoner & säljare + tillhörande kontaktpersoner var setParter = function (parter: fb.List) { for (let i = 0; i < parter.length; i++) { if (parter[i].ObjIntressentRoll.value === fb.FasITDomain.ObjIntressentRoll.KOEPARE || parter[i].ObjIntressentRoll.value === fb.FasITDomain.ObjIntressentRoll.KOEPARENS_KONTAKTPERSON) { koepare.push(new fb.PersonMottagare({ MejlAdress: parter[i].MejlAdress.value, PersonNamn: parter[i].Personnamn.value, PersonId: parter[i].PersonId.value })); } else if (parter[i].ObjIntressentRoll.value === fb.FasITDomain.ObjIntressentRoll.SAELJARE || parter[i].ObjIntressentRoll.value === fb.FasITDomain.ObjIntressentRoll.SAELJARENS_KONTAKTPERSON) { saeljare.push(new fb.PersonMottagare({ MejlAdress: parter[i].MejlAdress.value, PersonNamn: parter[i].Personnamn.value, PersonId: parter[i].PersonId.value })); } } }; function setBankPart(): fb.PersonMottagare { const part = { MejlAdress: null as string, Personnamn: null as string }; if (currentMaeklarObjekt === undefined || currentMaeklarObjekt.MaeklarObjektTilltraedelse === undefined) { return new fb.PersonMottagare({}); } const skerHosFastighetsbyran = currentMaeklarObjekt.MaeklarObjektTilltraedelse.SkerHosFastighetsbyran.value; // Annan const kontaktpersonSomHanterarTilltraedelseMejlAdress = currentMaeklarObjekt.MaeklarObjektTilltraedelse.KontaktpersonSomHanterarTilltraedelseMejlAdress.value; const kontaktpersonSomHanterarTilltraedelseNamn = currentMaeklarObjekt.MaeklarObjektTilltraedelse.KontaktpersonSomHanterarTilltraedelseNamn.value; const tilltraedelsesplatsMejlAdress = currentMaeklarObjekt.MaeklarObjektTilltraedelse.TilltraedelsesplatsMejlAdress.value; const tilltraedelsesplatsNamn = currentMaeklarObjekt.MaeklarObjektTilltraedelse.TilltraedelsesplatsNamn.value; // Fastighetsbyrån const kontaktpersonPaaTilltraedelseplatsMejlAdress = currentMaeklarObjekt.MaeklarObjektTilltraedelse.KontaktpersonPaaTilltraedelseplatsMejlAdress.value; const kontaktpersonPaaTilltraedelseplatsNamn = currentMaeklarObjekt.MaeklarObjektTilltraedelse.KontaktpersonPaaTilltraedelseplatsNamn.value; const koeparensKontaktpersonPaaTilltraedesdagenMejlAdress = currentMaeklarObjekt.MaeklarObjektTilltraedelse.KoeparensKontaktpersonPaaTilltraedesdagenMejlAdress.value; const koeparensKontaktpersonPaaTilltraedesdagenNamn = currentMaeklarObjekt.MaeklarObjektTilltraedelse.KoeparensKontaktpersonPaaTilltraedesdagenNamn.value; if (!skerHosFastighetsbyran && kontaktpersonSomHanterarTilltraedelseMejlAdress) { part.MejlAdress = kontaktpersonSomHanterarTilltraedelseMejlAdress; part.Personnamn = kontaktpersonSomHanterarTilltraedelseNamn; } else if (!skerHosFastighetsbyran && tilltraedelsesplatsMejlAdress) { part.MejlAdress = tilltraedelsesplatsMejlAdress; part.Personnamn = tilltraedelsesplatsNamn; } else if (skerHosFastighetsbyran && kontaktpersonPaaTilltraedelseplatsMejlAdress) { part.MejlAdress = kontaktpersonPaaTilltraedelseplatsMejlAdress; part.Personnamn = kontaktpersonPaaTilltraedelseplatsNamn; } else if (skerHosFastighetsbyran && koeparensKontaktpersonPaaTilltraedesdagenMejlAdress) { part.MejlAdress = koeparensKontaktpersonPaaTilltraedesdagenMejlAdress; part.Personnamn = koeparensKontaktpersonPaaTilltraedesdagenNamn; } return new fb.PersonMottagare({ MejlAdress: part.MejlAdress, PersonNamn: part.Personnamn }); } // Hämtar alla parter på objektet var allaParter = new fb.List([]); if (params.maeklarObjektId) { allaParter = intressentService.queryParter(params.maeklarObjektId); allaParter.$promise.then(function () { setParter(allaParter); }); } // fritextsök till multiselecten $scope.recipients.suggestionsFn = function (input: string) { var deferred = $q.defer(); fritextService.query(input, 'Emejl').$promise.then(function (res) { var results = []; _.each(res, function (mottagare) { results.push(new fb.PersonMottagare(mottagare)); }); deferred.resolve(results); }); return deferred.promise; } $scope.recipients.suggestions = []; $scope.recipients.warning = function (item: any) { return item.EjReklam; } $scope.recipients.invalid = function (item: any) { var reg = fb.Models_MejlAdressRO.getValidation().Mejladress.regex; return !item.MejlAdress || !reg.test(item.MejlAdress); } $scope.recipients.sort = function () { $scope.recipients.chosen = $filter("orderBy")($scope.recipients.chosen, "MejlAdress"); } $scope.recipients.chosen = []; $scope.recipients.makeChangeTrack = function (input) { input.value = new fb.PersonMottagare({ MejlAdress: input.value, PersonNamn: "", PersonId: undefined }); } var addRecipients = function (personMottagare) { if (!_.contains($scope.recipients.chosen, personMottagare)) { $scope.recipients.chosen.push(personMottagare); } } function addPart(mottagareNamn: string): void { let parter: fb.PersonMottagare[]; switch (mottagareNamn) { case "Koepare": parter = koepare; break; case "Saeljare": parter = saeljare; break; case "Bank": parter = bank; break; default: throw new Error("Fördefinerad mottagare är inte definerad"); } _.each(parter, function (personMottagare) { addRecipients(personMottagare); }); } function showRecipientOptions () { return $scope.recipients.chosen.length > 1; } if (angular.isDefined(params.recipients) && params.recipients.length > 0) { _.each(params.recipients, function (recipient: fb.PersonMottagare) { $scope.recipients.chosen.push(recipient); // söka igenom för att slippa dubletter $scope.recipients.suggestions.push(recipient); }); $scope.recipients.sort(); } //avsändare $scope.sender = { chosen: new fb.PersonAvsaendare({}) }; $scope.sender.suggestions = []; $scope.sender.format = function (sender) { return sender.LabelEpost; } var me = new fb.PersonAvsaendare({ MejlAdress: currentUser.Mailadress, PersonNamn: currentUser.Namn, PersonId: currentUser.PersonId }); $scope.sender.suggestions.push(me); $scope.$watch('sender.chosen', function (newVal, oldVal) { if (newVal) { if (newVal instanceof fb.KontorAvsaendare) { $scope.signatur = signaturService.getKontorSignatur($scope.sender.chosen.PersonId); } else { $scope.signatur = signaturService.getPersonSignatur($scope.sender.chosen.PersonId); } $scope.signatur.$promise.then(function () { $scope.signatur.Emejl = $scope.sender.chosen.MejlAdress; renderTemplateAndSignature(true); }); } }, true); // sätt default avsändare if (params.sender && params.sender.PersonId) { $scope.sender.chosen = params.sender; $scope.sender.suggestions.push(params.sender); } else { $scope.sender.chosen = me; } $scope.oeppnaMaeklarObjekt.$promise.then(function () { if (params.personId) { _.each($scope.oeppnaMaeklarObjekt.OeppnaKontakter, function (objekt: fb.OeppnaKontakter) { if (objekt.PersonId === params.personId) { //lägg till person var person = personService.get(params.personId, false); person.$promise.then(function () { if (person.person.MejlAdress && person.person.Personnamn) { var recipient = new fb.PersonMottagare({ MejlAdress: person.person.MejlAdress.Mejladress.value, PersonNamn: person.person.Personnamn.value, PersonId: person.person.PersonId.value, EjReklam: person.person.MejlAdress.AerSpaerrad.value }); $scope.recipients.chosen.push(recipient); // söka igenom för att slippa dubletter $scope.recipients.suggestions.push(recipient); $scope.recipients.sort(); } }); } }); } }); $scope.oeppnaMaeklarObjekt.$promise.then(function () { if (params.maeklarObjektId) { _.each($scope.oeppnaMaeklarObjekt.OeppnaMaeklarObjekt, function (objekt) { if ((objekt).MaeklarObjektId === params.maeklarObjektId) { $scope.maeklarObjekt.chosen = objekt; $scope.maeklarObjekt.attachmentLookup = objekt; } if (!(objekt).Visningstext) { (objekt).Visningstext = ""; } }); } else { getFristaaendeDokument(); } }); var anvaenda = []; medarbetare.$promise.then(function () { _.each(medarbetare, function (robot: fb.Medarbetare) { if (_.indexOf(anvaenda, robot.PersonId.value) === -1) { if (robot.PersonId.value !== currentUser.PersonId) { var avsaendare = new fb.PersonAvsaendare({ MejlAdress: robot.MejlAdress.value, PersonNamn: robot.Personnamn.value, PersonId: robot.PersonId.value }); $scope.sender.suggestions.push(avsaendare); } anvaenda.push(robot.PersonId.value); } }); }); kontor.$promise.then(function () { var avsaendare = new fb.KontorAvsaendare({ MejlAdress: kontor.MejlAdress, PersonNamn: kontor.Kontorsnamn, PersonId: kontor.KontorId }); $scope.sender.suggestions.push(avsaendare); }); $scope.body = new fb.ChangeTrack(params.body || ""); $scope.subject = new fb.ChangeTrack(params.subject || ""); $scope.templates = {}; $scope.templates.suggestions = []; mallar.$promise.then(function () { _.each(mallar, function (template: any) { if (!template.isGlobalMall()) { template.KontorsgruppId = "1"; // två option groups 1, resp null } if (template.Namn === params.textMallNamn && template.isGlobalMall()) { $scope.templates.chosen = template; } else if (!params.textMallNamn && template.Namn === fb.FasITDomain.TextMallNamn.STANDARDMALL && template.isGlobalMall()) { $scope.templates.chosen = template; } $scope.templates.suggestions.push(template); }); }); var textMallUtanMaeklarObjektId = domainService.textMallUtanMaeklarObjektId.query(); var renderTemplateAndSignature = function (skipResetSubject?: boolean) { if ($scope.templates.chosen) { var signatur = $filter('emailSignature')($scope.signatur); $scope.makroData.Signatur = signatur.$$unwrapTrustedValue(); var templateData = $scope.makroData.getSaveObject(); templateData.extraData = params.extraData; templateData.kundPortalenURL = '' + fb.Environment.kundPortalenURL + params.maeklarObjektId + ''; if (!params.subject && !skipResetSubject) { $scope.subject.value = $filter('template')($scope.templates.chosen.Aemne, templateData); } if (!params.body) { $scope.body.value = $filter('template')($scope.templates.chosen.Innehaall, templateData); } } else { $scope.subject.value = ''; $scope.body.value = ''; } params.subject = params.body = null; } var uppdateraMottagare = function () { if ($scope.templates.chosen && $scope.templates.chosen.Mottagare) { let mottagare: fb.PersonMottagare = new fb.PersonMottagare({ MejlAdress: $scope.templates.chosen.Mottagare, PersonNamn: "", PersonId: undefined }); $scope.recipients.chosen = [mottagare]; $scope.recipients.suggestions = [mottagare]; } }; $scope.$watch("templates.chosen", function (newVal, oldVal) { if (newVal !== oldVal && newVal) { renderTemplateAndSignature(); uppdateraMottagare(); } }); $scope.templates.optiongroupNameFn = function (value) { return value !== "1" ? $translate.instant('SIDEDRAWER_UTSKICK.CENTRALA_MALLAR') : $translate.instant('SIDEDRAWER_UTSKICK.KONTORSSAMARBETETS_MALLAR'); } $scope.attachments = {}; $scope.attachments.query = { value: "", valid: true } $scope.attachments.toUpload = []; $scope.attachments.productSheets = filService.queryProduktblad(); $scope.attachments.productSheets.$promise.then(function (data) { $scope.attachments.productSheets = $scope.attachments.cleanList($scope.attachments.productSheets); if (params.attachedProduktbladIds) { _.forEach($scope.attachments.productSheets, function (item: any) { if (params.attachedProduktbladIds.indexOf(item.FilId.value) >= 0) { item.selectedInList.value = true; } }); } }); var getFristaaendeDokument = function () { var FristaaendeDokumentWO = dokumentService.getPersonDok(); var dokument = []; var uppladdade = []; FristaaendeDokumentWO.$promise.then(function () { _.forEach(FristaaendeDokumentWO.Dokument, function (dok) { dokument.push(dok); }); _.forEach(FristaaendeDokumentWO.Uppladdade, function (fil) { uppladdade.push(fil); }); $scope.attachments.documents = $scope.attachments.cleanList(dokument); if (params.attachedDokuments) { _.each($scope.attachments.documents, function (item: any) { if (params.attachedDokuments.find(d => d.DokumentId === item.DokumentId)) { item.selectedInList.value = true; } }); } $scope.attachments.uploaded = $scope.attachments.cleanList(uppladdade); if (params.attachedFilIds) { _.each($scope.attachments.uploaded, function (item: any) { if (params.attachedFilIds.indexOf(item.FilId) >= 0) { item.selectedInList.value = true; } }); } }); }; $scope.attachments.documents = []; $scope.attachments.uploaded = []; $scope.attachments.foerening = []; $scope.attachments.projekt = []; $scope.$watch("maeklarObjekt.attachmentLookup", function (newVal, oldVal) { if (!!newVal && newVal !== oldVal) { if ($scope.maeklarObjekt.attachmentLookup.MaeklarObjektId) { var dokumentWO = dokumentService.getMaeklarObjektDok($scope.maeklarObjekt.attachmentLookup.MaeklarObjektId); var dokument = []; var uppladdade = []; var foerening = []; var projekt = []; dokumentWO.$promise.then(function (data) { _.forEach(dokumentWO.Dokument, function (dok) { dokument.push(dok.Senaste); _.forEach(dok.GamlaVersioner, function (dokVer) { dokument.push(dokVer); }); }); _.forEach(dokumentWO.Objekt, function (fil) { uppladdade.push(fil instanceof fb.Fil? filToFilLO(fil) : fil); }); _.forEach(dokumentWO.Foerening, function (fil) { foerening.push(fil); }); _.forEach(dokumentWO.Projekt, function (fil) { projekt.push(fil); }) $scope.attachments.documents = $scope.attachments.cleanList(dokument, params.attachedDokuments); if (params.attachedDokuments) { _.each($scope.attachments.documents, function (item: any) { if (_.find(params.attachedDokuments, function (value: any) { if (value.DokumentMallNamn === fb.FasITDomain.DokumentMallNamn.LIKVIDAVRAEKNING) { addWatches(value, item); } return value.DokumentId === item.DokumentId; })) { item.selectedInList.value = true; } }); } $scope.attachments.uploaded = $scope.attachments.cleanList(uppladdade); if (params.attachedFilIds) { _.each($scope.attachments.uploaded, function (item: any) { if (params.attachedFilIds.indexOf(item.FilId) >= 0) { item.selectedInList.value = true; } }); } $scope.attachments.foerening = $scope.attachments.cleanList(foerening); if (params.attachedFoereningFilIds) { _.each($scope.attachments.foerening, function (item: any) { if (params.attachedFoereningFilIds.indexOf(item.FilId) >= 0) { item.selectedInList.value = true; } }); } $scope.attachments.projekt = $scope.attachments.cleanList(projekt); if (params.attachedProjektDokIds) { _.each($scope.attachments.projekt, function (item: any) { if (params.attachedProjektDokIds.indexOf(item.FilId) >= 0) { item.selectedInList.value = true; } }); } }); } } else if (!newVal && newVal !== oldVal) { getFristaaendeDokument(); } }); // För att kunna filtrera och välja, gör om till en map (fb.list går inte att köra filter på). $scope.attachments.cleanList = function (collection, attachedDokuments?) { var list = []; _.each(collection, function (item: any) { if (item.DokumentMallNamn === fb.FasITDomain.DokumentMallNamn.LIKVIDAVRAEKNING) { _.find(attachedDokuments, function(value: any) { if (value.DokumentMallNamn === fb.FasITDomain.DokumentMallNamn.LIKVIDAVRAEKNING && item.Version === value.Version && item.AerHistorisk === value.AerHistorisk) { item.EndastKoepare = value.EndastKoepare; item.EndastSaeljare = value.EndastSaeljare; } return null; }); item.selectedInList = new fb.ChangeTrack(false); list.push(item); } else { item.selectedInList = new fb.ChangeTrack(false); list.push(item); } }); return list; } function addWatches(value, item) { if (value.DokumentMallNamn === fb.FasITDomain.DokumentMallNamn.LIKVIDAVRAEKNING) { value.selectedInList = new fb.ChangeTrack(false); $scope.$watch(() => item.EndastKoepare.value, (newVal, oldVal) => { if (newVal === true) { item.EndastKoepare.value = newVal; item.EndastSaeljare.value = false; item.selectedInList.value = false; } }); $scope.$watch(() => item.EndastSaeljare.value, (newVal, oldVal) => { if (newVal === true) { item.EndastSaeljare.value = newVal; item.EndastKoepare.value = false; item.selectedInList.value = false; } }); $scope.$watch(() => item.selectedInList.value, (newVal, oldVal) => { if (newVal === true) { item.EndastSaeljare.value = false; item.EndastKoepare.value = false; item.selectedInList.value = newVal; } }); } } function filToFilLO(fil: fb.Fil): fb.FilLO { let lo: fb.FilLO = new fb.FilLO({ FilId: fil.FilId.value, Storlek: fil.Storlek.value, Namn: fil.Namn.value, SkallVisasPaaInternet: fil.SkallVisasPaaInternet.value, Filaendelse: fil.Filaendelse.value, MediaUrl: (fil as any).MediaUrl, FilTyp: (fil as any).FilTyp.value, UppladdatDatum: (fil as any).UppladdatDatum.value }); return lo; } $scope.attachments.filterSelected = function(dokument) { return dokument.selectedInList && dokument.selectedInList.value === true || dokument.EndastKoepare && dokument.EndastKoepare.value === true || dokument.EndastSaeljare && dokument.EndastSaeljare.value === true; }; var getAttachedImages = function () { $scope.attachments.motiv = []; if (params.attachedMotiv) { var attachedMotiv: fb.MotivObjekt[] = $scope.attachments.cleanList(params.attachedMotiv); _.each(attachedMotiv, function (item) { $scope.attachments.motiv.push(item); (item).selectedInList.value = true;//typecastar till any eftersom cleanList anropats vilket gör att vi fått selectedInList }); } }; getAttachedImages(); function tooManyRecipients () { return $scope.recipients.chosen.length >= maxRecipients; } $scope.attachments.productSheetFilter = function (productSheet) { var x = new RegExp($scope.attachments.query.value, "ig"); return x.test(productSheet.Namn.value); } // triggas direkt från vår osynliga input[type=file], vilken inte har stöd för ng-change (i 1.2.17) $scope.attachments.filesForUpload = function (files) { commonService.angularFunctions.safeApply($scope, function () { for (var i = 0; i < files.length; i++) { $scope.attachments.toUpload.push({ selectedInList: new fb.ChangeTrack(true), namn: files[i].name, fil: files[i] }); } }); } $scope.attachments.remove = function (file, type) { file.selectedInList.value = false; } var sent = false; function disableSend() { if (!$scope.makroData.$resolved) { return true; } return ( $scope.recipients.chosen.length === 0 || sent === true || $scope.recipients.chosen.length > maxRecipients || allaSaknarEmail || $scope.subject.value.length === 0 || $scope.sidValErrorExists ); } $scope.maeklarObjekt = {}; $scope.maeklarObjekt.chosen = currentMaeklarObjekt; var promised = false; $scope.$watch('maeklarObjekt.chosen', function (newVal, oldVal) { if (newVal !== oldVal && $scope.maeklarObjekt.chosen) { $scope.makroData = makroDataService.get($scope.maeklarObjekt.chosen.MaeklarObjektId); $scope.makroData.$promise.then(function () { renderTemplateAndSignature(); }); } else { $scope.makroData = new fb.MakroData({}); renderTemplateAndSignature(); } }); $scope.$watch('makroData.$resolved', function (newVal, oldVal) { if (newVal === true && oldVal !== newVal) { renderTemplateAndSignature(); } }); function saveDraft() { sendOrSave(false); } function sendEpost () { sendOrSave(true); } function sendOrSave (save: boolean) { var utskick = new fb.EpostUtskick({ Aemne: ($scope.subject.value || undefined), Innehaall: $scope.body.value, To: [], Bcc: [], BifogadeFiler: [], BifogadeDokument: [], BifogadeMotiv: [], UppladdadeFiler: [] }); if ($scope.sender.chosen instanceof fb.KontorAvsaendare) { utskick.AvsaendarKontorId = $scope.sender.chosen.PersonId; } else { utskick.AvsaendarPersonId = $scope.sender.chosen.PersonId; } if ($scope.maeklarObjekt.chosen) { utskick.MaeklarObjektId = $scope.maeklarObjekt.chosen.MaeklarObjektId; } _.each($scope.attachments.toUpload, function (file: any) { if (!!file.selectedInList.value) { utskick.UppladdadeFiler.push(file.fil); } }); if ($scope.attachments.documents.length > 0) { _.each($filter("filter")($scope.attachments.documents, $scope.attachments.filterSelected), function (file: any) { utskick.BifogadeDokument.push({ DokumentId: file.DokumentId, SidVal: file.SidVal, EndastKoepare: file.EndastKoepare, EndastSaeljare: file.EndastSaeljare }); }); } if ($scope.attachments.uploaded.length > 0) { _.each($filter("filter")($scope.attachments.uploaded, $scope.attachments.filterSelected), function (file: any) { utskick.BifogadeFiler.push(file.FilId); }); } if ($scope.attachments.foerening && $scope.attachments.foerening.length > 0) { _.each($filter("filter")($scope.attachments.foerening, $scope.attachments.filterSelected), function (file: any) { utskick.BifogadeFiler.push(file.FilId); }); } if ($scope.attachments.productSheets.length > 0) { _.each($filter("filter")($scope.attachments.productSheets, $scope.attachments.filterSelected), function (file: any) { utskick.BifogadeFiler.push(file.FilId.value); }); } if ($scope.attachments.motiv.length > 0) { _.each($filter("filter")($scope.attachments.motiv, $scope.attachments.filterSelected), function (motiv: fb.MotivObjekt) { utskick.BifogadeMotiv.push(motiv.MotivId.value); }); } if ($scope.attachments.projekt.length > 0) { _.each($filter("filter")($scope.attachments.projekt, $scope.attachments.filterSelected), function (file: any) { utskick.BifogadeFiler.push(file.FilId); }); } _.each($scope.recipients.chosen, function (recipient: any) { var reg = fb.Models_MejlAdressRO.getValidation().Mejladress.regex; if (recipient.MejlAdress && reg.test(recipient.MejlAdress)) { if ($scope.recipients.bcc.value === true && $scope.recipients.chosen.length > 1) { utskick.Bcc.push(recipient.getSaveObject()); } else { utskick.To.push(recipient.getSaveObject()); } } }); if (!!save) { utskickService.sendEmail(utskick).then(function () { if (mailSentCallback && typeof mailSentCallback === 'function') { mailSentCallback(); } }); sent = true; const callback = sideDrawerService.getCallback(); if (callback) { callback(); } else { $scope.closeDrawer(); } } else { utskickService.saveDraft(utskick); $scope.closeDrawer(); } } $scope.onAbortSidedrawer = function () { if (!!$scope.inparams.useCallbackOnAbort) { const callback = sideDrawerService.getCallback(); if (callback) { callback(); } else { $scope.closeDrawer(); } } else { $scope.closeDrawer(); } } function openTemplateEditor (e: any) { e.preventDefault(); sideDrawerService.stack('TextMall', { step: 1, textMallId: $scope.templates.chosen && $scope.templates.chosen.TextMallId, mallTyp: fb.MallTyp.Emejl }, 0, { subject: $scope.subject }); } function removeNoAdvertisingRecipients (e) { e.preventDefault(); _.each($scope.recipients.chosen, function (recipient: fb.PersonMottagare, index: number) { if (recipient.EjReklam) { $scope.recipients.chosen.splice(index, 1); } }); } $scope.$watchCollection('recipients.chosen', function (newVal, oldVal) { $scope.missingMejlAdress = false; $scope.noAdvertising = false; allaSaknarEmail = true; _.each($scope.recipients.chosen, function (recipient: fb.PersonMottagare) { var reg = fb.Models_MejlAdressRO.getValidation().Mejladress.regex; if (!recipient.MejlAdress || !reg.test(recipient.MejlAdress)) { $scope.missingMejlAdress = true; } else { allaSaknarEmail = false; } if (recipient.EjReklam) { $scope.noAdvertising = true; } }); }); $scope.sidValErrorExists = false; function sidvalChanged (row) { if (commonService.valideraSidval(row.SidVal)) { row.sidValError = false; $scope.sidValErrorExists = false; angular.forEach($scope.attachments.documents, function (value) { if (value.sidValError) { $scope.sidValErrorExists = true; } }); } else { $scope.sidValErrorExists = true; row.sidValError = true; } } } })();