LCOV - code coverage report
Current view: top level - lib/_classes/structure - abstract_app_data.dart (source / functions) Hit Total Coverage
Test: lcov.info Lines: 32 43 74.4 %
Date: 2024-10-04 11:12:13 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:flutter/material.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             :   String? description;
      23             :   @override
      24             :   MaterialColor? color;
      25             :   @override
      26             :   IconData? icon;
      27             :   @override
      28             :   Currency? currency;
      29             : 
      30           1 :   AbstractAppData({
      31             :     required this.title,
      32             :     this.uuid,
      33             :     this.description,
      34             :     this.color,
      35             :     this.icon,
      36             :     this.currency,
      37             :     DateTime? updatedAt,
      38             :     DateTime? createdAt,
      39             :     String? createdAtFormatted,
      40             :     details = 0.0,
      41             :     this.progress = 1.0,
      42             :     this.hidden = false,
      43           1 :   })  : _createdAt = createdAt ?? (createdAtFormatted != null ? DateTime.parse(createdAtFormatted) : DateTime.now()),
      44           1 :         _updatedAt = updatedAt ?? DateTime.now(),
      45           1 :         _amount = 0.0 + (details ?? 0.0);
      46             : 
      47             :   AbstractAppData clone();
      48             : 
      49           0 :   @override
      50           0 :   void deactivate() => hidden = true;
      51             : 
      52           0 :   factory AbstractAppData.fromJson(Map<String, dynamic> json) {
      53           0 :     throw Exception('Implement by extending');
      54             :   }
      55             : 
      56           2 :   Map<String, dynamic> toJson() => {
      57           1 :         'uuid': uuid,
      58           1 :         'title': title,
      59           1 :         'description': description,
      60           2 :         'color': color?.value,
      61           1 :         'icon': icon?.codePoint,
      62           1 :         'currency': currency?.code,
      63           2 :         'createdAt': createdAt.toIso8601String(),
      64           2 :         'updatedAt': updatedAt.toIso8601String(),
      65           1 :         'details': details,
      66           1 :         'progress': progress,
      67           1 :         'hidden': hidden,
      68             :       };
      69             : 
      70           1 :   Map<String, Map<String, dynamic>> toFile() {
      71           2 :     var data = {...toJson()};
      72           1 :     return {
      73           1 :       'type': {
      74           1 :         'name': getClassName(),
      75           1 :         'hash': EncryptionHandler.getHash(data),
      76             :       },
      77             :       'data': data,
      78             :     };
      79             :   }
      80             : 
      81           3 :   String toStream() => EncryptionHandler.encrypt(toString());
      82             : 
      83           1 :   @override
      84           2 :   String toString() => json.encode(toFile());
      85             : 
      86           1 :   @override
      87           1 :   dynamic get details => _amount;
      88             : 
      89           2 :   set details(dynamic value) => _amount = value;
      90             : 
      91           0 :   Widget? get error => null;
      92             : 
      93             :   // ignore: unnecessary_getters_setters
      94           2 :   DateTime get updatedAt => _updatedAt;
      95           0 :   set updatedAt(DateTime value) => _updatedAt = value;
      96           3 :   String get updatedAtFormatted => _updatedAt.yMEd();
      97           0 :   set updatedAtFormatted(String value) => _updatedAt = DateTime.parse(value);
      98             : 
      99             :   // ignore: unnecessary_getters_setters
     100           1 :   @override
     101           1 :   DateTime get createdAt => _createdAt;
     102           0 :   @override
     103           0 :   set createdAt(DateTime value) => _createdAt = value;
     104           0 :   String get createdAtFormatted => _createdAt.yMEd();
     105           0 :   set createdAtFormatted(String value) => _createdAt = DateTime.parse(value);
     106             : }

Generated by: LCOV version 1.14