module fb { export class Laan extends ResourceBase { MaeklarObjektLaanId: ChangeTrack; MaeklarObjektId: ChangeTrack; LaangivareId: ChangeTrack; LaangivareNamn: ChangeTrack; LaangivareAdress: ChangeTrack; LaangivareMejlAdress: ChangeTrack; LaangivareTelefonnummer: ChangeTrack; LaangivareFaxnummer: ChangeTrack; LaangivareKontaktpersonId: ChangeTrack; LaangivareKontaktpersonNamn: ChangeTrack; LaangivareKontaktpersonTelefonnummer: ChangeTrack; LaangivareKontaktpersonMejlAdress: ChangeTrack; Laannummer: ChangeTrack; LaanTyp: ChangeTrack; Belopp: ChangeTrack; PantsattBostadsraett: ChangeTrack; Raenta: ChangeTrack; Amortering: ChangeTrack; AmorteringsTyp: ChangeTrack; Raentejusteringsdag: ChangeTrack; BundetTomDatum: ChangeTrack; Loesenkostnader: Loesenkostnad[]; TilltrNot: ChangeTrack; public static $rootName = 'Laan'; constructor(data: any) { super(data, true, 'Laan'); var self = this; if (data.$promise) { data.$promise.then(function (res) { self.Loesenkostnader = []; angular.forEach(res.Loesenkostnader, function (prop) { self.Loesenkostnader.push(new Loesenkostnad(prop)); }); }); } } getSaveObject() { this.Loesenkostnader = _.filter(this.Loesenkostnader, function (loesenkostnad: Loesenkostnad) { return !!loesenkostnad.Text.value && loesenkostnad.Belopp.value > 0; }); return super.getSaveObject(); } getPrimaryKey() { return this.MaeklarObjektLaanId.value; } getForeignKeyObject(): fb.IForeignKeyObject { return { entity: fb.ForeignKeyEntity.MAEKLAROBJEKT, key: this.MaeklarObjektId.value } } public static newLaan(maeklarObjektId: number) { var uniqueIdService = angular.element(document).injector().get('uniqueIdService') as fb.IUniqueIdService; var newId = parseInt(uniqueIdService.getUniqueIdNoLimit('New' + Laan.$rootName).replace('New' + Laan.$rootName, '')); return new Laan({ MaeklarObjektLaanId: null,//newId, //0, MaeklarObjektId: maeklarObjektId, Checksum: null, LaangivareId: null, LaangivareNamn: null, LaangivareAdress: null, LaangivareTelefonnummer: null, LaangivareFaxnummer: null, LaangivareMejlAdress: null, LaangivareKontaktpersonId: null, LaangivareKontaktpersonNamn: null, LaangivareKontaktpersonMejlAdress: null, LaangivareKontaktpersonTelefonnummer: null, Laannummer: null, LaanTyp: 0, Belopp: null, PantsattBostadsraett: null, Raenta: null, Amortering: null, AmorteringsTyp: null, Raentejusteringsdag: null, BundetTomDatum: null, TilltrNot: null, Loesenkostnader: [] }); } addLoesenkostnad() { var self = this; self.Loesenkostnader.push({ Belopp: new fb.ChangeTrack(null, self), Text: new fb.ChangeTrack(null, self), }); self.enqueue(); } postMerge(mergeData) { // sätter Id på lösenkostnader ifall det finns en direkt match på Belopp och Text var self = this; var mergeLoesenkostnader = JSON.parse(JSON.stringify(mergeData.Loesenkostnader)); // Skapar en kopia av merge-datan för att inte ändra på faktiska datan if (self.Loesenkostnader && mergeData.Loesenkostnader) { angular.forEach(self.Loesenkostnader, function (clientLoesenkostnad) { if (!clientLoesenkostnad.LoesenkostnadId || !clientLoesenkostnad.LoesenkostnadId.value) { for (var i = 0; i < mergeLoesenkostnader.length; i++) { if (clientLoesenkostnad.Text.value === mergeLoesenkostnader[i].Text && clientLoesenkostnad.Belopp.value === mergeLoesenkostnader[i].Belopp) { clientLoesenkostnad.LoesenkostnadId = new fb.ChangeTrack(mergeLoesenkostnader[i].LoesenkostnadId, self); mergeLoesenkostnader.splice(i, 1); // Tar bort den redan matchade raden break; } } } else { for (var i = 0; i < mergeLoesenkostnader.length; i++) { if (clientLoesenkostnad.LoesenkostnadId.value === mergeLoesenkostnader[i].LoesenkostnadId) { mergeLoesenkostnader.splice(i, 1); // Tar bort den redan matchade raden break; } } } }); } } } export class Loesenkostnad extends ResourceBase { LoesenkostnadId: ChangeTrack; Text: ChangeTrack; Belopp: ChangeTrack; public static $rootName = 'Loesenkostnad'; constructor(data: any) { super(data, true, 'Loesenkostnad'); } getPrimaryKey() { return this.LoesenkostnadId.value; } public static newLoesenkostnad() { var uniqueIdService = angular.element(document).injector().get('uniqueIdService') as fb.IUniqueIdService; var newId = parseInt(uniqueIdService.getUniqueIdNoLimit('New' + Loesenkostnad.$rootName).replace('New' + Loesenkostnad.$rootName, '')); return new Loesenkostnad({ LoesenkostnadId: newId, Belopp: null, Text: "" }); } } }