module fb { export class FysiskPerson2DO extends fb.FysiskPerson2DOGen implements Models_IPersonDO { constructor(data: any) { super(data); } nullFixFn(data) { var self = this; var hasMoreThenIgnoredKeys = _.reject(Object.keys(data), function (item: string) { return self.ignoredKeys.indexOf(item) >= 0 }).length > 0; if (hasMoreThenIgnoredKeys) { if (data !== null) { var self = this; } if (!data.MejlAdress) { self.MejlAdress = new fb.Models_MejlAdressRO({ Mejladress: '', AerSpaerrad: false, },self); } if (!data.Adress) { self.Adress = new fb.Models_AdressRO({ AdressText: '', Postnummer: '', Postort: '', Adresstyp: 3, AdressSyfte: 0,//All post KontaktuppgiftTyp: 0, }, self); } if (!data.NyAdress) { self.NyAdress = new fb.Models_AdressRO({ AdressText: '', Postnummer: '', Postort: '', Adresstyp: 3, AdressSyfte: 10,//All framtida post KontaktuppgiftTyp: 0 }, self); } if (!data.TelefonnummerHem) { self.TelefonnummerHem = new fb.Models_Telefonnummer2RO({ Telefonnummer: '', }, self); }; if (!data.TelefonnummerMobil) { self.TelefonnummerMobil = new fb.Models_Telefonnummer2RO({ Telefonnummer: '', AerSpaerrat: false, }, self); }; if (!data.TelefonnummerFax) { self.TelefonnummerFax = new fb.Models_Telefonnummer2RO({ Telefonnummer: '' }, self); }; if (!data.TelefonnummerArbete) { self.TelefonnummerArbete = new fb.Models_Telefonnummer2RO({ Telefonnummer: '' }, self); }; self.TelefonnummerHem.Telefonnummer.required = false; self.TelefonnummerMobil.Telefonnummer.required = false; self.TelefonnummerArbete.Telefonnummer.required = false; self.TelefonnummerFax.Telefonnummer.required = false; } } postInit(data) { this.nullFixFn(data); if (this.Adress) { this.Adress.FlyttaMedBevakningar.ignoreMerge = true; } if (this.TelefonnummerArbete) { this.TelefonnummerArbete.FlyttaMedBevakningar.ignoreMerge = true; } if (this.TelefonnummerFax) { this.TelefonnummerFax.FlyttaMedBevakningar.ignoreMerge = true; } if (this.TelefonnummerHem) { this.TelefonnummerHem.FlyttaMedBevakningar.ignoreMerge = true; } if (this.TelefonnummerMobil) { this.TelefonnummerMobil.FlyttaMedBevakningar.ignoreMerge = true; } if (this.MejlAdress) { this.MejlAdress.FlyttaMedBevakningar.ignoreMerge = true; } } //postMerge(data) { // this.nullFixFn(data); //} getSaveObject() { var person = super.getSaveObject(); if (person.MejlAdress && (person.MejlAdress.Mejladress === '' || person.MejlAdress.Mejladress === null)) { person.MejlAdress = null; } if (person.Adress && (person.Adress.AdressText === '' || person.Adress.AdressText === null) && (person.Adress.Postnummer === '' || person.Adress.Postnummer === null) && (person.Adress.Postort === '' || person.Adress.Postort === null)) { person.Adress = null; } if (person.NyAdress && person.NyAdress.AdressText === '' && //TODO person.NyAdress.Postnummer === '' && person.NyAdress.Postort === '') { person.NyAdress = null; } if (person.TelefonnummerMobil && (person.TelefonnummerMobil.Telefonnummer === '' || person.TelefonnummerMobil.Telefonnummer === null)) { person.TelefonnummerMobil = null; } if (person.TelefonnummerFax && (person.TelefonnummerFax.Telefonnummer === '' || person.TelefonnummerFax.Telefonnummer === null)) { person.TelefonnummerFax = null; } if (person.TelefonnummerHem && (person.TelefonnummerHem.Telefonnummer === '' || person.TelefonnummerHem.Telefonnummer === null)) { person.TelefonnummerHem = null; } if (person.TelefonnummerArbete && (person.TelefonnummerArbete.Telefonnummer === '' || person.TelefonnummerArbete.Telefonnummer === null)) { person.TelefonnummerArbete = null; } return person; } getForeignKeyObject(): fb.IForeignKeyObject { return { entity: fb.ForeignKeyEntity.KONTAKT, key: this.PersonId.value } } isPersonFysisk = function () { return true; } isPersonJuridisk = function () { return false; } isKund = function () { return true; } isDoedsbo(): boolean { return (this.AerAvliden && this.AerAvliden.value); } isArkiverad(): boolean { return this.StatusLagring && this.StatusLagring.value === fb.FasITDomain.StatusLagring.ARKIVERAD; } getGlobalUniqueId(): string { if (this.getPrimaryKey() === null) { var uniqueIdService = angular.element(document).injector().get('uniqueIdService') as fb.IUniqueIdService; this.$tempPK = uniqueIdService.getUniqueIdNoLimit(this.$rootName); } return this.$rootName + this.getPrimaryKey(); } personnummerIsValidForDigitalBudgivning(): boolean { return this.Personnummer ? new RegExp('^[0-9]{8}-[0-9]{4}$').test(this.Personnummer.value) : false; } valideraPersonnummer(value: string): boolean { //var correctFormat = new RegExp('^[0-9]{8}[- ]?[0-9]{4}$'); //if (correctFormat.test(value)) { // return false; //} try { if (!this.isValidPersonnummerFormat(value)) { return false; } if (!this.isValidKontrollsiffra(value)) { return false; } return true; } catch(err) { return false; } } isValidPersonnummerFormat(value: string): boolean { if (value.length !== 13) { return false; } var aar: number = parseInt(value.substring(0, 4)); var maanad: number = parseInt(value.substring(4, 6)); var dag: number = parseInt(value.substring(6, 8)); var max_aar: number = new Date().getFullYear(); // kontrollera år och månad if (1900 > aar || aar > max_aar || 1 > maanad || maanad > 12) { return false; } // kontrollera dag var dagarPerMaanad: number[] = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; if (aar % 400 === 0 || (aar % 100 !== 0 && aar % 4 === 0)) { dagarPerMaanad[1] = 29; } if (1 > dag || dag > dagarPerMaanad[maanad - 1]) { return false; } return true; } isValidKontrollsiffra(value: string): boolean { // Beräkna och kontrollera kontroll-siffran var controlValidation = [0, 0, 2, 1, 2, 1, 2, 1, 0, 2, 1, 2]; var sum: number = 0; for (var i: number = 0; i < controlValidation.length; i++) { if (i === 8) { continue; } var str: string = '' + controlValidation[i] * parseInt(value.charAt(i)); if (str.length === 1) { sum += parseInt(str); } else { sum += parseInt(str.charAt(0)); sum += parseInt(str.charAt(1)); } } var num = (10 - (sum % 10)) % 10; if (num !== parseInt(value.charAt(12))) { return false; } return true; } } }