# Form Distribution
## Data Model
### FormDistribution
- Id
- FormId
- StartTime: `datetime`
- CreatedBy: `UserId`
- CreatedAt: `datetime`
- UpdatedBy: `UserId`
- UpdateAt: `datetime`
- ApprovedBy: `UserId`
- [TODO]: Rename `ApprovedBy` to `AuditedBy` to support both (Approval and Rejection)
- ApprovedAt: `datetime`
- IsActive: `bool`
- ApprovalStatus: `Pending(0), Approved(1), Rejected(2)`
- Dev Default: `Internal: Approved, External: Approved`
- MCIT Default: `Internal: Approved, External: Pending`
- Type: `Internal(0), External(1)`
- InternalTargets: `Departments(0), Users(1)`
- Departments: `Table [DistributionId, DepartmentName]`
- Users: `Table [DistributionId, UserId]`
- Channels: `Table <FormDistributionChannels>`
- Status: [Computed Property]`Disabled(0), Pending(1), Active(2), Expired(3), Rejected(4)`
- Channel: [tmp Computed Property] `Single Channel` `Channels.FirstOrDefault()`
### FormDistributionChannels
- Id
- DistributionId
- Template: `string(HTML)`
- ExternalTatgets: `string(comma sperated)`
- Internal: `Null`
- External: `Required`
- Channel:
- Dev: `Email(0)`
- MCIT: `Email(0), SMS(1), WhatsApp(2)`
## UI
### Admin Form Distribution Requests (MCIT)
#### Operations
- View Details (Page)
- Approve (Popup Yes,No)
- Reject (Popup Yes,No)
#### List (Order, Paging, NoFilter)
- FormName
- CreatedBy
- StartTime
- Type
- **... operations**
### User Form Distribution
#### Operations
- Add (Page)
- View Details (Page)
- Edit (Page)
- Delete (Popup Yes,No)
- Activate (Popup Yes,No)
- DeActivate (Popup Yes,No)
#### List (Order, Paging, NoFilter)
- StartTime
- Type
- Status
- Target
- **... operations**