7.4 KiB
Domain Entities Summary
This document provides an overview of all domain entities created based on the database schema.
Created Domain Entities by Feature
1. Auth Feature (/lib/features/auth/domain/entities/)
-
user.dart - User account with authentication and loyalty information
- Enums: UserRole, UserStatus, LoyaltyTier
- Supporting class: CompanyInfo
-
user_session.dart - Active user session with device information
2. Products Feature (/lib/features/products/domain/entities/)
-
product.dart - Product catalog item (UPDATED to match database schema)
- Product with images, specifications, 360 view, ERPNext integration
-
stock_level.dart - Inventory stock level for products
- Available, reserved, and ordered quantities
-
category.dart - Product category (existing)
3. Cart Feature (/lib/features/cart/domain/entities/)
-
cart.dart - Shopping cart
- Cart-level totals and sync status
-
cart_item.dart - Individual cart item
- Product reference, quantity, pricing
4. Orders Feature (/lib/features/orders/domain/entities/)
-
order.dart - Customer order
- Enums: OrderStatus
- Supporting class: Address
-
order_item.dart - Order line item
- Product, quantity, pricing, discounts
-
invoice.dart - Invoice for orders
- Enums: InvoiceType, InvoiceStatus
- Payment tracking
-
payment_line.dart - Payment transaction
- Enums: PaymentMethod, PaymentStatus
- Bank details, receipts
5. Loyalty Feature (/lib/features/loyalty/domain/entities/)
-
loyalty_point_entry.dart - Points transaction
- Enums: EntryType, EntrySource, ComplaintStatus
- Points earned/spent tracking
-
gift_catalog.dart - Redeemable gift catalog
- Enums: GiftCategory
- Availability and validity tracking
-
redeemed_gift.dart - User-redeemed gift
- Enums: GiftStatus
- Voucher codes, QR codes, expiry
-
points_record.dart - User-submitted invoice for points
- Enums: PointsStatus
- Invoice submission and approval
6. Projects Feature (/lib/features/projects/domain/entities/)
-
project_submission.dart - Completed project submission
- Enums: ProjectType, SubmissionStatus
- Before/after photos, points earning
-
design_request.dart - Design consultation request
- Enums: DesignStatus
- Project requirements, designer assignment
7. Quotes Feature (/lib/features/quotes/domain/entities/)
-
quote.dart - Price quotation
- Enums: QuoteStatus
- Supporting class: DeliveryAddress
-
quote_item.dart - Quote line item
- Price negotiation, discounts
8. Chat Feature (/lib/features/chat/domain/entities/)
-
chat_room.dart - Chat conversation room
- Enums: RoomType
- Participants, context (order/quote)
-
message.dart - Chat message
- Enums: ContentType
- Attachments, read status, product references
9. Notifications Feature (/lib/features/notifications/domain/entities/)
- notification.dart - User notification
- Type-based notifications (order, loyalty, promotion, system)
- Read status, push delivery
10. Showrooms Feature (/lib/features/showrooms/domain/entities/)
-
showroom.dart - Virtual showroom display
- 360 views, gallery, metadata
-
showroom_product.dart - Product used in showroom
- Quantity tracking
11. Account Feature (/lib/features/account/domain/entities/)
-
payment_reminder.dart - Invoice payment reminder
- Enums: ReminderType
- Scheduling and delivery tracking
-
audit_log.dart - System audit trail
- Action tracking, change history
12. Home Feature (/lib/features/home/domain/entities/)
-
member_card.dart - Membership card (existing)
- Enums: MemberTier, MemberType
-
promotion.dart - Promotion (existing)
Entity Design Patterns
All entities follow these consistent patterns:
Immutability
- All fields are
final - Constructor uses
constwhen possible copyWith()method for creating modified copies
Value Equality
- Proper
==operator override hashCodeoverride usingObject.hash()toString()method for debugging
Business Logic
- Computed properties (getters) for derived values
- Boolean checks (e.g.,
isActive,isExpired) - Helper methods for common operations
Type Safety
- Enums for status/type fields with
displayNamegetters - Nullable types (
?) where appropriate - List/Map types for collections and JSONB fields
Documentation
- Comprehensive documentation comments
- Feature-level context
- Field descriptions
Database Field Mapping
All entities map 1:1 with database schema:
varchar→StringorString?numeric→doubleinteger→intboolean→booltimestamp→DateTimedate→DateTimejsonb→Map<String, dynamic>or typed classesinet→String?text→String?- Arrays →
List<T>
Enums Created
Auth
- UserRole (customer, sales, admin, accountant, designer)
- UserStatus (pending, active, suspended, rejected)
- LoyaltyTier (none, gold, platinum, diamond)
Orders
- OrderStatus (draft, confirmed, processing, ready, shipped, delivered, completed, cancelled, returned)
- InvoiceType (standard, proforma, creditNote, debitNote)
- InvoiceStatus (draft, submitted, partiallyPaid, paid, overdue, cancelled)
- PaymentMethod (cash, bankTransfer, creditCard, ewallet, check, other)
- PaymentStatus (pending, processing, completed, failed, refunded, cancelled)
Loyalty
- EntryType (earn, redeem, adjustment, expiry)
- EntrySource (order, referral, redemption, project, pointsRecord, manual, birthday, welcome, other)
- ComplaintStatus (none, submitted, reviewing, approved, rejected)
- GiftCategory (voucher, product, service, discount, other)
- GiftStatus (active, used, expired, cancelled)
- PointsStatus (pending, approved, rejected)
Projects
- ProjectType (residential, commercial, industrial, infrastructure, other)
- SubmissionStatus (pending, reviewing, approved, rejected)
- DesignStatus (pending, assigned, inProgress, completed, cancelled)
Quotes
- QuoteStatus (draft, sent, accepted, rejected, expired, converted)
Chat
- RoomType (direct, group, support, order, quote)
- ContentType (text, image, file, product, system)
Account
- ReminderType (initial, dueDate, firstOverdue, secondOverdue, finalWarning)
Key Features
ERPNext Integration
Many entities include ERPNext reference fields:
erpnextCustomerId(User)erpnextItemCode(Product)erpnextSalesOrder(Order)erpnextInvoice(Invoice)erpnextPaymentEntry(PaymentLine)erpnextQuotation(Quote)erpnextEntryId(LoyaltyPointEntry)
Address Handling
Reusable address classes for different contexts:
Address(Order entity)DeliveryAddress(Quote entity)- Both with JSON serialization support
Attachment Management
List-based attachment fields for multiple files:
- User attachments (ID cards, licenses)
- Project photos (before/after)
- Points record invoices
- Design request references
- Chat message files
Audit Trail Support
- Creation timestamps (
createdAt) - Update timestamps (
updatedAt) - User tracking (
createdBy,processedBy,reviewedBy) - Change tracking (AuditLog entity)
Next Steps
These domain entities are ready for:
- Data layer model creation (extending entities with JSON serialization)
- Repository interface definitions
- Use case implementation
- Provider/state management integration
All entities follow clean architecture principles with no external dependencies.