LCOV - code coverage report
Current view: top level - _classes/structure - abstract_app_data.dart Coverage Total Hit
Test: lcov.info Lines: 26.7 % 45 12
Test Date: 2026-11-14 15:03:01 Functions: - 0 0

            Line data    Source code
       1              : // Copyright 2023 The terCAD team. All rights reserved.
       2              : // Use of this source code is governed by a CC BY-NC-ND 4.0 license that can be found in the LICENSE file.
       3              : 
       4              : import 'dart:convert';
       5              : import 'package:app_finance/_classes/controller/encryption_handler.dart';
       6              : import 'package:app_finance/_classes/structure/interface_app_data.dart';
       7              : import 'package:app_finance/_ext/date_time_ext.dart';
       8              : import 'package:material_ui/material_ui.dart';
       9              : import 'package:flutter_currency_picker/flutter_currency_picker.dart';
      10              : 
      11              : abstract class AbstractAppData implements InterfaceAppData {
      12              :   @override
      13              :   String? uuid;
      14              :   double _amount = 0.0;
      15              :   DateTime _createdAt;
      16              :   DateTime _updatedAt;
      17              :   @override
      18              :   String title;
      19              :   double progress;
      20              :   @override
      21              :   bool hidden;
      22              :   @override
      23              :   bool skip;
      24              :   String? description;
      25              :   @override
      26              :   MaterialColor? color;
      27              :   @override
      28              :   IconData? icon;
      29              :   @override
      30              :   Currency? currency;
      31              :   String? payment;
      32              : 
      33           11 :   AbstractAppData({
      34              :     required this.title,
      35              :     this.uuid,
      36              :     this.description,
      37              :     this.color,
      38              :     this.icon,
      39              :     this.currency,
      40              :     DateTime? updatedAt,
      41              :     DateTime? createdAt,
      42              :     String? createdAtFormatted,
      43              :     details = 0.0,
      44              :     this.progress = 1.0,
      45              :     this.hidden = false,
      46              :     this.skip = false,
      47              :     this.payment,
      48            8 :   })  : _createdAt = createdAt ?? (createdAtFormatted != null ? DateTime.parse(createdAtFormatted) : DateTime.now()),
      49            8 :         _updatedAt = updatedAt ?? DateTime.now(),
      50           11 :         _amount = 0.0 + (details ?? 0.0);
      51              : 
      52              :   AbstractAppData clone();
      53              : 
      54            0 :   @override
      55            0 :   void deactivate() => hidden = true;
      56              : 
      57            0 :   factory AbstractAppData.fromJson(Map<String, dynamic> json) {
      58            0 :     throw Exception('Implement by extending');
      59              :   }
      60              : 
      61            0 :   Map<String, dynamic> toJson() => {
      62            0 :         'uuid': uuid,
      63            0 :         'title': title,
      64            0 :         'description': description,
      65            0 :         'color': color?.toARGB32(),
      66            0 :         'icon': icon?.codePoint,
      67            0 :         'currency': currency?.code,
      68            0 :         'createdAt': createdAt.toIso8601String(),
      69            0 :         'updatedAt': updatedAt.toIso8601String(),
      70            0 :         'details': details,
      71            0 :         'progress': progress,
      72            0 :         'hidden': hidden,
      73            0 :         'skip': skip,
      74            0 :         'payment': payment,
      75              :       };
      76              : 
      77            0 :   Map<String, Map<String, dynamic>> toFile() {
      78            0 :     var data = {...toJson()};
      79            0 :     return {
      80            0 :       'type': {
      81            0 :         'name': getClassName(),
      82            0 :         'hash': EncryptionHandler.getHash(data),
      83              :       },
      84              :       'data': data,
      85              :     };
      86              :   }
      87              : 
      88            0 :   String toStream() => EncryptionHandler.encrypt(toString());
      89              : 
      90            0 :   @override
      91            0 :   String toString() => json.encode(toFile());
      92              : 
      93           11 :   @override
      94           11 :   dynamic get details => _amount;
      95              : 
      96           10 :   set details(dynamic value) => _amount = value;
      97              : 
      98            0 :   Widget? get error => null;
      99              : 
     100              :   // ignore: unnecessary_getters_setters
     101            0 :   DateTime get updatedAt => _updatedAt;
     102            0 :   set updatedAt(DateTime value) => _updatedAt = value;
     103            0 :   String get updatedAtFormatted => _updatedAt.yMEd();
     104            0 :   set updatedAtFormatted(String value) => _updatedAt = DateTime.parse(value);
     105              : 
     106              :   // ignore: unnecessary_getters_setters
     107            5 :   @override
     108            5 :   DateTime get createdAt => _createdAt;
     109            1 :   @override
     110            1 :   set createdAt(DateTime value) => _createdAt = value;
     111            0 :   String get createdAtFormatted => _createdAt.yMEd();
     112            6 :   set createdAtFormatted(String value) => _createdAt = DateTime.parse(value);
     113              : }
        

Generated by: LCOV version 2.0-1