Skip to content

Commit 951be22

Browse files
committed
Merge pull request #109 from teamsnap/notify-team-of-events-import
Bulk create and notify events
2 parents 734c9e1 + 6905a05 commit 951be22

File tree

10 files changed

+173
-10
lines changed

10 files changed

+173
-10
lines changed

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
# TeamSnap JavaScript SDK CHANGELOG
22

3+
### Feb 4, 2016 // Version 1.8.0
4+
- Adds `bulkCreateEvents` method.
5+
6+
---
7+
38
### Jan 26, 2016 // Version 1.7.6
49
- Addresses bug where, When saving a `statistic`, its `statisticGroup` may be incorrectly unlinked.
510

docs/collections/events.md

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
- [deleteEvent](#deleteEvent)
99
- [sendAvailabilityReminders](#sendAvailabilityReminders)
1010
- [getEventSort](#getEventSort)
11+
- [bulkCreateEvents](#bulkCreateEvents)
1112

1213

1314
---
@@ -163,3 +164,38 @@ _none_
163164
eventArray.sort(teamsnap.getEventSort());
164165

165166
```
167+
168+
169+
---
170+
<a id="bulkCreateEvents"></a>
171+
## `bulkCreateEvents(params, callback)`
172+
Creates multiple events.
173+
174+
### Params
175+
* `params`: [object] - Object that contains additional data:
176+
* `teamId`: [int] - Id of Team the events are for
177+
* `events`: [array] - Array of event objects to create
178+
* `sendingMemberId`: [int] - Id of member that notify email will come from (optional).
179+
* `notifyTeam` - [bool] - Flag indictating if notify email should be sent to team.
180+
* `callback`: [function] - callback to be executed when the operation completes.
181+
182+
### Examples
183+
```javascript
184+
// ~~~~~
185+
// Creates multiple events for `teamId: 1` and sends a notify email to team.
186+
teamsnap.bulkCreateEvents({
187+
teamId: 1,
188+
events: [{
189+
teamId: 1,
190+
locationId: 1,
191+
opponentId: 1
192+
isGame: true,
193+
startDate: new Date()
194+
},
195+
sendingMemberId: 1,
196+
notifyTeam: true
197+
});
198+
```
199+
200+
201+
---

lib/teamsnap.js

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1063,6 +1063,23 @@ exports.getEventSort = function() {
10631063
})(this);
10641064
};
10651065

1066+
exports.bulkCreateEvents = function(params, callback) {
1067+
var options;
1068+
if (!params.teamId) {
1069+
return this.reject('You must choose a team.', 'teamId', callback);
1070+
}
1071+
if (!Array.isArray(params.events)) {
1072+
throw new TSArgsError('teamsnap.bulkCreateEvents', "`events` must be an array of events");
1073+
}
1074+
options = {
1075+
templates: params.events,
1076+
teamId: params.teamId,
1077+
notifyTeamAsMemberId: params.sendingMemberId,
1078+
notifyTeam: params.notifyTeam
1079+
};
1080+
return this.collections.events.exec('bulkCreate', options, callback);
1081+
};
1082+
10661083
});
10671084

10681085
require.register("collections/facebookPages", function(exports, require, module) {
@@ -5749,7 +5766,7 @@ ref = require('./model'), Collection = ref.Collection, Item = ref.Item;
57495766
require('./errors');
57505767

57515768
TeamSnap = (function() {
5752-
TeamSnap.prototype.version = '1.7.6';
5769+
TeamSnap.prototype.version = '1.8.0';
57535770

57545771
TeamSnap.prototype.promises = promises;
57555772

lib/teamsnap.min.js

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/test/js/test.js

Lines changed: 48 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5282,13 +5282,60 @@ describe('Event Statistics', function() {
52825282

52835283
require.register("test/events", function(exports, require, module) {
52845284
describe('Events', function() {
5285-
return it('should be able to load all events for team', function(done) {
5285+
var location, member;
5286+
member = null;
5287+
location = null;
5288+
before(function(done) {
5289+
location = teamsnap.createLocation();
5290+
location.teamId = team.id;
5291+
location.name = "Location";
5292+
return teamsnap.saveLocation(location, function(err, result) {
5293+
return done();
5294+
});
5295+
});
5296+
before(function(done) {
5297+
member = teamsnap.createMember();
5298+
member.teamId = team.id;
5299+
member.firstName = 'Test';
5300+
return teamsnap.saveMember(member, function(err, result) {
5301+
return done();
5302+
});
5303+
});
5304+
after(function(done) {
5305+
return teamsnap.deleteMember(member, function(err, result) {
5306+
expect(err).to.be["null"];
5307+
return done();
5308+
});
5309+
});
5310+
it('should be able to load all events for team', function(done) {
52865311
return teamsnap.loadEvents(team.id, function(err, result) {
52875312
expect(err).to.be["null"];
52885313
result.should.be.an('array');
52895314
return done();
52905315
});
52915316
});
5317+
return it('should be able to bulk create events', function(done) {
5318+
var events, params;
5319+
events = [
5320+
{
5321+
startDate: "2012-01-01",
5322+
name: "Test",
5323+
teamId: team.id,
5324+
locationId: location.id
5325+
}
5326+
];
5327+
params = {
5328+
events: events,
5329+
teamId: team.id,
5330+
sendingMemberId: member.id,
5331+
notifyTeam: false
5332+
};
5333+
return teamsnap.bulkCreateEvents(params, function(err, result) {
5334+
expect(err).to.be["null"];
5335+
result.should.be.an('array');
5336+
return done();
5337+
});
5338+
});
52925339
});
52935340

52945341
});

lib/test/js/test.min.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "teamsnap.js",
3-
"version": "1.7.6",
3+
"version": "1.8.0",
44
"description": "A JavaScript library for using the TeamSnap API.",
55
"author": "Jacob Wright with TeamSnap (http://www.teamsnap.com)",
66
"homepage": "https://github.com/teamsnap/teamsnap-javascript-sdk",

src/collections/events.coffee

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,3 +121,17 @@ exports.getEventSort = ->
121121
if valueA > valueB then 1
122122
else if valueA < valueB then -1
123123
else 0
124+
125+
exports.bulkCreateEvents = (params, callback) ->
126+
unless params.teamId
127+
return @reject 'You must choose a team.', 'teamId', callback
128+
unless Array.isArray(params.events)
129+
throw new TSArgsError 'teamsnap.bulkCreateEvents', "`events` must
130+
be an array of events"
131+
132+
options =
133+
templates: params.events
134+
teamId: params.teamId
135+
notifyTeamAsMemberId: params.sendingMemberId
136+
notifyTeam: params.notifyTeam
137+
@collections.events.exec('bulkCreate', options, callback)

src/teamsnap.coffee

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ promises = require './promises'
33
require './errors'
44

55
class TeamSnap
6-
version: '1.7.6'
6+
version: '1.8.0'
77
promises: promises
88
when: promises.when
99
TeamSnap: TeamSnap

test/events.coffee

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,51 @@
11
describe 'Events', ->
22

3+
member = null
4+
location = null
5+
6+
before (done) ->
7+
location = teamsnap.createLocation()
8+
location.teamId = team.id
9+
location.name = "Location"
10+
teamsnap.saveLocation location, (err, result) ->
11+
done()
12+
13+
before (done) ->
14+
member = teamsnap.createMember()
15+
member.teamId = team.id
16+
member.firstName = 'Test'
17+
teamsnap.saveMember member, (err, result) ->
18+
done()
19+
20+
after (done) ->
21+
teamsnap.deleteMember member, (err, result) ->
22+
expect(err).to.be.null
23+
done()
24+
325
it 'should be able to load all events for team', (done) ->
426
teamsnap.loadEvents team.id, (err, result) ->
27+
expect(err).to.be.null
28+
result.should.be.an('array')
29+
done()
30+
31+
it 'should be able to bulk create events', (done) ->
32+
events = [
33+
{
34+
startDate: "2012-01-01",
35+
name: "Test",
36+
teamId: team.id,
37+
locationId: location.id
38+
}
39+
]
40+
41+
params = {
42+
events: events,
43+
teamId: team.id,
44+
sendingMemberId: member.id,
45+
notifyTeam: false
46+
}
47+
48+
teamsnap.bulkCreateEvents params, (err, result) ->
549
expect(err).to.be.null
650
result.should.be.an('array')
751
done()

0 commit comments

Comments
 (0)