temp build

This commit is contained in:
Stephan D
2025-12-05 01:32:41 +01:00
parent 082d782a80
commit f71cc76f64
50 changed files with 853 additions and 707 deletions

View File

@@ -0,0 +1,37 @@
import 'package:pshared/api/responses/payment_method.dart';
import 'package:pshared/data/mapper/payment/method.dart';
import 'package:pshared/models/payment/methods/type.dart';
import 'package:pshared/service/services.dart';
import 'package:pshared/service/template.dart';
class PaymentMethodService {
static const String _objectType = Services.paymentMethods;
static final BasicService<PaymentMethod> _basicService = BasicService<PaymentMethod>(
objectType: _objectType,
fromJson: (json) => PaymentMethodResponse.fromJson(json).paymentMethods.map((dto) => dto.toDomain()).toList(),
);
static BasicService<PaymentMethod> get basicService => _basicService;
static Future<List<PaymentMethod>> list(String organizationRef, String recipientRef) async {
return _basicService.list(organizationRef, recipientRef);
}
static Future<PaymentMethod> get(String recipientRef) async {
return _basicService.get(recipientRef);
}
static Future<List<PaymentMethod>> create(String organizationRef, PaymentMethod paymentMethod) async {
return _basicService.create(organizationRef, paymentMethod.toDTO().toJson());
}
static Future<List<PaymentMethod>> update(PaymentMethod paymentMethod) async {
return _basicService.update(paymentMethod.toDTO().toJson());
}
static Future<List<PaymentMethod>> delete(PaymentMethod paymentMethod) async {
return _basicService.delete(paymentMethod.storable.id);
}
}

View File

@@ -0,0 +1,37 @@
import 'package:pshared/api/responses/recipient.dart';
import 'package:pshared/data/mapper/recipient/recipient.dart';
import 'package:pshared/models/recipient/recipient.dart';
import 'package:pshared/service/services.dart';
import 'package:pshared/service/template.dart';
class RecipientService {
static const String _objectType = Services.recipients;
static final BasicService<Recipient> _basicService = BasicService<Recipient>(
objectType: _objectType,
fromJson: (json) => RecipientResponse.fromJson(json).recipients.map((dto) => dto.toDomain()).toList(),
);
static BasicService<Recipient> get basicService => _basicService;
static Future<List<Recipient>> list(String organizationRef, String _) async {
return _basicService.list(organizationRef, organizationRef);
}
static Future<Recipient> get(String recipientRef) async {
return _basicService.get(recipientRef);
}
static Future<List<Recipient>> create(String organizationRef, Recipient recipient) async {
return _basicService.create(organizationRef, recipient.toDTO().toJson());
}
static Future<List<Recipient>> update(Recipient recipient) async {
return _basicService.update(recipient.toDTO().toJson());
}
static Future<List<Recipient>> delete(Recipient recipient) async {
return _basicService.delete(recipient.storable.id);
}
}

View File

@@ -1,6 +1,7 @@
import 'package:logging/logging.dart';
import 'package:pshared/service/authorization/service.dart';
import 'package:pshared/utils/http/params.dart';
class BasicService<T> {
@@ -15,15 +16,26 @@ class BasicService<T> {
required this.fromJson,
}) : _objectType = objectType, _logger = Logger('service.$objectType');
Future<List<T>> list(String organizationRef, String parentRef) async {
_logger.fine('Loading all objects');
String _refLog(String ref) => ref.isEmpty ? '<not set>' : ref;
Future<List<T>> list(String organizationRef, String parentRef, {int? limit, int? offset, bool? fetchArchived}) async {
_logger.fine('Loading all for organization ${_refLog(organizationRef)} and parent ${_refLog(organizationRef)} with: limit=${_formatParameter(limit)}, offset=${_formatParameter(offset)}, fetchArchived=${_formatParameter(fetchArchived)}...');
return _getObjects(
AuthorizationService.getGETResponse(_objectType, '/list/$organizationRef/$parentRef'),
AuthorizationService.getGETResponse(
_objectType,
paramsToUriString(
path: '/list/$organizationRef/$parentRef',
limit: limit,
offset: offset,
fetchArchived: fetchArchived,
),
),
);
}
Future<T> get(String objectRef) async {
_logger.fine('Loading object $objectRef');
_logger.fine('Loading $_objectType $objectRef');
final objects = await _getObjects(
AuthorizationService.getGETResponse(_objectType, '/$objectRef'),
);
@@ -31,24 +43,36 @@ class BasicService<T> {
}
Future<List<T>> create(String organizationRef, Map<String, dynamic> request) async {
_logger.fine('Creating new object...');
_logger.fine('Creating new...');
return _getObjects(
AuthorizationService.getPOSTResponse(_objectType, '/$organizationRef', request),
);
}
Future<List<T>> update(Map<String, dynamic> request) async {
_logger.fine('Patching object...');
_logger.fine('Patching...');
return _getObjects(
AuthorizationService.getPUTResponse(_objectType, '/', request,
),
);
}
Future<List<T>> delete(String objecRef) async {
_logger.fine('Deleting object $objecRef');
Future<List<T>> delete(String objecRef, {Map<String, dynamic>? request}) async {
_logger.fine('Deleting $_objectType $objecRef');
return _getObjects(
AuthorizationService.getDELETEResponse(_objectType, '/$objecRef', {}),
AuthorizationService.getDELETEResponse(_objectType, '/$objecRef', request ?? {}),
);
}
Future<List<T>> archive({
required String organizationRef,
required String objectRef,
required bool newIsArchived,
bool? cascade,
}) async {
_logger.fine('Setting new archive status $newIsArchived to $objectRef');
return _getObjects(
AuthorizationService.getGETResponse(_objectType, '/archive/$organizationRef/$objectRef?archived=$newIsArchived&cascade=${cascade ?? false}'),
);
}
@@ -59,8 +83,12 @@ class BasicService<T> {
_logger.fine('Fetched ${objects.length} object(s)');
return objects;
} catch (e, stackTrace) {
_logger.severe('Failed to fetch objects', e, stackTrace);
_logger.severe('Failed to fetch', e, stackTrace);
rethrow;
}
}
String _formatParameter(dynamic value) {
return value?.toString() ?? '<not specified>';
}
}