mnemo_cards/mnemo_cards_common_backend/lib/src/models/payment.dart
Dmitry a6abcfa7e6
Some checks failed
Backend CI / test (push) Waiting to run
Backend CI / build (push) Blocked by required conditions
Web App CI / test (push) Waiting to run
Web App CI / build (push) Blocked by required conditions
Deploy Mnemo Cards / Deploy Backend (push) Waiting to run
Deploy Mnemo Cards / Deploy Web App (push) Blocked by required conditions
Deploy Mnemo Cards / Final Verification (push) Blocked by required conditions
Mobile App CI / test (push) Has been cancelled
Deploy Telegram Bot / Deploy Telegram Bot (push) Has been cancelled
Mobile App CI / build-android (push) Has been cancelled
Mobile App CI / build-ios (push) Has been cancelled
repo
2026-01-08 19:07:56 +03:00

119 lines
3 KiB
Dart

import 'package:json_annotation/json_annotation.dart';
import 'package:copy_with_extension/copy_with_extension.dart';
import 'package:mnemo_cards_common/mnemo_cards_common.dart';
import 'product_model.dart';
part 'payment.g.dart';
@CopyWith()
class PaymentModel {
String? id;
final String amount;
final String currency;
@JsonKey(unknownEnumValue: PaymentStatus.unknown)
final PaymentStatus status;
@JsonKey(unknownEnumValue: PaymentSystem.unknown)
final PaymentSystem paymentSystem;
final String? externalToken;
final String? meta;
final DateTime date;
final String userId;
final List<MnemoCardsProductModelBase> products;
PaymentModel({
required this.amount,
required this.currency,
required this.status,
required this.paymentSystem,
required this.userId,
required this.date,
required this.products,
this.externalToken,
this.meta,
this.id,
});
// Model to reserve id for future payment
factory PaymentModel.empty({
required String userId,
required DateTime date,
}) =>
PaymentModel(
amount: '',
currency: '',
status: PaymentStatus.created,
paymentSystem: PaymentSystem.unknown,
products: [],
userId: userId,
date: date,
);
factory PaymentModel.promocode({
required String userId,
required DateTime date,
required List<MnemoCardsProductModel> products,
}) =>
PaymentModel(
amount: '0',
currency: 'PROMO',
status: PaymentStatus.succeeded,
paymentSystem: PaymentSystem.promoCode,
userId: userId,
date: DateTime.now(),
products: products.toBaseList(),
);
factory PaymentModel.adView({
required String userId,
required DateTime date,
required List<MnemoCardsProductModel> products,
}) =>
PaymentModel(
amount: '0',
currency: 'AD_PROMO',
status: PaymentStatus.succeeded,
paymentSystem: PaymentSystem.adView,
userId: userId,
date: DateTime.now(),
products: products.toBaseList(),
);
PaymentModel.yooKassa({
required this.amount,
required this.currency,
required this.userId,
required this.externalToken,
required this.date,
required this.products,
this.meta,
this.id,
}) : paymentSystem = PaymentSystem.yookassa,
status = PaymentStatus.created;
PaymentModel.google({
required this.amount,
required this.currency,
required this.userId,
required this.externalToken,
required this.date,
required this.products,
this.meta,
this.id,
this.status = PaymentStatus.created,
}) : paymentSystem = PaymentSystem.google;
PaymentModel.rustore({
required this.amount,
required this.currency,
required this.userId,
required this.externalToken,
required this.date,
required this.products,
this.meta,
this.id,
this.status = PaymentStatus.created,
}) : paymentSystem = PaymentSystem.rustore;
}