Ingatlanok tulajdoni lapok és tulajdonosok táblázatos és térképi megjelenítése.
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 6s

This commit is contained in:
2026-08-31 20:38:18 +02:00
parent 443b35fbb9
commit 47f7687e40
13 changed files with 1599 additions and 26 deletions
+28
View File
@@ -0,0 +1,28 @@
/// Egy tulajdonos/kezelő a levél-pipeline importjából — tisztán online,
/// nincs helyi tükör.
class FieldParty {
final String id;
final String publicationId;
final String name;
final String partyType;
final String? settlement;
final int propertyCount;
const FieldParty({
required this.id,
required this.publicationId,
required this.name,
required this.partyType,
this.settlement,
required this.propertyCount,
});
factory FieldParty.fromMap(Map<String, dynamic> m) => FieldParty(
id: m['id'] as String,
publicationId: m['publication_id'] as String,
name: m['name'] as String? ?? '',
partyType: m['party_type'] as String? ?? '',
settlement: m['settlement'] as String?,
propertyCount: (m['property_count'] as num?)?.toInt() ?? 0,
);
}
+69
View File
@@ -0,0 +1,69 @@
/// Egy ingatlan (helyrajzi szám) a levél-pipeline importjából.
///
/// SZÁNDÉKOSAN nincs hozzá helyi tábla/toMap — ez a funkció tisztán
/// online, a `terepi_seged_field_properties_view` élő lekérdezéséből él,
/// sosem kerül a készülék adatbázisába.
class FieldProperty {
final String id;
final String projectId;
final String publicationId;
final String settlement;
final String parcelNumber;
final String normalizedParcelNumber;
final String areaType;
final String mailingStatus;
final int? totalAreaSquareMeters;
final double? totalCadastralIncome;
final String? caseIdentifier;
final int recipientCount;
final int selectedRecipientCount;
final int generatedLetterCount;
final int sentLetterCount;
final String ownerNames;
final String landUseSummary;
final DateTime createdAt;
const FieldProperty({
required this.id,
required this.projectId,
required this.publicationId,
required this.settlement,
required this.parcelNumber,
required this.normalizedParcelNumber,
required this.areaType,
required this.mailingStatus,
this.totalAreaSquareMeters,
this.totalCadastralIncome,
this.caseIdentifier,
required this.recipientCount,
required this.selectedRecipientCount,
required this.generatedLetterCount,
required this.sentLetterCount,
required this.ownerNames,
this.landUseSummary = '',
required this.createdAt,
});
factory FieldProperty.fromMap(Map<String, dynamic> m) => FieldProperty(
id: m['id'] as String,
projectId: m['project_id'] as String,
publicationId: m['publication_id'] as String,
settlement: m['settlement'] as String? ?? '',
parcelNumber: m['parcel_number'] as String? ?? '',
normalizedParcelNumber: m['normalized_parcel_number'] as String? ?? '',
areaType: m['area_type'] as String? ?? '',
mailingStatus: m['mailing_status'] as String? ?? 'unknown',
totalAreaSquareMeters: (m['total_area_square_meters'] as num?)?.toInt(),
totalCadastralIncome: (m['total_cadastral_income'] as num?)?.toDouble(),
caseIdentifier: m['case_identifier'] as String?,
recipientCount: (m['recipient_count'] as num?)?.toInt() ?? 0,
selectedRecipientCount:
(m['selected_recipient_count'] as num?)?.toInt() ?? 0,
generatedLetterCount:
(m['generated_letter_count'] as num?)?.toInt() ?? 0,
sentLetterCount: (m['sent_letter_count'] as num?)?.toInt() ?? 0,
ownerNames: m['owner_names'] as String? ?? '',
landUseSummary: m['land_use_summary'] as String? ?? '',
createdAt: DateTime.parse(m['created_at'] as String),
);
}
+11
View File
@@ -90,6 +90,17 @@ class Project {
createdAt: DateTime.parse(m['created_at'] as String),
updatedAt: DateTime.parse(m['updated_at'] as String),
);
@override
bool operator ==(Object other) =>
identical(this, other) ||
other is Project &&
runtimeType == other.runtimeType &&
id == other.id &&
updatedAt == other.updatedAt;
@override
int get hashCode => Object.hash(id, updatedAt);
}
bool _readBool(