<commit_before>![EventForce](http://i.imgur.com/yPT45Wp.png)

A Salesforce integration built on-top of NodeJS and Angular (4+). The integration allows Salesforce administrators to create events, sessions and attendees through their Salesforce instance. Users (non-salesforce) can view available events and event details through the Angular app. They may register to an event, which will tie back into the Salesforce environment.

### Technologies
- Angular (4+)
- NodeJS
- Protractor/Jasmine (Testing)
- TypeScript
- ReactiveJS (@ngrx in Angular)
- JSForce (connect NodeJS to SalesForce API)

## Getting Started
1. Run `npm run setup` from the root directory.
2. Run `npm start.server` to initialize the server locally at `http://localhost:3000`.
3. Build the front-end with `npm run build.client`.
4. _Optional:_ If developing you can use the proxy with `npm run start.client` and opening up `http://localhost:4200`.

### SalesForce Schema
**Event**

The representation of events that users can register to.

|Field Label|API Name|Data Type|Description|
|--|--|--|--|
|Event Name|`Name`|Text(80)|The Event's displayed name.|
|Description|`Description__c`|Rich Text Area(32768)|The description of the event.|
|Start|`Start__c`|Date/Time|The Event's start time.|
|End|`End__c`|Date/Time|The Event's end time.|
|Status|`Status__c`|Picklist|The Event's availability status.|
|Registration Limit|`Registration_Limit__c`|Number(18, 0)|The maximum number of allowed attendees.|
|Remaining Seats|`Remaining_Seats__c`|Number(18, 0)|The number of available open seats for registration.|

---

**Session**

The representation of sessions under an event that users can register to.

|Field Label|API Name|Data Type|Description|
|--|--|--|--|
|Session Name|`Name`|Text(80)|The Session's displayed name.|
|Start|`Start__c`|Date/Time|The Sessions's start time.|
|End|`End__c`|Date/Time|The Sessions's end time.|
|Status|`Status__c`|Picklist|The Sessions's availability status.|
|Registration Limit|`Registration_Limit__c`|Number(18, 0)|The maximum number of allowed attendees.|
|Event|`Event__c`|Master-Detail(Event)|The relationship join to the parent Event.|

---

**Attendee**

The representation of a user attending a session and/or event.

|Field Label|API Name|Data Type|Description|
|--|--|--|--|
|First Name|`First_Name__c`|Text(180)|The attendee's first name.|
|Last Name|`Last_Name__c`|Text(255)|The attendee's last name.|
|Company|`Company__c`|Text(255)|_Optional:_ The attendee's company name.
|Phone|`Phone__c`|Phone|_Optional:_ The attendees contact number.|
|Email|`Email__c`|Email|The attendees email address.|
|Event|`Event__c`|Master-Detail(Event)|The relationship join to the attending events.|
|Session|`Session_c`|Master-Detail(Session)|The relationship join to the attending sessions.|

### Testing

**Front-end**

1. Navigate to the client directory `cd app/client`.
2. Run the Angular-CLI testing suite: `ng test`.


# Contributors

[<img alt="<NAME>" src="https://avatars1.githubusercontent.com/u/13732623?v=3&s=117" width="117">](https://github.com/sean-perkins) |
:---:
|[<NAME>](https://github.com/sean-perkins)|
<commit_msg>Update README with example image<commit_after>![EventForce](http://i.imgur.com/yPT45Wp.png)

A Salesforce integration built on-top of NodeJS and Angular (4+). The integration allows Salesforce administrators to create events, sessions and attendees through their Salesforce instance. Users (non-salesforce) can view available events and event details through the Angular app. They may register to an event, which will tie back into the Salesforce environment.

### Technologies
- Angular (4+)
- NodeJS
- Protractor/Jasmine (Testing)
- TypeScript
- ReactiveJS (@ngrx in Angular)
- JSForce (connect NodeJS to SalesForce API)

## Getting Started
1. Run `npm run setup` from the root directory.
2. Run `npm start.server` to initialize the server locally at `http://localhost:3000`.
3. Build the front-end with `npm run build.client`.
4. _Optional:_ If developing you can use the proxy with `npm run start.client` and opening up `http://localhost:4200`.

## Example Images
![Event Listings](http://i.imgur.com/iL19aUl.png)

### SalesForce Schema
**Event**

The representation of events that users can register to.

|Field Label|API Name|Data Type|Description|
|--|--|--|--|
|Event Name|`Name`|Text(80)|The Event's displayed name.|
|Description|`Description__c`|Rich Text Area(32768)|The description of the event.|
|Start|`Start__c`|Date/Time|The Event's start time.|
|End|`End__c`|Date/Time|The Event's end time.|
|Status|`Status__c`|Picklist|The Event's availability status.|
|Registration Limit|`Registration_Limit__c`|Number(18, 0)|The maximum number of allowed attendees.|
|Remaining Seats|`Remaining_Seats__c`|Number(18, 0)|The number of available open seats for registration.|

---

**Session**

The representation of sessions under an event that users can register to.

|Field Label|API Name|Data Type|Description|
|--|--|--|--|
|Session Name|`Name`|Text(80)|The Session's displayed name.|
|Start|`Start__c`|Date/Time|The Sessions's start time.|
|End|`End__c`|Date/Time|The Sessions's end time.|
|Status|`Status__c`|Picklist|The Sessions's availability status.|
|Registration Limit|`Registration_Limit__c`|Number(18, 0)|The maximum number of allowed attendees.|
|Event|`Event__c`|Master-Detail(Event)|The relationship join to the parent Event.|

---

**Attendee**

The representation of a user attending a session and/or event.

|Field Label|API Name|Data Type|Description|
|--|--|--|--|
|First Name|`First_Name__c`|Text(180)|The attendee's first name.|
|Last Name|`Last_Name__c`|Text(255)|The attendee's last name.|
|Company|`Company__c`|Text(255)|_Optional:_ The attendee's company name.
|Phone|`Phone__c`|Phone|_Optional:_ The attendees contact number.|
|Email|`Email__c`|Email|The attendees email address.|
|Event|`Event__c`|Master-Detail(Event)|The relationship join to the attending events.|
|Session|`Session_c`|Master-Detail(Session)|The relationship join to the attending sessions.|

### Testing

**Front-end**

1. Navigate to the client directory `cd app/client`.
2. Run the Angular-CLI testing suite: `ng test`.


# Contributors

[<img alt="<NAME>" src="https://avatars1.githubusercontent.com/u/13732623?v=3&s=117" width="117">](https://github.com/sean-perkins) |
:---:
|[<NAME>](https://github.com/sean-perkins)|

{'fraction_non_alphanumeric': 0.14106189129751806, 'fraction_numerical': 0.019478479421929, 'mean_word_length': 5.780617678381256, 'pattern_counts': {'":': 0, '<': 9, '<?xml version=': 0, '>': 9, 'https://': 6, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 1, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '843561', 'n_tokens_mistral': 2143, 'n_tokens_neox': 1950, 'n_words': 610}