order page

This commit is contained in:
efrilm
2025-10-27 21:55:19 +07:00
parent b8eefcbac0
commit 8bd61eb58e
38 changed files with 8795 additions and 89 deletions
+154
View File
@@ -0,0 +1,154 @@
part of '../order.dart';
@freezed
class ListOrder with _$ListOrder {
const factory ListOrder({
required List<Order> orders,
required int totalCount,
required int page,
required int limit,
required int totalPages,
}) = _ListOrder;
factory ListOrder.empty() =>
ListOrder(orders: [], totalCount: 0, page: 0, limit: 0, totalPages: 0);
}
@freezed
class Order with _$Order {
const factory Order({
required String id,
required String orderNumber,
required String outletId,
required String userId,
required String tableNumber,
required String orderType,
required String status,
required int subtotal,
required int taxAmount,
required int discountAmount,
required int totalAmount,
required num totalCost,
required int remainingAmount,
required String paymentStatus,
required int refundAmount,
required bool isVoid,
required bool isRefund,
required String notes,
required Map<String, dynamic> metadata,
required DateTime createdAt,
required DateTime updatedAt,
required List<OrderItem> orderItems,
required List<PaymentOrder> payments,
required int totalPaid,
required int paymentCount,
required String splitType,
}) = _Order;
factory Order.empty() => Order(
id: '',
orderNumber: '',
outletId: '',
userId: '',
tableNumber: '',
orderType: '',
status: '',
subtotal: 0,
taxAmount: 0,
discountAmount: 0,
totalAmount: 0,
totalCost: 0,
remainingAmount: 0,
paymentStatus: '',
refundAmount: 0,
isVoid: false,
isRefund: false,
notes: '',
metadata: const {},
createdAt: DateTime(1970),
updatedAt: DateTime(1970),
orderItems: const [],
payments: const [],
totalPaid: 0,
paymentCount: 0,
splitType: '',
);
}
@freezed
class OrderItem with _$OrderItem {
const factory OrderItem({
required String id,
required String orderId,
required String productId,
required String productName,
required String productVariantId,
required String productVariantName,
required int quantity,
required int unitPrice,
required int totalPrice,
required List<dynamic> modifiers,
required String notes,
required String status,
required DateTime createdAt,
required DateTime updatedAt,
required String printerType,
required int paidQuantity,
}) = _OrderItem;
factory OrderItem.empty() => OrderItem(
id: '',
orderId: '',
productId: '',
productName: '',
productVariantId: '',
productVariantName: '',
quantity: 0,
unitPrice: 0,
totalPrice: 0,
modifiers: const [],
notes: '',
status: '',
createdAt: DateTime(1970),
updatedAt: DateTime(1970),
printerType: '',
paidQuantity: 0,
);
}
@freezed
class PaymentOrder with _$PaymentOrder {
const factory PaymentOrder({
required String id,
required String orderId,
required String paymentMethodId,
required String paymentMethodName,
required String paymentMethodType,
required int amount,
required String status,
required int splitNumber,
required int splitTotal,
required String splitDescription,
required int refundAmount,
required Map<String, dynamic> metadata,
required DateTime createdAt,
required DateTime updatedAt,
}) = _PaymentOrder;
factory PaymentOrder.empty() => PaymentOrder(
id: '',
orderId: '',
paymentMethodId: '',
paymentMethodName: '',
paymentMethodType: '',
amount: 0,
status: '',
splitNumber: 0,
splitTotal: 0,
splitDescription: '',
refundAmount: 0,
metadata: const {},
createdAt: DateTime(1970),
updatedAt: DateTime(1970),
);
}
@@ -0,0 +1,12 @@
part of '../order.dart';
@freezed
sealed class OrderFailure with _$OrderFailure {
const factory OrderFailure.serverError(ApiFailure failure) = _ServerError;
const factory OrderFailure.unexpectedError() = _UnexpectedError;
const factory OrderFailure.empty() = _Empty;
const factory OrderFailure.localStorageError(String erroMessage) =
_LocalStorageError;
const factory OrderFailure.dynamicErrorMessage(String erroMessage) =
_DynamicErrorMessage;
}
+10
View File
@@ -0,0 +1,10 @@
import 'package:dartz/dartz.dart';
import 'package:freezed_annotation/freezed_annotation.dart';
import '../../common/api/api_failure.dart';
part 'order.freezed.dart';
part 'entities/order_entity.dart';
part 'failures/order_failure.dart';
part 'repositories/i_order_repository.dart';
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,12 @@
part of '../order.dart';
abstract class IOrderRepository {
Future<Either<OrderFailure, ListOrder>> getOrders({
int page = 1,
int limit = 10,
String status = 'completed',
required DateTime startDate,
required DateTime endDate,
String? search,
});
}