# Sub Dictionary: `tbl_UserPrograms`

## Table Info

| Property | Value |
|----------|-------|
| Table | `tbl_UserPrograms` |
| Database | quitsure |
| Connection | `mysql` |
| Engine | InnoDB |
| Type | TABLE |
| Category | User |
| Laravel Model | `UserProgram` (app/Models/UserProgram.php) |

## Columns

| # | Column | Type | Nullable | Default | Key | Extra | Description |
|---|--------|------|----------|---------|-----|-------|-------------|
| 1 | `iUserProgramID` | `int unsigned` | NO | - | PRI | auto_increment | Integer: User Program ID (likely FK) |
| 2 | `iUserID` | `int unsigned` | YES | NULL | MUL | - | Integer: User ID (likely FK) |
| 3 | `iProgramID` | `int unsigned` | YES | NULL | MUL | - | Integer: Program ID (likely FK) |
| 4 | `dDateCreated` | `datetime` | YES | `CURRENT_TIMESTAMP` | - | DEFAULT_GENERATED | Datetime: Date Created |
| 5 | `vSubscriptionID` | `varchar(1000)` | YES | NULL | MUL | - | Varchar: Subscription ID |
| 6 | `dFirstSubDate` | `datetime` | YES | NULL | MUL | - | Datetime: First Sub Date |
| 7 | `bSubscribed` | `tinyint(1)` | NO | `0` | MUL | - | Boolean/Flag: Subscribed |
| 8 | `dExpiryDate` | `datetime` | YES | NULL | MUL | - | Datetime: Expiry Date |
| 9 | `bPreviouslySubscribed` | `tinyint(1)` | NO | `0` | - | - | Boolean/Flag: Previously Subscribed |
| 10 | `vPlatform` | `varchar(100)` | YES | NULL | MUL | - | Varchar: Platform |
| 11 | `iActiveDayID` | `int unsigned` | YES | `18` | - | - | Integer: Active Day ID (likely FK) |
| 12 | `vProductId` | `varchar(100)` | YES | NULL | MUL | - | Varchar: Product Id |
| 13 | `vSubScreen` | `varchar(100)` | YES | NULL | - | - | Varchar: Sub Screen |
| 14 | `vLabel` | `varchar(100)` | YES | NULL | - | - | Varchar: Label |
| 15 | `bRefund` | `varchar(50)` | YES | `0` | - | - | Boolean/Flag: Refund |
| 16 | `dRenewalDate` | `datetime` | YES | NULL | - | - | Datetime: Renewal Date |
| 17 | `vIntroSubSkip` | `varchar(50)` | YES | NULL | - | - | Varchar: Intro Sub Skip |
| 18 | `vSessionId` | `varchar(1000)` | YES | NULL | - | - | Varchar: Session Id |
| 19 | `bFreeTrial` | `tinyint` | NO | `0` | - | - | Boolean/Flag: Free Trial |
| 20 | `iCouponId` | `int unsigned` | YES | NULL | - | - | Integer: Coupon Id (likely FK) |
| 21 | `bShownFreeTrial` | `tinyint unsigned` | YES | `0` | - | - | Boolean/Flag: Shown Free Trial |
| 22 | `plan_id` | `varchar(200)` | YES | NULL | - | - |  |

## Indexes

| Name | Columns | Unique | Type |
|------|---------|--------|------|
| `idx_tbl_UserPrograms_bSubscribed` | `bSubscribed` | NO | BTREE |
| `idx_tbl_UserPrograms_dExpiryDate` | `dExpiryDate` | NO | BTREE |
| `idx_tbl_userprograms_dFirstSubDate` | `dFirstSubDate` | NO | BTREE |
| `idx_tbl_UserPrograms_iProgramID` | `iProgramID` | NO | BTREE |
| `idx_tbl_UserPrograms_iUserID` | `iUserID` | NO | BTREE |
| `idx_tbl_UserPrograms_iUserID_iProgramID` | `iUserID`, `iProgramID` | NO | BTREE |
| `idx_tbl_UserPrograms_vPlatform` | `vPlatform` | NO | BTREE |
| `idx_tbl_UserPrograms_vProductId` | `vProductId` | NO | BTREE |
| `idx_tbl_UserPrograms_vSubscriptionID` | `vSubscriptionID` | NO | FULLTEXT |
| `PRIMARY` | `iUserProgramID` | YES | BTREE |

## Foreign Keys

### Formal Foreign Keys

None defined.

### Implicit Relationships (from column naming)

| Column | Likely References |
|--------|------------------|
| `iUserID` | `tbl_Users.iUserID` |
| `iProgramID` | `tbl_Programs.iProgramID` |
| `iCouponId` | `tbl_Coupons.iCouponId` |

## Laravel Eloquent Relationships

| Method | Type | Related Model | Foreign Key |
|--------|------|--------------|-------------|
| `program()` | belongsTo | `Program` | `iProgramID` |
| `userProfile()` | belongsTo | `UserProfile` | `iUserID` |
| `user()` | belongsTo | `User` | `iUserID` |
| `userData()` | belongsTo | `UserData` | `iUserId` |
| `userConfig()` | belongsTo | `UserConfig` | `iUserID` |
| `userSource()` | belongsTo | `UserSource` | `iUserSourceId` |
| `userSubHistory()` | belongsTo | `UserSubHistory` | `ID` |
