대시보드 결재 상세 진입 지원
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
import 'package:flutter/foundation.dart';
|
||||
|
||||
import '../../../../core/common/utils/json_utils.dart';
|
||||
import '../../domain/entities/dashboard_kpi.dart';
|
||||
import '../../domain/entities/dashboard_pending_approval.dart';
|
||||
@@ -20,17 +22,18 @@ class DashboardSummaryDto {
|
||||
|
||||
factory DashboardSummaryDto.fromJson(Map<String, dynamic> json) {
|
||||
final generatedAt = _parseDate(json['generated_at']);
|
||||
final kpiList = JsonUtils.extractList(json, keys: const ['kpis'])
|
||||
.map(DashboardKpiDto.fromJson)
|
||||
.toList(growable: false);
|
||||
final transactionList =
|
||||
JsonUtils.extractList(json, keys: const ['recent_transactions'])
|
||||
.map(DashboardTransactionDto.fromJson)
|
||||
.toList(growable: false);
|
||||
final approvalList =
|
||||
JsonUtils.extractList(json, keys: const ['pending_approvals'])
|
||||
.map(DashboardApprovalDto.fromJson)
|
||||
.toList(growable: false);
|
||||
final kpiList = JsonUtils.extractList(
|
||||
json,
|
||||
keys: const ['kpis'],
|
||||
).map(DashboardKpiDto.fromJson).toList(growable: false);
|
||||
final transactionList = JsonUtils.extractList(
|
||||
json,
|
||||
keys: const ['recent_transactions'],
|
||||
).map(DashboardTransactionDto.fromJson).toList(growable: false);
|
||||
final approvalList = JsonUtils.extractList(
|
||||
json,
|
||||
keys: const ['pending_approvals'],
|
||||
).map(DashboardApprovalDto.fromJson).toList(growable: false);
|
||||
|
||||
return DashboardSummaryDto(
|
||||
generatedAt: generatedAt,
|
||||
@@ -133,19 +136,42 @@ class DashboardTransactionDto {
|
||||
|
||||
class DashboardApprovalDto {
|
||||
const DashboardApprovalDto({
|
||||
this.approvalId,
|
||||
required this.approvalNo,
|
||||
required this.title,
|
||||
required this.stepSummary,
|
||||
this.requestedAt,
|
||||
});
|
||||
|
||||
final int? approvalId;
|
||||
final String approvalNo;
|
||||
final String title;
|
||||
final String stepSummary;
|
||||
final String? requestedAt;
|
||||
|
||||
factory DashboardApprovalDto.fromJson(Map<String, dynamic> json) {
|
||||
num? rawId = _readNum(json, 'approval_id');
|
||||
if (rawId == null) {
|
||||
final approvalMap = json['approval'];
|
||||
if (approvalMap is Map<String, dynamic>) {
|
||||
rawId = _readNum(approvalMap, 'id');
|
||||
if (rawId == null && approvalMap.containsKey('id')) {
|
||||
final fallbackValue = approvalMap['id'];
|
||||
debugPrint(
|
||||
'[DashboardSummaryDto] approval.id 파싱 실패: runtimeType=${fallbackValue.runtimeType}, value=$fallbackValue',
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
final approvalIdValue = rawId?.toInt();
|
||||
if (approvalIdValue == null && json.containsKey('approval_id')) {
|
||||
final rawValue = json['approval_id'];
|
||||
debugPrint(
|
||||
'[DashboardSummaryDto] approval_id 파싱 실패: runtimeType=${rawValue.runtimeType}, value=$rawValue',
|
||||
);
|
||||
}
|
||||
return DashboardApprovalDto(
|
||||
approvalId: approvalIdValue,
|
||||
approvalNo: _readString(json, 'approval_no') ?? '',
|
||||
title: _readString(json, 'title') ?? '',
|
||||
stepSummary: _readString(json, 'step_summary') ?? '',
|
||||
@@ -155,6 +181,7 @@ class DashboardApprovalDto {
|
||||
|
||||
DashboardPendingApproval toEntity() {
|
||||
return DashboardPendingApproval(
|
||||
approvalId: approvalId,
|
||||
approvalNo: approvalNo,
|
||||
title: title,
|
||||
stepSummary: stepSummary,
|
||||
@@ -190,7 +217,11 @@ num? _readNum(Map<String, dynamic>? source, String key) {
|
||||
return value;
|
||||
}
|
||||
if (value is String) {
|
||||
return num.tryParse(value);
|
||||
final trimmed = value.trim();
|
||||
if (trimmed.isEmpty) {
|
||||
return null;
|
||||
}
|
||||
return num.tryParse(trimmed);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user