Refactor date handling in tender data model and UI components. Added unixTimestampFromJson for parsing timestamps and updated timeConvertor to handle null values. Updated relevant model fields and UI to use the new parsing logic. Added unit tests for date utilities.

This commit is contained in:
AmirReza Jamali
2026-05-24 15:28:47 +03:30
parent 4525e06119
commit 2515190576
9 changed files with 71 additions and 23 deletions
@@ -1,6 +1,7 @@
// ignore_for_file: invalid_annotation_target
import 'package:freezed_annotation/freezed_annotation.dart';
import 'package:tm_app/core/utils/date_utils.dart';
import 'package:tm_app/data/services/model/organization/organization.dart';
part 'tender_data.freezed.dart';
@@ -15,7 +16,8 @@ abstract class TenderData with _$TenderData {
@JsonKey(name: 'tender_id') required String? tenderId,
@JsonKey(name: 'notice_publication_id')
required String? noticePublicationId,
@JsonKey(name: 'publication_date') required int? publicationDate,
@JsonKey(name: 'publication_date', fromJson: unixTimestampFromJson)
required int? publicationDate,
required String? title,
required String? description,
@JsonKey(name: 'procurement_type_code')
@@ -24,9 +26,12 @@ abstract class TenderData with _$TenderData {
@JsonKey(name: 'estimated_value') required int? estimatedValue,
required String? currency,
required String? duration,
@JsonKey(name: 'tender_deadline') required int? tenderDeadline,
@JsonKey(name: 'submission_deadline') required int? submissionDeadline,
@JsonKey(name: 'application_deadline') required int? applicationDeadline,
@JsonKey(name: 'tender_deadline', fromJson: unixTimestampFromJson)
required int? tenderDeadline,
@JsonKey(name: 'submission_deadline', fromJson: unixTimestampFromJson)
required int? submissionDeadline,
@JsonKey(name: 'application_deadline', fromJson: unixTimestampFromJson)
required int? applicationDeadline,
@JsonKey(name: 'submission_url') required String? submissionUrl,
@JsonKey(name: 'country_code') required String? countryCode,
@JsonKey(name: 'duration_unit') required String? durationUnit,
@@ -12,7 +12,7 @@ _TenderData _$TenderDataFromJson(Map<String, dynamic> json) => _TenderData(
id: json['id'] as String?,
tenderId: json['tender_id'] as String?,
noticePublicationId: json['notice_publication_id'] as String?,
publicationDate: (json['publication_date'] as num?)?.toInt(),
publicationDate: unixTimestampFromJson(json['publication_date']),
title: json['title'] as String?,
description: json['description'] as String?,
procurementTypeCode: json['procurement_type_code'] as String?,
@@ -20,9 +20,9 @@ _TenderData _$TenderDataFromJson(Map<String, dynamic> json) => _TenderData(
estimatedValue: (json['estimated_value'] as num?)?.toInt(),
currency: json['currency'] as String?,
duration: json['duration'] as String?,
tenderDeadline: (json['tender_deadline'] as num?)?.toInt(),
submissionDeadline: (json['submission_deadline'] as num?)?.toInt(),
applicationDeadline: (json['application_deadline'] as num?)?.toInt(),
tenderDeadline: unixTimestampFromJson(json['tender_deadline']),
submissionDeadline: unixTimestampFromJson(json['submission_deadline']),
applicationDeadline: unixTimestampFromJson(json['application_deadline']),
submissionUrl: json['submission_url'] as String?,
countryCode: json['country_code'] as String?,
durationUnit: json['duration_unit'] as String?,