Refactor backend services and controllers to use DTOs for Tenant, Lease, and Apartment

- Updated TenantController to utilize TenantService and DTOs for tenant operations.
- Refactored UserController to return UserResponse DTO.
- Introduced LeaseService and ApartmentService to handle business logic and data mapping.
- Created DTOs for Apartment, Lease, Tenant, and User to standardize data transfer.
- Implemented mappers for converting between entities and DTOs using MapStruct.
- Removed landlordId from Apartment and Lease entities and adjusted related tests.
- Added validation and normalization logic for tenant and guarantor data.
- Enhanced unit tests to ensure proper mapping and data integrity during updates.
This commit is contained in:
nessar committed 2026-08-17 14:18:15 +02:00
1 parent 181410e28f
commit c8020c489e
34 files changed
+757 -321

No files matched your search

@@ -4,7 +4,6 @@ import { Observable } from 'rxjs';
export interface Apartment {
id?: string;
bailleurId?: string;
name: string;
address: string;
purchasePrice: number;
@@ -13,7 +13,6 @@ export interface Guarantor {
export interface Lease {
id?: string;
landlordId?: string;
apartmentId: string;
tenantIds: string[];
guarantors: Guarantor[];
+7 -1
View File
@@ -1,6 +1,12 @@
import { HttpClient } from '@angular/common/http';
import { Injectable, inject, signal } from '@angular/core';
interface UserResponse {
authenticated: boolean;
username?: string;
email?: string;
}
@Injectable({ providedIn: 'root' })
export class SessionService {
private readonly http = inject(HttpClient);
@@ -9,7 +15,7 @@ export class SessionService {
readonly email = signal('');
refresh(): void {
this.http.get<{ authenticated: boolean; username?: string; email?: string }>('/api/user').subscribe({
this.http.get<UserResponse>('/api/user').subscribe({
next: (user) => {
this.isLoggedIn.set(user.authenticated);
this.username.set(user.authenticated ? (user.username || 'User') : '');
@@ -11,7 +11,6 @@ export interface TenantAttachment {
export interface Tenant {
id?: string;
landlordId?: string;
firstName: string;
lastName: string;
email: string;