diff --git a/api/methods.py b/api/methods.py index 1164f8d..756b10d 100644 --- a/api/methods.py +++ b/api/methods.py @@ -251,7 +251,7 @@ UPDATE tenant_t def get_tenant_by_account(user, token_info, accountId=None): - return dbGetOne(user, token_info, { + return dbGetMany(user, token_info, { "statement": """ SELECT id @@ -474,7 +474,7 @@ UPDATE flat_t def get_flat_by_premise(user, token_info, premiseId=None): - return dbGetOne(user, token_info, { + return dbGetMany(user, token_info, { "statement": """ SELECT id @@ -643,7 +643,7 @@ SELECT def get_overhead_advance_flat_mapping_by_overhead_advance(user, token_info, overhead_advanceId=None): - return dbGetOne(user, token_info, { + return dbGetMany(user, token_info, { "statement": """ SELECT id @@ -657,7 +657,7 @@ SELECT ) def get_overhead_advance_flat_mapping_by_flat(user, token_info, flatId=None): - return dbGetOne(user, token_info, { + return dbGetMany(user, token_info, { "statement": """ SELECT id @@ -753,7 +753,7 @@ UPDATE parking_t def get_parking_by_premise(user, token_info, premiseId=None): - return dbGetOne(user, token_info, { + return dbGetMany(user, token_info, { "statement": """ SELECT id @@ -849,7 +849,7 @@ UPDATE commercial_premise_t def get_commercial_premise_by_premise(user, token_info, premiseId=None): - return dbGetOne(user, token_info, { + return dbGetMany(user, token_info, { "statement": """ SELECT id @@ -975,7 +975,7 @@ UPDATE tenancy_t def get_tenancy_by_tenant(user, token_info, tenantId=None): - return dbGetOne(user, token_info, { + return dbGetMany(user, token_info, { "statement": """ SELECT id @@ -994,7 +994,7 @@ SELECT ) def get_tenancy_by_flat(user, token_info, flatId=None): - return dbGetOne(user, token_info, { + return dbGetMany(user, token_info, { "statement": """ SELECT id @@ -1013,7 +1013,7 @@ SELECT ) def get_tenancy_by_parking(user, token_info, parkingId=None): - return dbGetOne(user, token_info, { + return dbGetMany(user, token_info, { "statement": """ SELECT id @@ -1032,7 +1032,7 @@ SELECT ) def get_tenancy_by_commercial_premise(user, token_info, commercial_premiseId=None): - return dbGetOne(user, token_info, { + return dbGetMany(user, token_info, { "statement": """ SELECT id @@ -1207,7 +1207,7 @@ SELECT def get_tenancy_fee_mapping_by_tenancy(user, token_info, tenancyId=None): - return dbGetOne(user, token_info, { + return dbGetMany(user, token_info, { "statement": """ SELECT id @@ -1221,7 +1221,7 @@ SELECT ) def get_tenancy_fee_mapping_by_fee(user, token_info, feeId=None): - return dbGetOne(user, token_info, { + return dbGetMany(user, token_info, { "statement": """ SELECT id @@ -1303,7 +1303,7 @@ SELECT def get_account_entry_by_account(user, token_info, accountId=None): - return dbGetOne(user, token_info, { + return dbGetMany(user, token_info, { "statement": """ SELECT id diff --git a/api/methods.py.tmpl b/api/methods.py.tmpl index 519633b..6784c28 100644 --- a/api/methods.py.tmpl +++ b/api/methods.py.tmpl @@ -120,7 +120,7 @@ UPDATE ${table.name}_t #if (('foreignkey' in $column) and $column.foreignkey) def get_${table.name}_by_${column.name}(user, token_info, ${column.name}Id=None): - return dbGetOne(user, token_info, { + return dbGetMany(user, token_info, { "statement": """ SELECT id diff --git a/ui/hv2-ui/src/app/app.module.ts b/ui/hv2-ui/src/app/app.module.ts index 6e25287..8196fab 100644 --- a/ui/hv2-ui/src/app/app.module.ts +++ b/ui/hv2-ui/src/app/app.module.ts @@ -41,7 +41,6 @@ import { MatNativeDateModule } from '@angular/material/core'; import { FeeListComponent } from './fee-list/fee-list.component'; import { FeeDetailsComponent } from './fee-details/fee-details.component'; - @NgModule({ declarations: [ AppComponent, @@ -84,7 +83,7 @@ import { FeeDetailsComponent } from './fee-details/fee-details.component'; MatFormFieldModule, MatSelectModule, MatDatepickerModule, - MatNativeDateModule + MatNativeDateModule, ], providers: [ { provide: HTTP_INTERCEPTORS, useClass: ErrorHandlerInterceptor, multi: true }, diff --git a/ui/hv2-ui/src/app/tenant-details/tenant-details.component.css b/ui/hv2-ui/src/app/tenant-details/tenant-details.component.css index e69de29..bbe34f1 100644 --- a/ui/hv2-ui/src/app/tenant-details/tenant-details.component.css +++ b/ui/hv2-ui/src/app/tenant-details/tenant-details.component.css @@ -0,0 +1,11 @@ +table { + width: 75%; +} + +.spacer { + flex: 1 1 auto; +} + +#addoverheadfield { + margin-right: 15px; +} diff --git a/ui/hv2-ui/src/app/tenant-details/tenant-details.component.html b/ui/hv2-ui/src/app/tenant-details/tenant-details.component.html index 002b221..006a4e5 100644 --- a/ui/hv2-ui/src/app/tenant-details/tenant-details.component.html +++ b/ui/hv2-ui/src/app/tenant-details/tenant-details.component.html @@ -3,12 +3,14 @@ {{tenant?.firstname}} {{tenant?.lastname}} + + ID: {{tenant?.id}} - +
@@ -75,4 +77,44 @@
+ + + + Mietverhältnisse + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Beschreibung{{element.rawTenancy.description}}Wohnung{{element.flat}}Garage{{element.parking}}Büro{{element.commercial_premise}}Beginn{{element.rawTenancy.startdate}}Ende{{element.rawTenancy.enddate}}
+
+
+
+ diff --git a/ui/hv2-ui/src/app/tenant-details/tenant-details.component.ts b/ui/hv2-ui/src/app/tenant-details/tenant-details.component.ts index 1d06ebd..e922973 100644 --- a/ui/hv2-ui/src/app/tenant-details/tenant-details.component.ts +++ b/ui/hv2-ui/src/app/tenant-details/tenant-details.component.ts @@ -1,9 +1,18 @@ import { Component, OnInit, ViewChild } from '@angular/core'; import { ActivatedRoute, Router } from '@angular/router'; -import { AccountService, TenantService } from '../data-object-service'; -import { Account, Tenant } from '../data-objects'; +import { AccountService, CommercialPremiseService, FlatService, ParkingService, PremiseService, TenancyService, TenantService } from '../data-object-service'; +import { Account, CommercialPremise, Flat, NULL_Account, NULL_CommercialPremise, NULL_Flat, NULL_Parking, NULL_Tenant, Parking, Premise, Tenancy, Tenant } from '../data-objects'; import { MessageService } from '../message.service'; import { MatButton } from '@angular/material/button'; +import { MatTableDataSource } from '@angular/material/table'; + + +interface DN_Tenancy { + rawTenancy: Tenancy + flat: string + parking: string + commercialPremise: string +} @Component({ selector: 'app-tenant-details', @@ -12,32 +21,28 @@ import { MatButton } from '@angular/material/button'; }) export class TenantDetailsComponent implements OnInit { - tenant: Tenant = { - id: 0, - salutation: '', - firstname: '', - lastname: '', - address1: '', - address2: '', - address3: '', - zip: '', - city: '', - phone1: '', - phone2: '', - iban: '', - account: 0 - } + tenant: Tenant = NULL_Tenant - account: Account = { - id: 0, - description: '' - } + account: Account = NULL_Account + + tenancies: DN_Tenancy[] = [] + tenancyDataSource: MatTableDataSource + tenancyDisplayColumns: string[] = [ "description", "flat", "parking", "commercial_premise", "startdate", "enddate" ] + + collapseTenantDetails: boolean = false + collapseTenancies: boolean = false + @ViewChild('submitButton') submitButton: MatButton constructor( private tenantService: TenantService, private accountService: AccountService, + private tenancyService: TenancyService, + private flatService: FlatService, + private parkingService: ParkingService, + private commercialPremiseService: CommercialPremiseService, + private premiseService: PremiseService, private messageService: MessageService, private route: ActivatedRoute, private router: Router @@ -49,6 +54,24 @@ export class TenantDetailsComponent implements OnInit { if (id != 0) { this.tenant = await this.tenantService.getTenant(id) this.account = await this.accountService.getAccount(this.tenant.account) + + const premises: Premise[] = await this.premiseService.getPremises() + const premisesDict = new Map() + for (let p of premises) { + premisesDict.set(p.id, p) + } + for (let t of await this.tenancyService.getTenancysByTenant(this.tenant.id)) { + const flat: Flat = (t.flat) ? await this.flatService.getFlat(t.flat) : NULL_Flat + const parking: Parking = (t.parking) ? await this.parkingService.getParking(t.parking) : NULL_Parking + const commercialPremise: CommercialPremise = (t.commercial_premise) ? await this.commercialPremiseService.getCommercialPremise(t.commercial_premise) : NULL_CommercialPremise + this.tenancies.push({ + rawTenancy: t, + flat: (flat != NULL_Flat) ? `${flat.description} (${premisesDict.get(flat.premise).description})` : '', + parking: (parking != NULL_Parking) ? `${parking.description} (${premisesDict.get(parking.premise).description})` : '', + commercialPremise: (commercialPremise != NULL_CommercialPremise) ? `${commercialPremise.description} (${premisesDict.get(commercialPremise.premise).description})` : '' + }) + } + this.tenancyDataSource = new MatTableDataSource(this.tenancies) } } catch (err) { this.messageService.add(JSON.stringify(err, undefined, 4))