update database
This commit is contained in:
235
DOMAIN_ENTITIES_SUMMARY.md
Normal file
235
DOMAIN_ENTITIES_SUMMARY.md
Normal file
@@ -0,0 +1,235 @@
|
||||
# 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 `const` when possible
|
||||
- `copyWith()` method for creating modified copies
|
||||
|
||||
### Value Equality
|
||||
- Proper `==` operator override
|
||||
- `hashCode` override using `Object.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 `displayName` getters
|
||||
- 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` → `String` or `String?`
|
||||
- `numeric` → `double`
|
||||
- `integer` → `int`
|
||||
- `boolean` → `bool`
|
||||
- `timestamp` → `DateTime`
|
||||
- `date` → `DateTime`
|
||||
- `jsonb` → `Map<String, dynamic>` or typed classes
|
||||
- `inet` → `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:
|
||||
1. Data layer model creation (extending entities with JSON serialization)
|
||||
2. Repository interface definitions
|
||||
3. Use case implementation
|
||||
4. Provider/state management integration
|
||||
|
||||
All entities follow clean architecture principles with no external dependencies.
|
||||
Reference in New Issue
Block a user