angular.module('fasit') .directive('fbDokumentKoepareParagraf', [function () { var link = function (scope: fb.IFbDokumentKoepareParagrafScope, element: ng.IAugmentedJQuery, Attrs: ng.IAttributes) { if (!scope.dokumentVaerdeSuffix) { scope.dokumentVaerdeSuffix = '' } var getPersonNamn = function (personer) { var personNamn = _.reduce(personer, function (memo: string, person: any) { return (memo !== '' ? memo + ' & ' : '') + person.Namn; }, ''); return personNamn; }; var checkAerAdressSamma = function (adress1, adress2) { return adress1 && adress2 && adress1.AdressText === adress2.AdressText //&& adress1.FortsaettningsAdress === adress2.FortsaettningsAdress && adress1.GatuAdress === adress2.GatuAdress && adress1.Postnummer === adress2.Postnummer && adress1.Postort === adress2.Postort; }; var getParagrafTextFromPerson = function (person, roll: string, index) { var persNum = person.Personnummer ? person.Personnummer.replace("-", "") : index; var personID = person.PersonId ? person.PersonId : persNum; var html; if (scope.paragrafTyp === 'Namn') { html = ''; } else { html = '' + '
' + '' + '
' + '' + ''; } var paragrafText = { ParagrafTextId: personID, ParagrafId: -1, Visningstext: person.Namn, Text: html } return paragrafText; }; var getParagrafTextFromPersonAlla = function (personNamn) { var html; if (scope.paragrafTyp === 'Namn') { html = ''; } else { html = '' + '
' + '' + '
' + '' + ''; } var paragrafText = { ParagrafTextId: 'Alla', ParagrafId: -1, Visningstext: personNamn, Text: html } return paragrafText; }; scope.$watch('dokumentData', function () { if (!scope.dokumentData) { return; } var koepareParagraf = { ParagrafId: -1, ParagrafNamn: 'KoepareParagraf', ParagrafTextRO: {} }; var personData = {}; var i; var incr = 0; var fullmaktIndex; var fullmakt; var containsPerson = function (kontakt: any) { var ret = false; angular.forEach(personData, function (person: any) { if (person.PersonId === kontakt.PersonId) { ret = true; } }); return ret; }; if (scope.dokumentData.Koepare) { var allaKoeparesAdress = scope.dokumentData.Koepare.length > 0 ? scope.dokumentData.Koepare[0].Adress : null; var aerAllaKoeparesAdressSamma = true; for (i = 0; i < scope.dokumentData.Koepare.length; i++) { if (i > 0 && !checkAerAdressSamma(scope.dokumentData.Koepare[i].Adress, allaKoeparesAdress)) { aerAllaKoeparesAdressSamma = false; } koepareParagraf.ParagrafTextRO[scope.dokumentData.Koepare[i].PersonId] = getParagrafTextFromPerson(scope.dokumentData.Koepare[i], 'Köpare', i); personData['p' + scope.dokumentData.Koepare[i].PersonId] = scope.dokumentData.Koepare[i]; if (scope.extraParter === 'true') { if (scope.dokumentData.Koepare[i].Doedsbodelaegare) { for (var j = 0; j < scope.dokumentData.Koepare[i].Doedsbodelaegare.length; j++) { incr++; var doedsboPersId = scope.dokumentData.Koepare[i].Doedsbodelaegare[j].PersonId; koepareParagraf.ParagrafTextRO[doedsboPersId] = getParagrafTextFromPerson(scope.dokumentData.Koepare[i].Doedsbodelaegare[j], 'Köpare', ("" + i + j + incr)); personData['p' + doedsboPersId] = scope.dokumentData.Koepare[i].Doedsbodelaegare[j]; if (scope.fullmaktTagare === 'true' && scope.dokumentData.Koepare[i].Doedsbodelaegare[j].Fullmakt) { incr++; fullmaktIndex = "" + i + incr; fullmakt = { Namn: scope.dokumentData.Koepare[i].Doedsbodelaegare[j].Fullmakt }; koepareParagraf.ParagrafTextRO[fullmaktIndex] = getParagrafTextFromPerson(fullmakt, 'Köpare', fullmaktIndex); personData['p' + fullmaktIndex] = fullmakt; } } } if (scope.dokumentData.Koepare[i].Firmatecknare) { for (var k = 0; k < scope.dokumentData.Koepare[i].Firmatecknare.length; k++) { incr++; var firmaPersId = scope.dokumentData.Koepare[i].Firmatecknare[k].PersonId; koepareParagraf.ParagrafTextRO[firmaPersId] = getParagrafTextFromPerson(scope.dokumentData.Koepare[i].Firmatecknare[k], 'Köpare', ("" + i + k + incr)); personData['p' + firmaPersId] = scope.dokumentData.Koepare[i].Firmatecknare[k]; if (scope.fullmaktTagare === 'true' && scope.dokumentData.Koepare[i].Firmatecknare[k].Fullmakt) { incr++; fullmaktIndex = "" + i + incr; fullmakt = { Namn: scope.dokumentData.Koepare[i].Firmatecknare[k].Fullmakt }; koepareParagraf.ParagrafTextRO[fullmaktIndex] = getParagrafTextFromPerson(fullmakt, 'Köpare', fullmaktIndex); personData['p' + fullmaktIndex] = fullmakt; } } } } if (scope.fullmaktTagare === 'true' && scope.dokumentData.Koepare[i].Fullmakt) { incr++; fullmaktIndex = "" + i + incr; fullmakt = { Namn: scope.dokumentData.Koepare[i].Fullmakt }; koepareParagraf.ParagrafTextRO[fullmaktIndex] = getParagrafTextFromPerson(fullmakt, 'Köpare', fullmaktIndex); personData['p' + fullmaktIndex] = fullmakt; } } if (scope.joinaAlla === 'true' && scope.dokumentData.Koepare.length > 1 && (scope.paragrafTyp === 'Namn' || aerAllaKoeparesAdressSamma)) { var allasPersonNamn = getPersonNamn(scope.dokumentData.Koepare); koepareParagraf.ParagrafTextRO['Alla'] = getParagrafTextFromPersonAlla(allasPersonNamn); personData['pAlla'] = { Namn: allasPersonNamn, Adress: aerAllaKoeparesAdressSamma ? allaKoeparesAdress : undefined }; } else if ((scope).dokumentVaerden && (scope).dokumentVaerden['pgKoepareParagraf' + (scope.dokumentVaerdeSuffix || '')] && (scope).dokumentVaerden['pgKoepareParagraf' + (scope.dokumentVaerdeSuffix || '')].Vaerde === 'Alla') { (scope).dokumentVaerden['pgKoepareParagraf' + (scope.dokumentVaerdeSuffix || '')].Vaerde = null; // Nollställ när det inte längre finns som val } } if (scope.extraParter === 'true' && scope.dokumentData.ExtraKontakter) { for (var l = 0; l < scope.dokumentData.ExtraKontakter.length; l++) { if (scope.dokumentData.ExtraKontakter[l].aerKoeparesKontaktperson && !containsPerson(scope.dokumentData.ExtraKontakter[l])) { koepareParagraf.ParagrafTextRO[scope.dokumentData.ExtraKontakter[l].PersonId] = getParagrafTextFromPerson(scope.dokumentData.ExtraKontakter[l], 'Köpare', l); personData['p' + scope.dokumentData.ExtraKontakter[l].PersonId] = scope.dokumentData.ExtraKontakter[l]; } } } scope.data = { koepareParagraf: koepareParagraf, personData: personData }; }); }; return { restrict: 'E', scope: { granska: '=', dokumentVaerden: '=', pageSplit: '=', splittable: '=', styleObject: '=', dokumentData: '=', paragrafTyp: '@', dokumentVaerdeSuffix: '@', popoverPlacement: '@', extraParter: '@', fullmaktTagare: '@', joinaAlla: '@' }, link: link, templateUrl: 'app/Directives/fbDokumentKoepareParagraf/fbDokumentKoepareParagraf.html' }; }]);