Initial commit — DLS lab-app Flutter project

This commit is contained in:
egecankomur
2026-06-10 23:22:15 +03:00
commit d1acc1d367
225 changed files with 31294 additions and 0 deletions
@@ -0,0 +1,49 @@
import 'package:pocketbase/pocketbase.dart';
import '../../../core/api/pocketbase_client.dart';
import '../../../models/finance_entry.dart';
class ClinicFinanceRepository {
ClinicFinanceRepository._();
static final instance = ClinicFinanceRepository._();
PocketBase get _pb => PocketBaseClient.instance.pb;
Future<List<FinanceEntry>> listEntries(
String tenantId, {
String? status,
int page = 1,
int limit = 30,
}) async {
final filterParts = ['tenant_id = "$tenantId"', 'type = "payable"'];
if (status != null) filterParts.add('status = "$status"');
final result = await _pb.collection('finance_entries').getList(
page: page,
perPage: limit,
filter: filterParts.join(' && '),
expand: 'job_id',
);
return (result.items.map((r) => FinanceEntry.fromJson(r.toJson())).toList()
..sort((a, b) => (b.dateCreated ?? '').compareTo(a.dateCreated ?? '')));
}
Future<Map<String, double>> summary(String tenantId) async {
final all = await listEntries(tenantId, limit: 200);
double pending = 0, paid = 0;
for (final e in all) {
if (e.status == FinanceStatus.pending) {
pending += e.amount;
} else {
paid += e.amount;
}
}
return {'pending': pending, 'paid': paid};
}
Future<void> markPaid(String entryId) async {
await _pb.collection('finance_entries').update(entryId, body: {
'status': 'paid',
'paid_at': DateTime.now().toIso8601String(),
});
}
}