From 6de6661394a0e6695cae5f26bce64af528c26547 Mon Sep 17 00:00:00 2001 From: Achintha Isuru Date: Sat, 21 Feb 2026 20:53:27 -0500 Subject: [PATCH] feat: add OrderType enum and integrate orderType in OrderItem and ViewOrdersCubit --- .../packages/domain/lib/krow_domain.dart | 1 + .../lib/src/entities/orders/order_item.dart | 7 +++++ .../lib/src/entities/orders/order_type.dart | 30 +++++++++++++++++++ .../view_orders_repository_impl.dart | 1 + .../presentation/blocs/view_orders_cubit.dart | 1 + 5 files changed, 40 insertions(+) create mode 100644 apps/mobile/packages/domain/lib/src/entities/orders/order_type.dart diff --git a/apps/mobile/packages/domain/lib/krow_domain.dart b/apps/mobile/packages/domain/lib/krow_domain.dart index 74199646..7fcca148 100644 --- a/apps/mobile/packages/domain/lib/krow_domain.dart +++ b/apps/mobile/packages/domain/lib/krow_domain.dart @@ -40,6 +40,7 @@ export 'src/entities/orders/recurring_order.dart'; export 'src/entities/orders/recurring_order_position.dart'; export 'src/entities/orders/permanent_order.dart'; export 'src/entities/orders/permanent_order_position.dart'; +export 'src/entities/orders/order_type.dart'; export 'src/entities/orders/order_item.dart'; // Skills & Certs diff --git a/apps/mobile/packages/domain/lib/src/entities/orders/order_item.dart b/apps/mobile/packages/domain/lib/src/entities/orders/order_item.dart index 8dea0ee5..0a9d0d69 100644 --- a/apps/mobile/packages/domain/lib/src/entities/orders/order_item.dart +++ b/apps/mobile/packages/domain/lib/src/entities/orders/order_item.dart @@ -1,5 +1,7 @@ import 'package:equatable/equatable.dart'; +import 'order_type.dart'; + /// Represents a customer's view of an order or shift. /// /// This entity captures the details necessary for the dashboard/view orders screen, @@ -9,6 +11,7 @@ class OrderItem extends Equatable { const OrderItem({ required this.id, required this.orderId, + required this.orderType, required this.title, required this.clientName, required this.status, @@ -31,6 +34,9 @@ class OrderItem extends Equatable { /// Parent order identifier. final String orderId; + /// The type of order (e.g., ONE_TIME, PERMANENT). + final OrderType orderType; + /// Title or name of the role. final String title; @@ -77,6 +83,7 @@ class OrderItem extends Equatable { List get props => [ id, orderId, + orderType, title, clientName, status, diff --git a/apps/mobile/packages/domain/lib/src/entities/orders/order_type.dart b/apps/mobile/packages/domain/lib/src/entities/orders/order_type.dart new file mode 100644 index 00000000..f4385b5b --- /dev/null +++ b/apps/mobile/packages/domain/lib/src/entities/orders/order_type.dart @@ -0,0 +1,30 @@ +/// Defines the type of an order. +enum OrderType { + /// A single occurrence shift. + oneTime, + + /// A long-term or permanent staffing position. + permanent, + + /// Shifts that repeat on a defined schedule. + recurring, + + /// A quickly created shift. + rapid; + + /// Creates an [OrderType] from a string value (typically from the backend). + static OrderType fromString(String value) { + switch (value.toUpperCase()) { + case 'ONE_TIME': + return OrderType.oneTime; + case 'PERMANENT': + return OrderType.permanent; + case 'RECURRING': + return OrderType.recurring; + case 'RAPID': + return OrderType.rapid; + default: + return OrderType.oneTime; + } + } +} diff --git a/apps/mobile/packages/features/client/orders/view_orders/lib/src/data/repositories/view_orders_repository_impl.dart b/apps/mobile/packages/features/client/orders/view_orders/lib/src/data/repositories/view_orders_repository_impl.dart index 49a99455..99068d25 100644 --- a/apps/mobile/packages/features/client/orders/view_orders/lib/src/data/repositories/view_orders_repository_impl.dart +++ b/apps/mobile/packages/features/client/orders/view_orders/lib/src/data/repositories/view_orders_repository_impl.dart @@ -63,6 +63,7 @@ class ViewOrdersRepositoryImpl implements IViewOrdersRepository { return domain.OrderItem( id: _shiftRoleKey(shiftRole.shiftId, shiftRole.roleId), orderId: shiftRole.shift.order.id, + orderType: domain.OrderType.fromString(shiftRole.shift.order.orderType.stringValue), title: '${shiftRole.role.name} - $eventName', clientName: businessName, status: status, diff --git a/apps/mobile/packages/features/client/orders/view_orders/lib/src/presentation/blocs/view_orders_cubit.dart b/apps/mobile/packages/features/client/orders/view_orders/lib/src/presentation/blocs/view_orders_cubit.dart index 81c3ba32..697cca50 100644 --- a/apps/mobile/packages/features/client/orders/view_orders/lib/src/presentation/blocs/view_orders_cubit.dart +++ b/apps/mobile/packages/features/client/orders/view_orders/lib/src/presentation/blocs/view_orders_cubit.dart @@ -178,6 +178,7 @@ class ViewOrdersCubit extends Cubit return OrderItem( id: order.id, orderId: order.orderId, + orderType: order.orderType, title: order.title, clientName: order.clientName, status: status,