# Transition Model

## Request

- When requesting `transition.getUserTransitionInfo()` a TransitionInfo model is returned.

**Response**: Returns an [TransitionInfo instance](../../src/models/transition-info.ts).

## Table of Contents

* [Initiate TransitionInfo Class](#Initiate-TransitionInfo-Class)
* [Prototypes](#Prototypes)

### Initiate TransitionInfo Class

```javascript
 const transitionInfoInstance = new TransitionInfo(transitionData);
```

| Parameters  | Required | Type   | Description                              | Example |
| ----------  | -------- | ------ | ---------------------------------------- | --------|
| transitionData | Yes      | Object | Membership transition info data response | see [Membership TransitionInfo Response](../services/TRANSITION.md#getUserTransitionInfo) |

### Prototypes

* [hasOptions](#hasOptions)
* [findMatchingTermOption](#findMatchingTermOption)

#### hasOptions

```javascript
const hasTransitionOptions = transitionInfoInstance.hasOptions();
```

- Returns true if the transition-info result has any options to transition to.

```
	Parameters: none
	Response: boolean
```

#### findMatchingTermOption

```javascript
const matchingOption = transitionInfoInstance.findMatchingTermOption('P1Y');
```

- Returns the first transition option that matches the provided term.

```
	Parameters: term
	Response: TransitionOption
```


### Membership Transition Info Response

```javascript
	{
	"subscriptionNumber": "A-XXXXXXXXXXX",
	"productName": "Premium FT.com",
	"currentTerm": "P1M",
	"currentPrice": 43.00,
	"trialPrice": 1.00,
	"accountNumber": "A00000000",
	"balancePreview": 0.00,
	"currency": "GBP",
	"symbol": "£",
	"billingAccount": {
			"id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
			"userId": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
			"currencyCode": "GBP",
			"status": "Active",
			"paymentMethod": {
					"id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
					"type": "CREDITCARD",
					"creditCard": {
							"expirationMonth": "1",
							"expirationYear": "2025",
							"type": "Visa",
							"maskedNumber": "************1111"
					}
			}
	},
	"upgradeType": "Upgrade",
	"upgradeTypeReason": "Upgrade supported",
	"upgradeOptions": [
		{
			"offerId": "6c7b7f36-0b91-b33b-2257-71d09919ddc4",
			"term": "P1Y",
			"name": "FT.com Premium - RRP",
			"price": 356.00,
			"cost": 356.00,
			"annualSavings": 160.00
	},
	{
			"offerId": "6c7b7f36-0b91-b33b-2257-71d09919ddc4",
			"term": "P1M",
			"name": "FT.com Premium - RRP",
			"price": 43.00,
			"cost": 43.00,
			"annualSavings": 0.00
	}
	]
}
```
