basic csv loader, transaction list & half done stats page

This commit is contained in:
2024-02-04 22:34:28 +01:00
commit 3abee9ff6f
179 changed files with 6999 additions and 0 deletions

View File

@@ -0,0 +1,19 @@
import 'package:formz/formz.dart';
enum TransactionAccountValidationError {
empty('Account empty'),
invalid('Account invalid');
final String message;
const TransactionAccountValidationError(this.message);
}
class TransactionAccount extends FormzInput<String, TransactionAccountValidationError> {
const TransactionAccount.pure() : super.pure('');
const TransactionAccount.dirty([super.value = '']) : super.dirty();
@override
TransactionAccountValidationError? validator(String value) {
return value.isEmpty ? TransactionAccountValidationError.empty : null;
}
}

View File

@@ -0,0 +1,19 @@
import 'package:formz/formz.dart';
enum TransactionCategoryValidationError {
empty('Category empty'),
invalid('Category invalid');
final String message;
const TransactionCategoryValidationError(this.message);
}
class TransactionCategory extends FormzInput<String, TransactionCategoryValidationError> {
const TransactionCategory.pure() : super.pure('');
const TransactionCategory.dirty([super.value = '']) : super.dirty();
@override
TransactionCategoryValidationError? validator(String value) {
return value.isEmpty ? TransactionCategoryValidationError.empty : null;
}
}

View File

@@ -0,0 +1,19 @@
import 'package:formz/formz.dart';
enum TransactionDateValidationError {
empty('Date empty'),
invalid('Date invalid');
final String message;
const TransactionDateValidationError(this.message);
}
class TransactionDate extends FormzInput<DateTime?, TransactionDateValidationError> {
const TransactionDate.pure() : super.pure(null);
const TransactionDate.dirty([super.value]) : super.dirty();
@override
TransactionDateValidationError? validator(DateTime? value) {
return value == null ? TransactionDateValidationError.empty : null;
}
}

View File

@@ -0,0 +1,19 @@
import 'package:formz/formz.dart';
enum TransactionDescriptionValidationError {
empty('Description empty'),
invalid('Description invalid');
final String message;
const TransactionDescriptionValidationError(this.message);
}
class TransactionDescription extends FormzInput<String, TransactionDescriptionValidationError> {
const TransactionDescription.pure() : super.pure('');
const TransactionDescription.dirty([super.value = '']) : super.dirty();
@override
TransactionDescriptionValidationError? validator(String value) {
return value.isEmpty ? TransactionDescriptionValidationError.empty : null;
}
}

View File

@@ -0,0 +1,11 @@
import 'package:tunas/repositories/account/models/transaction.dart';
class TransactionLine {
Transaction transaction;
double subTotal;
TransactionLine({
required this.transaction,
required this.subTotal,
});
}

View File

@@ -0,0 +1,23 @@
import 'package:formz/formz.dart';
enum TransactionValueValidationError {
empty('Value empty'),
invalid('Value invalid');
final String message;
const TransactionValueValidationError(this.message);
}
class TransactionValue extends FormzInput<double, TransactionValueValidationError> {
const TransactionValue.pure() : super.pure(0);
const TransactionValue.dirty([super.value = 0]) : super.dirty();
@override
TransactionValueValidationError? validator(double value) {
return value.isNaN
? TransactionValueValidationError.empty
: value.isInfinite
? TransactionValueValidationError.invalid
: null;
}
}