@myclub_se/data-access 2.7.4 → 2.7.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -128,11 +128,12 @@ class ActivityInvite {
128
128
  }
129
129
 
130
130
  class ActivityLocationTag {
131
- constructor(id, club_id, section_id, name) {
131
+ constructor(id, club_id, section_id, name, location_names = []) {
132
132
  this.id = id;
133
133
  this.club_id = club_id;
134
134
  this.section_id = section_id;
135
135
  this.name = name;
136
+ this.location_names = location_names;
136
137
  }
137
138
  static asFormGroup(tag) {
138
139
  return new FormGroup({
@@ -223,13 +224,27 @@ class ActivitySettings {
223
224
  }
224
225
 
225
226
  class ActivityType {
226
- constructor(id, club_id, section_id, active, base_type, name) {
227
+ constructor(id, club_id, section_id, active, base_type, name, is_available_for_booking = true, color = '#FFFFFF') {
227
228
  this.id = id;
228
229
  this.club_id = club_id;
229
230
  this.section_id = section_id;
230
231
  this.active = active;
231
232
  this.base_type = base_type;
232
233
  this.name = name;
234
+ this.is_available_for_booking = is_available_for_booking;
235
+ this.color = color;
236
+ }
237
+ static asFormGroup(type) {
238
+ return new FormGroup({
239
+ id: new FormControl(type?.id || ''),
240
+ club_id: new FormControl(type?.club_id || ''),
241
+ section_id: new FormControl(type?.section_id || ''),
242
+ active: new FormControl(typeof type?.active === 'undefined' ? true : type?.active),
243
+ base_type: new FormControl(type?.base_type || ''),
244
+ name: new FormControl(type?.name || '', Validators.required),
245
+ is_available_for_booking: new FormControl(typeof type?.is_available_for_booking === 'undefined' ? true : type?.is_available_for_booking),
246
+ color: new FormControl(type?.color || '#FFFFFF'),
247
+ });
233
248
  }
234
249
  }
235
250
 
@@ -289,30 +304,36 @@ class Authentication {
289
304
  }
290
305
 
291
306
  class BookingCalendar {
292
- constructor(id, club_id, section_id, team_id, club_name, color, name, section_name, team_name, status) {
307
+ constructor(id, club_id, section_id, team_id, club_name, name, section_name, team_name, status, location_groups) {
293
308
  this.id = id;
294
309
  this.club_id = club_id;
295
310
  this.section_id = section_id;
296
311
  this.team_id = team_id;
297
312
  this.club_name = club_name;
298
- this.color = color;
299
313
  this.name = name;
300
314
  this.section_name = section_name;
301
315
  this.team_name = team_name;
302
316
  this.status = status;
317
+ this.location_groups = location_groups;
303
318
  }
304
319
  static asFormGroup(calendar) {
320
+ const locationGroups = [];
321
+ if (calendar?.location_groups) {
322
+ calendar.location_groups.forEach((locationGroup) => {
323
+ locationGroups.push(ActivityLocationGroup.asFormGroup(locationGroup));
324
+ });
325
+ }
305
326
  return new FormGroup({
306
327
  id: new FormControl(calendar?.id || ''),
307
328
  club_id: new FormControl(calendar?.club_id || ''),
308
329
  section_id: new FormControl(calendar?.section_id || ''),
309
330
  team_id: new FormControl(calendar?.team_id || ''),
310
331
  club_name: new FormControl(calendar?.club_name || ''),
311
- color: new FormControl(calendar?.color || '', Validators.required),
312
332
  name: new FormControl(calendar?.name || '', Validators.required),
313
333
  section_name: new FormControl(calendar?.section_name || ''),
314
334
  team_name: new FormControl(calendar?.team_name || ''),
315
335
  status: new FormControl(calendar?.status || 'preliminary'),
336
+ location_groups: new FormArray(locationGroups),
316
337
  });
317
338
  }
318
339
  }
@@ -1560,7 +1581,7 @@ const unpaidInvoiceFactory = (apiUnpaidInvoice) => new UnpaidMemberInvoice(apiUn
1560
1581
  const activityInviteFactory = (apiActivityInvite) => new ActivityInvite(apiActivityInvite.id, activityFactory(apiActivityInvite.activity), apiActivityInvite.comment, apiActivityInvite.created, apiActivityInvite.has_unpaid_invoices, apiActivityInvite.last_invite, apiActivityInvite.leader, searchMemberFactory(apiActivityInvite.member), apiActivityInvite.next_invite, apiActivityInvite.reminded, apiActivityInvite.response_date, apiActivityInvite.status, apiActivityInvite.token, apiActivityInvite.unpaid_invoices && apiActivityInvite.unpaid_invoices.length ? apiActivityInvite.unpaid_invoices.map((apiUnpaidInvoice) => unpaidInvoiceFactory(apiUnpaidInvoice)) : [], apiActivityInvite.updated);
1561
1582
 
1562
1583
  const activityLocationTagFactory = (apiActivityLocationTag) => {
1563
- return new ActivityLocationTag(apiActivityLocationTag.id, apiActivityLocationTag.club_id, apiActivityLocationTag.section_id, apiActivityLocationTag.name);
1584
+ return new ActivityLocationTag(apiActivityLocationTag.id, apiActivityLocationTag.club_id, apiActivityLocationTag.section_id, apiActivityLocationTag.name, apiActivityLocationTag.location_names);
1564
1585
  };
1565
1586
 
1566
1587
  const activityLocationPartFactory = (apiActivityLocationPart) => {
@@ -1575,7 +1596,7 @@ const activityLocationGroupFactory = (apiActivityLocationGroup) => {
1575
1596
 
1576
1597
  const activitySettingsFactory = (apiActivitySettings) => new ActivitySettings(apiActivitySettings.day_options, apiActivitySettings.hour_options, apiActivitySettings.invite_group_options, apiActivitySettings.invite_settings_options, apiActivitySettings.max_attendance_options, apiActivitySettings.meet_up_time_options, apiActivitySettings.remind_receiver_options, apiActivitySettings.repeat_options, apiActivitySettings.repeat_type_options);
1577
1598
 
1578
- const activityTypeFactory = (apiActivityType) => new ActivityType(apiActivityType.id, apiActivityType.club_id, apiActivityType.section_id, apiActivityType.active, apiActivityType.base_type, apiActivityType.name);
1599
+ const activityTypeFactory = (apiActivityType) => new ActivityType(apiActivityType.id, apiActivityType.club_id, apiActivityType.section_id, apiActivityType.active, apiActivityType.base_type, apiActivityType.name, apiActivityType.is_available_for_booking, apiActivityType.color);
1579
1600
 
1580
1601
  const authSectionFactory = (apiAuthSection) => new AuthSection(apiAuthSection.id, apiAuthSection.name);
1581
1602
 
@@ -1587,7 +1608,7 @@ const authTeamFactory = (apiAuthTeam) => new AuthTeam(apiAuthTeam.id, apiAuthTea
1587
1608
 
1588
1609
  const authFactory = (apiAuth) => new Auth(apiAuth.id, apiAuth.name, apiAuth.club_admin, apiAuth.is_section_club, apiAuth.members.map((apiAuthMember) => authMemberFactory(apiAuthMember)), apiAuth.registration_enabled, apiAuth.sections.map((apiAuthSection) => authSectionFactory(apiAuthSection)), apiAuth.site_enabled, apiAuth.teams.map((apiAuthTeam) => authTeamFactory(apiAuthTeam)), apiAuth.user_name);
1589
1610
 
1590
- const bookingCalendarFactory = (apiBookingCalendar) => new BookingCalendar(apiBookingCalendar.id, apiBookingCalendar.club_id, apiBookingCalendar.section_id, apiBookingCalendar.team_id, apiBookingCalendar.club_name, apiBookingCalendar.color, apiBookingCalendar.name, apiBookingCalendar.section_name, apiBookingCalendar.team_name, apiBookingCalendar.status);
1611
+ const bookingCalendarFactory = (apiBookingCalendar) => new BookingCalendar(apiBookingCalendar.id, apiBookingCalendar.club_id, apiBookingCalendar.section_id, apiBookingCalendar.team_id, apiBookingCalendar.club_name, apiBookingCalendar.name, apiBookingCalendar.section_name, apiBookingCalendar.team_name, apiBookingCalendar.status, apiBookingCalendar.location_groups && apiBookingCalendar.location_groups.length ? apiBookingCalendar.location_groups.map((apiActivityLocationGroup) => activityLocationGroupFactory(apiActivityLocationGroup)) : []);
1591
1612
 
1592
1613
  const bookingCalendarApplicationTimeFactory = (apiBookingApplicationTime) => new BookingCalendarApplicationTime(apiBookingApplicationTime.id, apiBookingApplicationTime.section_id, apiBookingApplicationTime.slot_id, apiBookingApplicationTime.team_id, apiBookingApplicationTime.end_time, apiBookingApplicationTime.section_name, apiBookingApplicationTime.start_time, apiBookingApplicationTime.team_name, apiBookingApplicationTime.location_zones_taken, apiBookingApplicationTime.applicant_comment, apiBookingApplicationTime.reviewer_comment, apiBookingApplicationTime.status, apiBookingApplicationTime.location_part_id, apiBookingApplicationTime.location_part_name, apiBookingApplicationTime.location_id, apiBookingApplicationTime.repeat, apiBookingApplicationTime.activity_type_id);
1593
1614
 
@@ -1801,8 +1822,10 @@ const CLUB_ACTIVITY_LOCATION_PATH = ':clubId/activities/locations/:locationId/';
1801
1822
  const CLUB_ACTIVITY_LOCATION_GROUPS_PATH = ':clubId/activities/locations/groups/';
1802
1823
  const CLUB_ACTIVITY_LOCATION_GROUP_PATH = ':clubId/activities/locations/groups/:groupId/';
1803
1824
  const CLUB_ACTIVITY_LOCATION_TAGS_PATH = ':clubId/activities/locations/tags/';
1825
+ const CLUB_ACTIVITY_LOCATION_TAG_PATH = ':clubId/activities/locations/tags/:tagId/';
1804
1826
  const CLUB_ACTIVITY_LOCATION_PARTS_PATH = ':clubId/activities/locations/:locationId/parts/';
1805
1827
  const CLUB_ACTIVITY_TYPES_PATH = ':clubId/activities/types/';
1828
+ const CLUB_ACTIVITY_TYPE_PATH = ':clubId/activities/types/:typeId/';
1806
1829
  const TEAM_ACTIVITY_LOCATIONS_PATH = ':teamId/activities/locations/';
1807
1830
  const TEAM_ACTIVITY_LOCATION_GROUPS_PATH = ':teamId/activities/locations/groups/';
1808
1831
  const TEAM_ACTIVITY_LOCATION_TAGS_PATH = ':teamId/activities/locations/tags/';
@@ -1812,8 +1835,10 @@ const SECTION_ACTIVITY_LOCATION_PATH = ':sectionId/activities/locations/:locatio
1812
1835
  const SECTION_ACTIVITY_LOCATION_GROUPS_PATH = ':sectionId/activities/locations/groups/';
1813
1836
  const SECTION_ACTIVITY_LOCATION_GROUP_PATH = ':sectionId/activities/locations/groups/:groupId/';
1814
1837
  const SECTION_ACTIVITY_LOCATION_TAGS_PATH = ':sectionId/activities/locations/tags/';
1838
+ const SECTION_ACTIVITY_LOCATION_TAG_PATH = ':sectionId/activities/locations/tags/:tagId/';
1815
1839
  const SECTION_ACTIVITY_LOCATION_PARTS_PATH = ':sectionId/activities/locations/:locationId/parts/';
1816
1840
  const SECTION_ACTIVITY_TYPES_PATH = ':sectionId/activities/types/';
1841
+ const SECTION_ACTIVITY_TYPE_PATH = ':sectionId/activities/types/:typeId/';
1817
1842
  class ActivityService {
1818
1843
  constructor(apiService) {
1819
1844
  this.apiService = apiService;
@@ -2057,6 +2082,46 @@ class ActivityService {
2057
2082
  teamId,
2058
2083
  }, tag);
2059
2084
  }
2085
+ updateActivityLocationTag(role, clubOrSectionOrTeamId, tag) {
2086
+ if (role == Role.ClubAdmin) {
2087
+ return this.updateClubActivityLocationTag(clubOrSectionOrTeamId, tag);
2088
+ }
2089
+ return this.updateSectionActivityLocationTag(clubOrSectionOrTeamId, tag);
2090
+ }
2091
+ updateClubActivityLocationTag(clubId, tag) {
2092
+ return this.apiService
2093
+ .updateResource(activityLocationTagFactory, Role.ClubAdmin, CLUB_ACTIVITY_LOCATION_TAG_PATH, {
2094
+ clubId,
2095
+ tagId: tag.id,
2096
+ }, tag);
2097
+ }
2098
+ updateSectionActivityLocationTag(sectionId, tag) {
2099
+ return this.apiService
2100
+ .updateResource(activityLocationTagFactory, Role.SectionAdmin, SECTION_ACTIVITY_LOCATION_TAG_PATH, {
2101
+ sectionId,
2102
+ tagId: tag.id,
2103
+ }, tag);
2104
+ }
2105
+ deleteActivityLocationTag(role, clubOrSectionOrTeamId, tag) {
2106
+ if (role == Role.ClubAdmin) {
2107
+ return this.deleteClubActivityLocationTag(clubOrSectionOrTeamId, tag);
2108
+ }
2109
+ return this.deleteSectionActivityLocationTag(clubOrSectionOrTeamId, tag);
2110
+ }
2111
+ deleteClubActivityLocationTag(clubId, tag) {
2112
+ return this.apiService
2113
+ .deleteResource(Role.ClubAdmin, CLUB_ACTIVITY_LOCATION_TAG_PATH, {
2114
+ clubId,
2115
+ tagId: tag.id,
2116
+ });
2117
+ }
2118
+ deleteSectionActivityLocationTag(sectionId, tag) {
2119
+ return this.apiService
2120
+ .deleteResource(Role.SectionAdmin, SECTION_ACTIVITY_LOCATION_TAG_PATH, {
2121
+ sectionId,
2122
+ tagId: tag.id,
2123
+ });
2124
+ }
2060
2125
  getActivityLocationParts(role, clubOrSectionOrTeamId, locationId) {
2061
2126
  if (role == Role.ClubAdmin) {
2062
2127
  return this.getClubActivityLocationParts(clubOrSectionOrTeamId, locationId);
@@ -2137,6 +2202,26 @@ class ActivityService {
2137
2202
  return this.apiService
2138
2203
  .getCollection(activityTypeFactory, Role.SectionAdmin, SECTION_ACTIVITY_TYPES_PATH, { sectionId }, { params: { limit: 'null' } });
2139
2204
  }
2205
+ updateActivityType(role, clubOrSectionOrTeamId, activityType) {
2206
+ if (role === Role.ClubAdmin) {
2207
+ return this.updateClubActivityType(clubOrSectionOrTeamId, activityType);
2208
+ }
2209
+ return this.updateSectionActivityType(clubOrSectionOrTeamId, activityType);
2210
+ }
2211
+ updateClubActivityType(clubId, activityType) {
2212
+ return this.apiService
2213
+ .updateResource(activityTypeFactory, Role.ClubAdmin, CLUB_ACTIVITY_TYPE_PATH, {
2214
+ clubId,
2215
+ typeId: activityType.id,
2216
+ }, activityType);
2217
+ }
2218
+ updateSectionActivityType(sectionId, activityType) {
2219
+ return this.apiService
2220
+ .updateResource(activityTypeFactory, Role.SectionAdmin, SECTION_ACTIVITY_TYPE_PATH, {
2221
+ sectionId,
2222
+ typeId: activityType.id,
2223
+ }, activityType);
2224
+ }
2140
2225
  getTeamCalendarEvents(teamId, startDate = null, endDate = null) {
2141
2226
  const params = { limit: 'null' };
2142
2227
  if (startDate) {
@@ -2255,7 +2340,7 @@ const TEAM_BOOKING_CALENDAR_SLOT_SESSION_PATH = ':teamId/activities/sessions/:id
2255
2340
  const TEAM_BOOKING_CALENDAR_APPLICATION_TIMES_PATH = ':teamId/activities/application-times/';
2256
2341
  const TEAM_BOOKING_CALENDAR_APPLICATION_TIME_PATH = ':teamId/activities/application-times/:id/';
2257
2342
  class BookingSlotFilter {
2258
- constructor(startDate = null, endDate = null, calendarIds = null, locationIds = null, tagIds = null, teamIds = null, locationGroupIds = null, hasOpenSessions = null) {
2343
+ constructor(startDate = null, endDate = null, calendarIds = [], locationIds = [], tagIds = [], teamIds = [], locationGroupIds = [], hasOpenSessions = null) {
2259
2344
  this.startDate = startDate;
2260
2345
  this.endDate = endDate;
2261
2346
  this.calendarIds = calendarIds;
@@ -2265,6 +2350,9 @@ class BookingSlotFilter {
2265
2350
  this.locationGroupIds = locationGroupIds;
2266
2351
  this.hasOpenSessions = hasOpenSessions;
2267
2352
  }
2353
+ static fromFilter(filter) {
2354
+ return new this(filter.startDate, filter.endDate, filter.calendarIds, filter.locationIds, filter.tagIds, filter.teamIds, filter.locationGroupIds, filter.hasOpenSessions);
2355
+ }
2268
2356
  toParams() {
2269
2357
  const params = { limit: 'null' };
2270
2358
  if (this.startDate) {