Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • car-app/appwrite-functions
1 result
Show changes
Commits on Source (3)
Showing
with 280 additions and 136 deletions
import 'package:api/model/calendar_event.dart';
import 'package:api/model/interface/calendar_event.dart';
import 'package:api/model/request/calendar_event.dart';
import 'package:api/model/response/calendar_event.dart';
import 'package:api/model/team.dart';
import 'package:api/model/user.dart';
import 'package:lib/lib.dart';
class CalendarEventApiEndpoint extends CheckedDbApiEndpoint<CalendarEvent, CalendarEvent> {
class CalendarEventApiEndpoint extends CheckedDbApiEndpoint<CalendarEventRequest, CalendarEventResponse> {
final User requestingUser;
final Iterable<Team> requestingUserTeams;
@override
Future<bool> Function(CalendarEvent) get createItemAllowed => _createItemAllowed;
Future<bool> Function(CalendarEventRequest) get createItemAllowed => _createItemAllowed;
@override
Future<bool> Function(CalendarEvent) get getItemAllowed => _getItemAllowed;
Future<bool> Function(CalendarEventResponse) get getItemAllowed => _getItemAllowed;
@override
Future<bool> Function(CalendarEvent, CalendarEvent) get updateItemAllowed => _updateItemAllowed;
Future<bool> Function(CalendarEventRequest, CalendarEventResponse) get updateItemAllowed => _updateItemAllowed;
@override
Future<bool> Function(CalendarEvent) get deleteItemAllowed => _deleteItemAllowed;
Future<bool> Function(CalendarEventResponse) get deleteItemAllowed => _deleteItemAllowed;
CalendarEventApiEndpoint({
required super.database,
......@@ -27,20 +29,20 @@ class CalendarEventApiEndpoint extends CheckedDbApiEndpoint<CalendarEvent, Calen
required this.requestingUserTeams,
});
Future<bool> _createItemAllowed(CalendarEvent item) {
Future<bool> _createItemAllowed(CalendarEventRequest item) {
return Future.value(
_isUserInTeam(item)
&& _isUserOwner(item)
);
}
Future<bool> _getItemAllowed(CalendarEvent item) {
Future<bool> _getItemAllowed(CalendarEventResponse item) {
return Future.value(
_isUserInTeam(item)
);
}
Future<bool> _updateItemAllowed(CalendarEvent item, CalendarEvent originalItem) {
Future<bool> _updateItemAllowed(CalendarEventRequest item, CalendarEventResponse originalItem) {
return Future.value(
item.id == originalItem.id
&& _isUserInTeam(item)
......@@ -49,7 +51,7 @@ class CalendarEventApiEndpoint extends CheckedDbApiEndpoint<CalendarEvent, Calen
);
}
Future<bool> _deleteItemAllowed(CalendarEvent item) {
Future<bool> _deleteItemAllowed(CalendarEventResponse item) {
return Future.value(
_isUserOwner(item)
);
......
import 'dart:async';
import 'package:api/model/payment/driven_distance_distributed.dart';
import 'package:api/model/route.dart';
import 'package:api/model/interface/payment/driven_distance_distributed.dart';
import 'package:api/model/request/payment/driven_distance_distributed.dart';
import 'package:api/model/response/payment/driven_distance_distributed.dart';
import 'package:api/model/response/route.dart';
import 'package:api/model/team.dart';
import 'package:api/model/user.dart';
import 'package:lib/lib.dart';
class DrivenDistanceDistributedPaymentApiEndpoint extends CheckedDbApiEndpoint<DrivenDistanceDistributedPayment, DrivenDistanceDistributedPayment> {
class DrivenDistanceDistributedPaymentApiEndpoint extends CheckedDbApiEndpoint<DrivenDistanceDistributedPaymentRequest, DrivenDistanceDistributedPaymentResponse> {
final User requestingUser;
final Iterable<Team> requestingUserTeams;
final Future<Route> Function(String) getRouteFromId;
final Future<RouteResponse> Function(String) getRouteFromId;
@override
Future<bool> Function(DrivenDistanceDistributedPayment) get createItemAllowed => _createItemAllowed;
Future<bool> Function(DrivenDistanceDistributedPaymentRequest) get createItemAllowed => _createItemAllowed;
@override
Future<bool> Function(DrivenDistanceDistributedPayment) get getItemAllowed => _getItemAllowed;
Future<bool> Function(DrivenDistanceDistributedPaymentResponse) get getItemAllowed => _getItemAllowed;
@override
Future<bool> Function(DrivenDistanceDistributedPayment, DrivenDistanceDistributedPayment) get updateItemAllowed => _updateItemAllowed;
Future<bool> Function(DrivenDistanceDistributedPaymentRequest, DrivenDistanceDistributedPaymentResponse) get updateItemAllowed => _updateItemAllowed;
@override
Future<bool> Function(DrivenDistanceDistributedPayment) get deleteItemAllowed => _deleteItemAllowed;
Future<bool> Function(DrivenDistanceDistributedPaymentResponse) get deleteItemAllowed => _deleteItemAllowed;
DrivenDistanceDistributedPaymentApiEndpoint({
required super.database,
......@@ -32,7 +34,7 @@ class DrivenDistanceDistributedPaymentApiEndpoint extends CheckedDbApiEndpoint<D
required this.getRouteFromId,
});
Future<bool> _createItemAllowed(DrivenDistanceDistributedPayment item) async {
Future<bool> _createItemAllowed(DrivenDistanceDistributedPaymentRequest item) async {
return _isUserOwner(item)
&& _isUserInTeam(item)
&& _hasAtLeastOneRoute(item)
......@@ -40,13 +42,13 @@ class DrivenDistanceDistributedPaymentApiEndpoint extends CheckedDbApiEndpoint<D
&& _isAmountOk(item);
}
Future<bool> _getItemAllowed(DrivenDistanceDistributedPayment item) {
Future<bool> _getItemAllowed(DrivenDistanceDistributedPaymentResponse item) {
return Future.value(
_isUserInTeam(item)
);
}
Future<bool> _updateItemAllowed(DrivenDistanceDistributedPayment item, DrivenDistanceDistributedPayment originalItem) async {
Future<bool> _updateItemAllowed(DrivenDistanceDistributedPaymentRequest item, DrivenDistanceDistributedPaymentResponse originalItem) async {
return item.id == originalItem.id
&& _isUserOwner(item)
&& _isUserOwner(originalItem)
......@@ -56,7 +58,7 @@ class DrivenDistanceDistributedPaymentApiEndpoint extends CheckedDbApiEndpoint<D
&& _isAmountOk(item);
}
Future<bool> _deleteItemAllowed(DrivenDistanceDistributedPayment item) {
Future<bool> _deleteItemAllowed(DrivenDistanceDistributedPaymentResponse item) {
return Future.value(
_isUserOwner(item)
);
......
import 'dart:async';
import 'package:api/model/payment/equally_distributed.dart';
import 'package:api/model/interface/payment/equally_distributed.dart';
import 'package:api/model/request/payment/equally_distributed.dart';
import 'package:api/model/response/payment/equally_distributed.dart';
import 'package:api/model/team.dart';
import 'package:api/model/user.dart';
import 'package:lib/lib.dart';
class EquallyDistributedApiEndpoint extends CheckedDbApiEndpoint<EquallyDistributedPayment, EquallyDistributedPayment> {
class EquallyDistributedApiEndpoint extends CheckedDbApiEndpoint<EquallyDistributedPaymentRequest, EquallyDistributedPaymentResponse> {
final User requestingUser;
final Iterable<Team> requestingUserTeams;
@override
Future<bool> Function(EquallyDistributedPayment) get createItemAllowed => _createItemAllowed;
Future<bool> Function(EquallyDistributedPaymentRequest) get createItemAllowed => _createItemAllowed;
@override
Future<bool> Function(EquallyDistributedPayment) get getItemAllowed => _getItemAllowed;
Future<bool> Function(EquallyDistributedPaymentResponse) get getItemAllowed => _getItemAllowed;
@override
Future<bool> Function(EquallyDistributedPayment, EquallyDistributedPayment) get updateItemAllowed => _updateItemAllowed;
Future<bool> Function(EquallyDistributedPaymentRequest, EquallyDistributedPaymentResponse) get updateItemAllowed => _updateItemAllowed;
@override
Future<bool> Function(EquallyDistributedPayment) get deleteItemAllowed => _deleteItemAllowed;
Future<bool> Function(EquallyDistributedPaymentResponse) get deleteItemAllowed => _deleteItemAllowed;
EquallyDistributedApiEndpoint({
required super.database,
......@@ -29,7 +31,7 @@ class EquallyDistributedApiEndpoint extends CheckedDbApiEndpoint<EquallyDistribu
required this.requestingUserTeams,
});
Future<bool> _createItemAllowed(EquallyDistributedPayment item) {
Future<bool> _createItemAllowed(EquallyDistributedPaymentRequest item) {
return Future.value(
_isUserOwner(item)
&& _isUserInTeam(item)
......@@ -37,13 +39,13 @@ class EquallyDistributedApiEndpoint extends CheckedDbApiEndpoint<EquallyDistribu
);
}
Future<bool> _getItemAllowed(EquallyDistributedPayment item) {
Future<bool> _getItemAllowed(EquallyDistributedPaymentResponse item) {
return Future.value(
_isUserInTeam(item)
);
}
Future<bool> _updateItemAllowed(EquallyDistributedPayment item, EquallyDistributedPayment originalItem) {
Future<bool> _updateItemAllowed(EquallyDistributedPaymentRequest item, EquallyDistributedPaymentResponse originalItem) {
return Future.value(
item.id == originalItem.id
&& _isUserOwner(item)
......@@ -53,7 +55,7 @@ class EquallyDistributedApiEndpoint extends CheckedDbApiEndpoint<EquallyDistribu
);
}
Future<bool> _deleteItemAllowed(EquallyDistributedPayment item) {
Future<bool> _deleteItemAllowed(EquallyDistributedPaymentResponse item) {
return Future.value(
_isUserOwner(item)
);
......
import 'package:api/model/payment/user_to_user.dart';
import 'package:api/model/interface/payment/user_to_user.dart';
import 'package:api/model/request/payment/user_to_user.dart';
import 'package:api/model/response/payment/user_to_user.dart';
import 'package:api/model/user.dart';
import 'package:lib/lib.dart';
class UserToUserPaymentApiEndpoint extends CheckedDbApiEndpoint<UserToUserPayment, UserToUserPayment> {
class UserToUserPaymentApiEndpoint extends CheckedDbApiEndpoint<UserToUserPaymentRequest, UserToUserPaymentResponse> {
final User requestingUser;
@override
Future<bool> Function(UserToUserPayment) get createItemAllowed => _createItemAllowed;
Future<bool> Function(UserToUserPaymentRequest) get createItemAllowed => _createItemAllowed;
@override
Future<bool> Function(UserToUserPayment) get getItemAllowed => _getItemAllowed;
Future<bool> Function(UserToUserPaymentResponse) get getItemAllowed => _getItemAllowed;
@override
Future<bool> Function(UserToUserPayment, UserToUserPayment) get updateItemAllowed => _updateItemAllowed;
Future<bool> Function(UserToUserPaymentRequest, UserToUserPaymentResponse) get updateItemAllowed => _updateItemAllowed;
@override
Future<bool> Function(UserToUserPayment) get deleteItemAllowed => _deleteItemAllowed;
Future<bool> Function(UserToUserPaymentResponse) get deleteItemAllowed => _deleteItemAllowed;
UserToUserPaymentApiEndpoint({
required super.database,
......@@ -24,7 +26,7 @@ class UserToUserPaymentApiEndpoint extends CheckedDbApiEndpoint<UserToUserPaymen
required this.requestingUser,
});
Future<bool> _createItemAllowed(UserToUserPayment item) {
Future<bool> _createItemAllowed(UserToUserPaymentRequest item) {
return Future.value(
_isUserPayer(item)
&& _isPayerNotPayee(item)
......@@ -32,14 +34,14 @@ class UserToUserPaymentApiEndpoint extends CheckedDbApiEndpoint<UserToUserPaymen
);
}
Future<bool> _getItemAllowed(UserToUserPayment item) {
Future<bool> _getItemAllowed(UserToUserPaymentResponse item) {
return Future.value(
_isUserPayer(item)
|| _isUserPayee(item)
);
}
Future<bool> _updateItemAllowed(UserToUserPayment item, UserToUserPayment originalItem) {
Future<bool> _updateItemAllowed(UserToUserPaymentRequest item, UserToUserPaymentResponse originalItem) {
return Future.value(
item.id == originalItem.id
&& _isUserPayer(item)
......@@ -49,7 +51,7 @@ class UserToUserPaymentApiEndpoint extends CheckedDbApiEndpoint<UserToUserPaymen
);
}
Future<bool> _deleteItemAllowed(UserToUserPayment item) {
Future<bool> _deleteItemAllowed(UserToUserPaymentResponse item) {
return Future.value(
_isUserPayer(item)
);
......
import 'package:api/model/request/point.dart';
import 'package:api/model/response/point.dart';
import 'package:lib/lib.dart';
import 'package:api/model/point.dart';
class PointApiEndpoint extends DbApiEndpoint<Point, Point> {
class PointApiEndpoint extends DbApiEndpoint<PointRequest, PointResponse> {
PointApiEndpoint({
required super.database,
required super.itemFromRequest,
......@@ -9,17 +10,17 @@ class PointApiEndpoint extends DbApiEndpoint<Point, Point> {
});
@override
Stream<Point> getAll() {
Stream<PointResponse> getAll() {
throw ApiActionForbiddenException("get all", "point");
}
@override
Future<Point> delete(String id) {
Future<PointResponse> delete(String id) {
throw ApiActionForbiddenException("delete", "point");
}
@override
Future<Point> update(Point item) {
Future<PointResponse> update(PointRequest item) {
throw ApiActionForbiddenException("put", "point");
}
}
import 'package:api/model/route.dart';
import 'package:api/model/interface/route.dart';
import 'package:api/model/request/route.dart';
import 'package:api/model/response/route.dart';
import 'package:api/model/team.dart';
import 'package:api/model/user.dart';
import 'package:lib/lib.dart';
class RouteApiEndpoint extends CheckedDbApiEndpoint<Route, Route> {
class RouteApiEndpoint extends CheckedDbApiEndpoint<RouteRequest, RouteResponse> {
final User requestingUser;
final Iterable<Team> requestingUserTeams;
@override
Future<bool> Function(Route) get createItemAllowed => _createItemAllowed;
Future<bool> Function(RouteRequest) get createItemAllowed => _createItemAllowed;
@override
Future<bool> Function(Route) get getItemAllowed => _getItemAllowed;
Future<bool> Function(RouteResponse) get getItemAllowed => _getItemAllowed;
@override
Future<bool> Function(Route, Route) get updateItemAllowed => _updateItemAllowed;
Future<bool> Function(RouteRequest, RouteResponse) get updateItemAllowed => _updateItemAllowed;
@override
Future<bool> Function(Route) get deleteItemAllowed => _deleteItemAllowed;
Future<bool> Function(RouteResponse) get deleteItemAllowed => _deleteItemAllowed;
RouteApiEndpoint({
required super.database,
......@@ -27,20 +29,20 @@ class RouteApiEndpoint extends CheckedDbApiEndpoint<Route, Route> {
required this.requestingUserTeams,
});
Future<bool> _createItemAllowed(Route item) {
Future<bool> _createItemAllowed(RouteRequest item) {
return Future.value(
_isUserInTeam(item)
&& _isUserOwner(item)
);
}
Future<bool> _getItemAllowed(Route item) {
Future<bool> _getItemAllowed(RouteResponse item) {
return Future.value(
_isUserOwner(item)
);
}
Future<bool> _updateItemAllowed(Route item, Route originalItem) {
Future<bool> _updateItemAllowed(RouteRequest item, RouteResponse originalItem) {
return Future.value(
item.id == originalItem.id
&& _isUserInTeam(item)
......@@ -49,7 +51,7 @@ class RouteApiEndpoint extends CheckedDbApiEndpoint<Route, Route> {
);
}
Future<bool> _deleteItemAllowed(Route item) {
Future<bool> _deleteItemAllowed(RouteResponse item) {
return Future.value(
_isUserOwner(item)
);
......
......@@ -4,10 +4,11 @@ import 'package:lib/lib.dart';
class TeamApiEndpoint extends ApiEndpoint {
final User requestingUser;
final Stream<Team> Function(User) getTeamsOfUser;
final Future<Team> Function(String) getTeamById;
final Future<bool> Function(User, Team) isUserInTeam;
final Map<String, dynamic> Function(Team) itemToResponse;
TeamApiEndpoint({required this.requestingUser, required this.getTeamsOfUser, required this.itemToResponse});
TeamApiEndpoint({required this.requestingUser, required this.getTeamById, required this.isUserInTeam, required this.itemToResponse});
@override
Future<Map<String, dynamic>> handleDelete(context) {
......@@ -16,9 +17,13 @@ class TeamApiEndpoint extends ApiEndpoint {
@override
Future<Map<String, dynamic>> handleGet(context) async {
var requestingUserTeams = await getTeamsOfUser(requestingUser).toList();
var teamId = teamIdFromContext(context);
var requestedTeam = await getTeamById(teamId);
if (!await isUserInTeam(requestingUser, requestedTeam)) {
throw UnauthorizedException();
}
return listResponse(context, requestingUserTeams, itemToResponse);
return context.res.json(itemToResponse(requestedTeam));
}
@override
......@@ -30,4 +35,8 @@ class TeamApiEndpoint extends ApiEndpoint {
Future<Map<String, dynamic>> handlePut(context) {
throw ApiActionForbiddenException("put", "membership");
}
String teamIdFromContext(final context) {
return ApiHelper.fieldFromRequestBody(context, "teamId");
}
}
import 'dart:convert';
import 'package:api/model/team.dart';
import 'package:api/model/user.dart';
import 'package:lib/lib.dart';
......@@ -43,7 +41,6 @@ class UserApiEndpoint extends ApiEndpoint {
}
String userIdFromContext(final context) {
var map = jsonDecode(context.req.body);
return getRequiredMapItem<String>("userId", map);
return ApiHelper.fieldFromRequestBody(context, "userId");
}
}
import 'package:api/model/request/calendar_event.dart';
import 'package:api/model/response/calendar_event.dart';
import 'package:lib/lib.dart';
import 'package:api/model/calendar_event.dart';
extension CalendarEventDbConverter on CalendarEvent {
class CalendarEventDbConverter {
static const userIdDbFieldName = "userId";
static const teamIdDbFieldName = "teamId";
static const titleDbFieldName = "title";
......@@ -9,20 +10,20 @@ extension CalendarEventDbConverter on CalendarEvent {
static const startDbFieldName = "start";
static const endDbFieldName = "end";
Map<String, dynamic> toDbData() {
static Map<String, dynamic> toDbData(CalendarEventRequest request) {
return {
userIdDbFieldName: userId,
teamIdDbFieldName: teamId,
titleDbFieldName: title,
descriptionDbFieldName: description,
startDbFieldName: start.toIso8601String(),
endDbFieldName: end.toIso8601String(),
userIdDbFieldName: request.userId,
teamIdDbFieldName: request.teamId,
titleDbFieldName: request.title,
descriptionDbFieldName: request.description,
startDbFieldName: request.start.toIso8601String(),
endDbFieldName: request.end.toIso8601String(),
};
}
static CalendarEvent fromDbData(Map<String, dynamic> map) {
return CalendarEvent(
id: getOptionalMapItem(RequestResponseVariables.idFieldName, map),
static CalendarEventResponse fromDbData(Map<String, dynamic> map) {
return CalendarEventResponse(
id: getRequiredMapItem(RequestResponseVariables.idFieldName, map),
userId: getRequiredMapItem(userIdDbFieldName, map),
teamId: getRequiredMapItem(teamIdDbFieldName, map),
title: getRequiredMapItem(titleDbFieldName, map),
......
import 'package:api/converter/payment/team_payment.dart/db_converter.dart';
import 'package:api/converter/route/db_converter.dart';
import 'package:api/model/payment/team.dart';
import 'package:api/model/payment/driven_distance_distributed.dart';
import 'package:api/converter/db_converter/payment/team.dart';
import 'package:api/model/request/payment/driven_distance_distributed.dart';
import 'package:api/model/response/payment/driven_distance_distributed.dart';
import 'package:lib/lib.dart';
extension DrivenDistanceDistributedPaymentDbConverter on DrivenDistanceDistributedPayment {
class DrivenDistanceDistributedPaymentDbConverter {
static const String teamPaymentDbFieldName = "teamPayment";
static const String routesDbFieldName = "routes";
Map<String, dynamic> toDbData() {
static Map<String, dynamic> toDbData(DrivenDistanceDistributedPaymentRequest request) {
return {
teamPaymentDbFieldName: (this as TeamPayment).toDbData(),
routesDbFieldName: routeIds,
teamPaymentDbFieldName: TeamPaymentDbConverter.toDbData(request),
routesDbFieldName: request.routeIds.toList(),
};
}
static DrivenDistanceDistributedPayment fromDbData(Map<String, dynamic> map) {
static DrivenDistanceDistributedPaymentResponse fromDbData(Map<String, dynamic> map) {
var teamPaymentData = getRequiredMapItem<Map<String, dynamic>>(teamPaymentDbFieldName, map);
var teamPayment = TeamPaymentDbConverter.fromDbData(teamPaymentData);
return DrivenDistanceDistributedPayment(
id: getOptionalMapItem(DatabaseVariables.idColumnName, map),
routeIds: getRequiredMapItem<Iterable>(routesDbFieldName, map)
.map((e) => e as Map<String, dynamic>)
.map(RouteDbConverter.fromDbData)
.map((r) => r.id!)
.toList(),
return DrivenDistanceDistributedPaymentResponse(
id: getRequiredMapItem(DatabaseVariables.idColumnName, map),
routeIds: getRequiredMapItem<Iterable>(routesDbFieldName, map).map((e) => e as String),
amount: teamPayment.amount,
teamId: teamPayment.teamId,
createdAt: teamPayment.createdAt,
......
import 'package:api/converter/payment/team_payment.dart/db_converter.dart';
import 'package:api/model/payment/equally_distributed.dart';
import 'package:api/model/payment/team.dart';
import 'package:api/converter/db_converter/payment/team.dart';
import 'package:api/model/request/payment/equally_distributed.dart';
import 'package:api/model/response/payment/equally_distributed.dart';
import 'package:lib/lib.dart';
extension EquallyDistributedPaymentDbConverter on EquallyDistributedPayment {
class EquallyDistributedPaymentDbConverter {
static const String teamPaymentDbFieldName = "teamPayment";
Map<String, dynamic> toDbData() {
static Map<String, dynamic> toDbData(EquallyDistributedPaymentRequest request) {
return {
teamPaymentDbFieldName: (this as TeamPayment).toDbData(),
teamPaymentDbFieldName: TeamPaymentDbConverter.toDbData(request),
};
}
static EquallyDistributedPayment fromDbData(Map<String, dynamic> map) {
static EquallyDistributedPaymentResponse fromDbData(Map<String, dynamic> map) {
var teamPaymentData = getRequiredMapItem<Map<String, dynamic>>(teamPaymentDbFieldName, map);
var teamPayment = TeamPaymentDbConverter.fromDbData(teamPaymentData);
return EquallyDistributedPayment(
return EquallyDistributedPaymentResponse(
id: teamPayment.id,
amount: teamPayment.amount,
teamId: teamPayment.teamId,
......
import 'package:api/model/payment/payment.dart';
import 'package:api/model/request/payment/payment.dart';
extension PaymentDbConverter on Payment {
extension PaymentDbConverter on PaymentRequest {
static const String amountDbFieldName = "amount";
static const String paidByDbFieldName = "paidBy";
Map<String, dynamic> toDbData() {
static Map<String, dynamic> toDbData(PaymentRequest request) {
return {
amountDbFieldName: amount,
paidByDbFieldName: paidBy,
amountDbFieldName: request.amount,
paidByDbFieldName: request.paidBy,
};
}
}
import 'package:api/converter/payment/db_converter.dart';
import 'package:api/model/payment/payment.dart';
import 'package:api/model/payment/team.dart';
import 'package:api/converter/db_converter/payment/payment.dart';
import 'package:api/model/request/payment/team.dart';
import 'package:api/model/response/payment/team.dart';
import 'package:lib/lib.dart';
extension TeamPaymentDbConverter on TeamPayment {
class TeamPaymentDbConverter {
static const String teamIdDbFieldName = "teamId";
static const String paymentFieldName = "payment";
Map<String, dynamic> toDbData() {
static Map<String, dynamic> toDbData(TeamPaymentRequest request) {
return {
teamIdDbFieldName: teamId,
paymentFieldName: (this as Payment).toDbData(),
teamIdDbFieldName: request.teamId,
paymentFieldName: PaymentDbConverter.toDbData(request),
};
}
static TeamPayment fromDbData(Map<String, dynamic> map) {
static TeamPaymentResponse fromDbData(Map<String, dynamic> map) {
var paymentData = getRequiredMapItem<Map<String, dynamic>>(paymentFieldName, map);
return TeamPayment(
return TeamPaymentResponse(
id: getOptionalMapItem(DatabaseVariables.idColumnName, map),
teamId: getRequiredMapItem(teamIdDbFieldName, map),
amount: getRequiredMapItem(PaymentDbConverter.amountDbFieldName, paymentData),
......
import 'package:api/converter/payment/db_converter.dart';
import 'package:api/model/payment/payment.dart';
import 'package:api/model/payment/user_to_user.dart';
import 'package:api/converter/db_converter/payment/payment.dart';
import 'package:api/model/request/payment/user_to_user.dart';
import 'package:api/model/response/payment/user_to_user.dart';
import 'package:lib/lib.dart';
extension UserToUserPaymentDbConverter on UserToUserPayment {
class UserToUserPaymentDbConverter {
static const String paymentDbFieldName = "payment";
static const String paidToDbFieldName = "paidTo";
Map<String, dynamic> toDbData() {
static Map<String, dynamic> toDbData(UserToUserPaymentRequest request) {
return {
paidToDbFieldName: paidTo,
paymentDbFieldName: (this as Payment).toDbData(),
paidToDbFieldName: request.paidTo,
paymentDbFieldName: PaymentDbConverter.toDbData(request),
};
}
static UserToUserPayment fromDbData(Map<String, dynamic> map) {
static UserToUserPaymentResponse fromDbData(Map<String, dynamic> map) {
var paymentData = getRequiredMapItem<Map<String, dynamic>>(paymentDbFieldName, map);
return UserToUserPayment(
id: DatabaseVariables.idColumnName,
return UserToUserPaymentResponse(
id: getRequiredMapItem(DatabaseVariables.idColumnName, map),
paidTo: getRequiredMapItem(paidToDbFieldName, paymentData),
amount: getRequiredMapItem(PaymentDbConverter.amountDbFieldName, paymentData),
paidBy: getRequiredMapItem(PaymentDbConverter.paidByDbFieldName, paymentData),
......
import 'package:api/model/request/point.dart';
import 'package:api/model/response/point.dart';
import 'package:lib/lib.dart';
import 'package:api/model/point.dart';
extension PointDbConverter on Point {
class PointDbConverter {
static const String latitudeDbFieldName = "latitude";
static const String longitudeDbFieldName = "longitude";
Map<String, dynamic> toDbData() {
static Map<String, dynamic> toDbData(PointRequest request) {
return {
latitudeDbFieldName: latitude,
longitudeDbFieldName: longitude,
latitudeDbFieldName: request.latitude,
longitudeDbFieldName: request.longitude,
};
}
static Point fromDbData(Map<String, dynamic> map){
return Point(
static PointResponse fromDbData(Map<String, dynamic> map){
return PointResponse(
id: getRequiredMapItem(DatabaseVariables.idColumnName, map),
latitude: getRequiredMapItem(latitudeDbFieldName, map),
longitude: getRequiredMapItem(longitudeDbFieldName, map),
......
import 'package:api/model/request/route.dart';
import 'package:api/model/response/route.dart';
import 'package:lib/lib.dart';
import 'package:api/model/route.dart';
import 'package:api/converter/point/db_converter.dart';
extension RouteDbConverter on Route {
class RouteDbConverter {
static const String userIdDbFieldName = "userId";
static const String teamIdDbFieldName = "teamId";
static const String pointsDbFieldName = "points";
static const String startTimeDbFieldName = "startTime";
static const String endTimeDbFieldName = "endTime";
Map<String, dynamic> toDbData() {
var pointIds = points.map((e) => e.id).toList(growable: false);
static Map<String, dynamic> toDbData(RouteRequest request) {
return {
pointsDbFieldName: pointIds,
userIdDbFieldName : userId,
teamIdDbFieldName : teamId,
startTimeDbFieldName: startTime.toIso8601String(),
endTimeDbFieldName: endTime.toIso8601String(),
pointsDbFieldName: request.pointIds.toList(),
userIdDbFieldName : request.userId,
teamIdDbFieldName : request.teamId,
startTimeDbFieldName: request.startTime.toIso8601String(),
endTimeDbFieldName: request.endTime.toIso8601String(),
};
}
static Route fromDbData(Map<String, dynamic> map) {
return Route(
static RouteResponse fromDbData(Map<String, dynamic> map) {
return RouteResponse(
id: getOptionalMapItem(DatabaseVariables.idColumnName, map),
points: getRequiredMapItem<Iterable>(pointsDbFieldName, map).map((e) => e as Map<String, dynamic>).map(PointDbConverter.fromDbData).toList(growable: false),
pointIds: getRequiredMapItem<Iterable>(pointsDbFieldName, map).map((e) => e as String),
userId: getRequiredMapItem(userIdDbFieldName, map),
teamId: getOptionalMapItem(teamIdDbFieldName, map),
startTime: DateTime.parse(getRequiredMapItem(startTimeDbFieldName, map)),
......
import 'package:api/converter/payment/team_payment.dart/request_response_converter.dart';
import 'package:api/model/payment/equally_distributed.dart';
import 'package:api/model/payment/team.dart';
extension EquallyDistributedPaymentRequestResponseConverter on EquallyDistributedPayment {
Map<String, dynamic> toResponseData() {
return (this as TeamPayment).toResponseData();
}
static EquallyDistributedPayment fromRequest(Map<String, dynamic> map) {
var teamPayment = TeamPaymentRequestResponseConverter.fromRequest(map);
return EquallyDistributedPayment(
id: teamPayment.id,
amount: teamPayment.amount,
teamId: teamPayment.teamId,
createdAt: teamPayment.createdAt,
paidBy: teamPayment.paidBy,
);
}
}
import 'package:api/model/request/calendar_event.dart';
import 'package:api/model/response/calendar_event.dart';
import 'package:lib/lib.dart';
import 'package:api/model/calendar_event.dart';
extension CalendarEventRequestResponseConverter on CalendarEvent {
class CalendarEventRequestResponseConverter {
static const userIdRequestResponseFieldName = "userId";
static const teamIdRequestResponseFieldName = "teamId";
static const titleRequestResponseFieldName = "title";
......@@ -9,22 +10,22 @@ extension CalendarEventRequestResponseConverter on CalendarEvent {
static const startRequestResponseFieldName = "start";
static const endRequestResponseFieldName = "end";
Map<String, dynamic> toResponseData() {
static Map<String, dynamic> toResponseData(CalendarEventResponse response) {
return {
RequestResponseVariables.idFieldName: id,
userIdRequestResponseFieldName: userId,
teamIdRequestResponseFieldName: teamId,
titleRequestResponseFieldName: title,
descriptionRequestResponseFieldName: description,
startRequestResponseFieldName: start.toIso8601String(),
endRequestResponseFieldName: end.toIso8601String(),
RequestResponseVariables.idFieldName: response.id,
userIdRequestResponseFieldName: response.userId,
teamIdRequestResponseFieldName: response.teamId,
titleRequestResponseFieldName: response.title,
descriptionRequestResponseFieldName: response.description,
startRequestResponseFieldName: response.start.toIso8601String(),
endRequestResponseFieldName: response.end.toIso8601String(),
};
}
static CalendarEvent fromRequest(Map<String, dynamic> map, String userId) {
return CalendarEvent(
static CalendarEventRequest fromRequest(Map<String, dynamic> map) {
return CalendarEventRequest(
id: getOptionalMapItem(RequestResponseVariables.idFieldName, map),
userId: userId,
userId: getRequiredMapItem(userIdRequestResponseFieldName, map),
teamId: getRequiredMapItem(teamIdRequestResponseFieldName, map),
title: getRequiredMapItem(titleRequestResponseFieldName, map),
description: getOptionalMapItem(descriptionRequestResponseFieldName, map),
......
import 'package:api/model/debt.dart';
extension DebtRequestResponseConverter on Debt {
class DebtRequestResponseConverter {
static const String creditorRequestResponseFieldName = "creditor";
static const String debtorRequestResponseFieldName = "debtor";
static const String amountRequestResponseFieldName = "amount";
Map<String, dynamic> toResponseData() {
static Map<String, dynamic> toResponseData(Debt response) {
return {
creditorRequestResponseFieldName: creditor,
debtorRequestResponseFieldName: debtor,
amountRequestResponseFieldName: amount,
creditorRequestResponseFieldName: response.creditor,
debtorRequestResponseFieldName: response.debtor,
amountRequestResponseFieldName: response.amount,
};
}
}
import 'package:api/converter/payment/team_payment.dart/request_response_converter.dart';
import 'package:api/model/payment/driven_distance_distributed.dart';
import 'package:api/model/payment/team.dart';
import 'package:api/converter/request_response/payment/team.dart';
import 'package:api/model/request/payment/driven_distance_distributed.dart';
import 'package:api/model/response/payment/driven_distance_distributed.dart';
import 'package:lib/lib.dart';
extension DrivenDistanceDistributedPaymentRequestResponseConverter on DrivenDistanceDistributedPayment {
class DrivenDistanceDistributedPaymentRequestResponseConverter {
static const String routesRequestResponseFieldName = "routes";
Map<String, dynamic> toResponseData() {
static Map<String, dynamic> toResponseData(DrivenDistanceDistributedPaymentResponse response) {
return {
routesRequestResponseFieldName: routeIds,
...(this as TeamPayment).toResponseData(),
routesRequestResponseFieldName: response.routeIds,
...TeamPaymentRequestResponseConverter.toResponseData(response),
};
}
static DrivenDistanceDistributedPayment fromRequest(Map<String, dynamic> map) {
static DrivenDistanceDistributedPaymentRequest fromRequest(Map<String, dynamic> map) {
var teamPayment = TeamPaymentRequestResponseConverter.fromRequest(map);
return DrivenDistanceDistributedPayment(
return DrivenDistanceDistributedPaymentRequest(
id: getOptionalMapItem(DatabaseVariables.idColumnName, map),
routeIds: getRequiredMapItem<Iterable>(routesRequestResponseFieldName, map).map((e) => e as String).toList(),
amount: teamPayment.amount,
teamId: teamPayment.teamId,
createdAt: teamPayment.createdAt,
paidBy: teamPayment.paidBy,
);
}
......