rotacloud 1.0.6 → 1.0.7

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.
Files changed (47) hide show
  1. package/dist/interfaces/leave.interface.d.ts +4 -4
  2. package/dist/models/group.model.d.ts +1 -0
  3. package/dist/models/group.model.js +1 -0
  4. package/dist/models/leave.model.d.ts +22 -0
  5. package/dist/models/leave.model.js +20 -0
  6. package/dist/models/role.model.d.ts +1 -0
  7. package/dist/models/role.model.js +1 -0
  8. package/dist/rotacloud.d.ts +1 -2
  9. package/dist/rotacloud.js +1 -2
  10. package/dist/services/accounts.service.d.ts +0 -1
  11. package/dist/services/accounts.service.js +1 -1
  12. package/dist/services/attendance.service.d.ts +0 -1
  13. package/dist/services/attendance.service.js +1 -1
  14. package/dist/services/groups.service.d.ts +37 -0
  15. package/dist/services/groups.service.js +36 -0
  16. package/dist/services/index.d.ts +2 -0
  17. package/dist/services/index.js +2 -0
  18. package/dist/services/leave-embargoes.service.d.ts +0 -1
  19. package/dist/services/leave-embargoes.service.js +1 -1
  20. package/dist/services/leave.service.d.ts +0 -1
  21. package/dist/services/leave.service.js +1 -1
  22. package/dist/services/locations.service.d.ts +0 -1
  23. package/dist/services/locations.service.js +1 -1
  24. package/dist/services/roles.service.d.ts +0 -1
  25. package/dist/services/roles.service.js +1 -1
  26. package/dist/services/shifts.service.d.ts +0 -1
  27. package/dist/services/shifts.service.js +1 -1
  28. package/dist/services/users.service.d.ts +0 -1
  29. package/dist/services/users.service.js +1 -1
  30. package/dist/version.js +1 -1
  31. package/package.json +1 -1
  32. package/src/interfaces/leave.interface.ts +4 -4
  33. package/src/models/group.model.ts +2 -0
  34. package/src/models/leave.model.ts +40 -0
  35. package/src/models/role.model.ts +3 -0
  36. package/src/rotacloud.ts +1 -1
  37. package/src/services/accounts.service.ts +0 -4
  38. package/src/services/attendance.service.ts +0 -4
  39. package/src/services/groups.service.ts +79 -0
  40. package/src/services/index.ts +2 -0
  41. package/src/services/leave-embargoes.service.ts +0 -4
  42. package/src/services/leave.service.ts +0 -4
  43. package/src/services/locations.service.ts +0 -4
  44. package/src/services/roles.service.ts +0 -4
  45. package/src/services/shifts.service.ts +0 -4
  46. package/src/services/users.service.ts +0 -4
  47. package/src/version.ts +1 -1
@@ -2,15 +2,15 @@ import { ApiLeaveDate } from './index.js';
2
2
  export interface ApiLeave {
3
3
  id: number;
4
4
  deleted: boolean;
5
- deleted_at: number;
6
- deleted_by: number;
5
+ deleted_at: number | null;
6
+ deleted_by: number | null;
7
7
  type: number;
8
8
  user: number;
9
9
  admin: number;
10
10
  status: string;
11
11
  requested: boolean;
12
- user_message: string;
13
- admin_message: string;
12
+ user_message: string | null;
13
+ admin_message: string | null;
14
14
  start_date: string;
15
15
  start_am_pm: string;
16
16
  end_date: string;
@@ -2,5 +2,6 @@ import { ApiGroup } from '../interfaces/index.js';
2
2
  export declare class Group {
3
3
  id: number;
4
4
  name: string;
5
+ users: number[];
5
6
  constructor(group: ApiGroup);
6
7
  }
@@ -2,5 +2,6 @@ export class Group {
2
2
  constructor(group) {
3
3
  this.id = group.id;
4
4
  this.name = group.name;
5
+ this.users = group.users;
5
6
  }
6
7
  }
@@ -1,6 +1,28 @@
1
1
  import { ApiLeave, ApiLeaveDate } from '../interfaces/index.js';
2
2
  export declare class Leave {
3
3
  id: number;
4
+ type: number;
5
+ user: number;
6
+ start_date: string;
7
+ end_date: string;
4
8
  dates: ApiLeaveDate[];
9
+ paid: boolean;
10
+ status: string;
11
+ requested: boolean;
12
+ admin_message: string | null;
13
+ user_message: string | null;
14
+ deleted: boolean;
15
+ deleted_at: number | null;
16
+ deleted_by: number | null;
17
+ admin: number;
18
+ start_am_pm: string;
19
+ end_am_pm: string;
20
+ hours: {
21
+ [key: string]: number;
22
+ };
23
+ hours_method: string;
24
+ hours_set: boolean;
25
+ requested_at: number;
26
+ replied_at: number;
5
27
  constructor(leave: ApiLeave);
6
28
  }
@@ -1,6 +1,26 @@
1
1
  export class Leave {
2
2
  constructor(leave) {
3
3
  this.id = leave.id;
4
+ this.type = leave.type;
4
5
  this.dates = leave.dates;
6
+ this.user = leave.user;
7
+ this.start_date = leave.start_date;
8
+ this.end_date = leave.end_date;
9
+ this.paid = leave.paid;
10
+ this.status = leave.status;
11
+ this.requested = leave.requested;
12
+ this.admin_message = leave.admin_message;
13
+ this.user_message = leave.user_message;
14
+ this.deleted = leave.deleted;
15
+ this.deleted_at = leave.deleted_at;
16
+ this.deleted_by = leave.deleted_by;
17
+ this.admin = leave.admin;
18
+ this.start_am_pm = leave.start_am_pm;
19
+ this.end_am_pm = leave.end_am_pm;
20
+ this.hours = leave.hours;
21
+ this.hours_method = leave.hours_method;
22
+ this.hours_set = leave.hours_set;
23
+ this.requested_at = leave.requested_at;
24
+ this.replied_at = leave.replied_at;
5
25
  }
6
26
  }
@@ -3,5 +3,6 @@ export declare class Role {
3
3
  id: number;
4
4
  name: string;
5
5
  colour: string;
6
+ users: number[];
6
7
  constructor(role: ApiRole);
7
8
  }
@@ -2,5 +2,6 @@ export class Role {
2
2
  constructor(role) {
3
3
  this.id = role.id;
4
4
  this.name = role.name;
5
+ this.users = role.users;
5
6
  }
6
7
  }
@@ -1,6 +1,5 @@
1
- import { AccountsService, AttendanceService, LeaveEmbargoesService, LeaveRequestService, LeaveService, LocationsService, RolesService, ShiftsService, UsersService } from './services/index.js';
1
+ import { AccountsService, AttendanceService, DaysOffService, LeaveEmbargoesService, LeaveRequestService, LeaveService, LocationsService, RolesService, ShiftsService, UsersService } from './services/index.js';
2
2
  import { SDKConfig } from './interfaces/index.js';
3
- import { DaysOffService } from './services/days-off.service.js';
4
3
  export declare class RotaCloud {
5
4
  static config: SDKConfig;
6
5
  defaultAPIURI: string;
package/dist/rotacloud.js CHANGED
@@ -1,5 +1,4 @@
1
- import { AccountsService, AttendanceService, LeaveEmbargoesService, LeaveRequestService, LeaveService, LocationsService, RolesService, ShiftsService, UsersService, } from './services/index.js';
2
- import { DaysOffService } from './services/days-off.service.js';
1
+ import { AccountsService, AttendanceService, DaysOffService, LeaveEmbargoesService, LeaveRequestService, LeaveService, LocationsService, RolesService, ShiftsService, UsersService, } from './services/index.js';
3
2
  export class RotaCloud {
4
3
  constructor(config) {
5
4
  this.defaultAPIURI = 'https://api.rotacloud.com/v1';
@@ -4,7 +4,6 @@ import { ApiAccount } from '../interfaces/index.js';
4
4
  import { InternalQueryParams } from '../interfaces/query-params/internal-query-params.inteface.js';
5
5
  declare class AccountsService extends Service {
6
6
  private apiPath;
7
- constructor();
8
7
  list(options?: Options<InternalQueryParams>): AsyncGenerator<Account, void, unknown>;
9
8
  listByPage(options?: Options<InternalQueryParams>): AsyncGenerator<import("axios").AxiosResponse<ApiAccount[], any>, any, unknown>;
10
9
  }
@@ -2,7 +2,7 @@ import { Account } from '../models/account.model.js';
2
2
  import { Service } from './index.js';
3
3
  class AccountsService extends Service {
4
4
  constructor() {
5
- super();
5
+ super(...arguments);
6
6
  this.apiPath = '/accounts';
7
7
  }
8
8
  async *list(options) {
@@ -7,7 +7,6 @@ import { InternalQueryParams } from '../interfaces/query-params/internal-query-p
7
7
  declare type RequiredProps = 'user' | 'in_time';
8
8
  declare class AttendanceService extends Service {
9
9
  private apiPath;
10
- constructor();
11
10
  create(data: RequirementsOf<ApiAttendance, RequiredProps>): Promise<Attendance>;
12
11
  create(data: RequirementsOf<ApiAttendance, RequiredProps>, options: {
13
12
  rawResponse: true;
@@ -3,7 +3,7 @@ import { Attendance } from '../models/attendance.model.js';
3
3
  import { ErrorResponse } from '../models/error-response.model.js';
4
4
  class AttendanceService extends Service {
5
5
  constructor() {
6
- super();
6
+ super(...arguments);
7
7
  this.apiPath = '/attendance';
8
8
  }
9
9
  create(data, options) {
@@ -0,0 +1,37 @@
1
+ import { AxiosResponse } from 'axios';
2
+ import { ApiGroup } from '../interfaces/index.js';
3
+ import { Service, Options, RequirementsOf } from './index.js';
4
+ import { InternalQueryParams } from '../interfaces/query-params/internal-query-params.inteface.js';
5
+ import { Group } from '../models/group.model.js';
6
+ import { GroupsQueryParams } from '../interfaces/query-params/groups-query-params.interface.js';
7
+ declare type RequiredProps = 'name';
8
+ declare class GroupsService extends Service {
9
+ private apiPath;
10
+ create(data: RequirementsOf<ApiGroup, RequiredProps>): Promise<Group>;
11
+ create(data: RequirementsOf<ApiGroup, RequiredProps>, options: {
12
+ rawResponse: true;
13
+ params?: InternalQueryParams;
14
+ }): Promise<AxiosResponse<ApiGroup, any>>;
15
+ create(data: RequirementsOf<ApiGroup, RequiredProps>, options: Options<InternalQueryParams>): Promise<Group>;
16
+ get(id: number): Promise<Group>;
17
+ get(id: number, options: {
18
+ rawResponse: true;
19
+ params?: InternalQueryParams;
20
+ }): Promise<AxiosResponse<ApiGroup, any>>;
21
+ get(id: number, options: Options<InternalQueryParams>): Promise<Group>;
22
+ list(options?: Options<GroupsQueryParams & InternalQueryParams>): AsyncGenerator<Group, void, unknown>;
23
+ listByPage(options?: Options<GroupsQueryParams & InternalQueryParams>): AsyncGenerator<AxiosResponse<ApiGroup[], any>, any, unknown>;
24
+ update(id: number, data: Partial<ApiGroup>): Promise<Group>;
25
+ update(id: number, data: Partial<ApiGroup>, options: {
26
+ rawResponse: true;
27
+ params?: InternalQueryParams;
28
+ }): Promise<AxiosResponse<ApiGroup, any>>;
29
+ update(id: number, data: Partial<ApiGroup>, options: Options<InternalQueryParams>): Promise<Group>;
30
+ delete(id: number): Promise<number>;
31
+ delete(id: number, options: {
32
+ rawResponse: true;
33
+ params?: InternalQueryParams;
34
+ }): Promise<AxiosResponse<any, any>>;
35
+ delete(id: number, options: Options<InternalQueryParams>): Promise<number>;
36
+ }
37
+ export { GroupsService };
@@ -0,0 +1,36 @@
1
+ import { Service } from './index.js';
2
+ import { ErrorResponse } from '../models/error-response.model.js';
3
+ import { Group } from '../models/group.model.js';
4
+ class GroupsService extends Service {
5
+ constructor() {
6
+ super(...arguments);
7
+ this.apiPath = '/groups';
8
+ }
9
+ create(data, options) {
10
+ return super.fetch({ url: this.apiPath, data, method: 'POST' }).then((res) => Promise.resolve(options?.rawResponse ? res : new Group(res.data)), (err) => Promise.reject(options?.rawResponse ? err : new ErrorResponse(err)));
11
+ }
12
+ get(id, options) {
13
+ return super.fetch({ url: `${this.apiPath}/${id}` }, options).then((res) => Promise.resolve(options?.rawResponse ? res : new Group(res.data)), (err) => Promise.reject(options?.rawResponse ? err : new ErrorResponse(err)));
14
+ }
15
+ async *list(options) {
16
+ for await (const res of super.iterator({ url: this.apiPath }, options)) {
17
+ yield new Group(res);
18
+ }
19
+ }
20
+ listByPage(options) {
21
+ return super.iterator({ url: this.apiPath }, options).byPage();
22
+ }
23
+ update(id, data, options) {
24
+ return super
25
+ .fetch({
26
+ url: `${this.apiPath}/${id}`,
27
+ data,
28
+ method: 'POST',
29
+ })
30
+ .then((res) => Promise.resolve(options?.rawResponse ? res : new Group(res.data)), (err) => Promise.reject(options?.rawResponse ? err : new ErrorResponse(err)));
31
+ }
32
+ delete(id, options) {
33
+ return super.fetch({ url: `${this.apiPath}/${id}`, method: 'DELETE' }).then((res) => Promise.resolve(options?.rawResponse ? res : res.status), (err) => Promise.reject(options?.rawResponse ? err : new ErrorResponse(err)));
34
+ }
35
+ }
36
+ export { GroupsService };
@@ -1,6 +1,8 @@
1
1
  export * from './service.js';
2
2
  export * from './accounts.service.js';
3
3
  export * from './attendance.service.js';
4
+ export * from './days-off.service.js';
5
+ export * from './groups.service.js';
4
6
  export * from './leave-request.service.js';
5
7
  export * from './leave-embargoes.service.js';
6
8
  export * from './leave.service.js';
@@ -1,6 +1,8 @@
1
1
  export * from './service.js';
2
2
  export * from './accounts.service.js';
3
3
  export * from './attendance.service.js';
4
+ export * from './days-off.service.js';
5
+ export * from './groups.service.js';
4
6
  export * from './leave-request.service.js';
5
7
  export * from './leave-embargoes.service.js';
6
8
  export * from './leave.service.js';
@@ -7,7 +7,6 @@ import { InternalQueryParams } from '../interfaces/query-params/internal-query-p
7
7
  declare type RequiredProps = 'start_date' | 'end_date' | 'users';
8
8
  declare class LeaveEmbargoesService extends Service {
9
9
  private apiPath;
10
- constructor();
11
10
  create(data: RequirementsOf<ApiLeaveEmbargo, RequiredProps>): Promise<LeaveEmbargo>;
12
11
  create(data: RequirementsOf<ApiLeaveEmbargo, RequiredProps>, options: {
13
12
  rawResponse: true;
@@ -3,7 +3,7 @@ import { LeaveEmbargo } from '../models/leave-embargo.model.js';
3
3
  import { ErrorResponse } from '../models/error-response.model.js';
4
4
  class LeaveEmbargoesService extends Service {
5
5
  constructor() {
6
- super();
6
+ super(...arguments);
7
7
  this.apiPath = '/leave_embargoes';
8
8
  }
9
9
  create(data, options) {
@@ -8,7 +8,6 @@ import { LeaveType } from '../models/leave-type.model.js';
8
8
  declare type RequiredProps = 'users' | 'type' | 'start_date' | 'end_date';
9
9
  declare class LeaveService extends Service {
10
10
  private apiPath;
11
- constructor();
12
11
  create(data: RequirementsOf<ApiLeave, RequiredProps>): Promise<Leave[]>;
13
12
  create(data: RequirementsOf<ApiLeave, RequiredProps>, options: {
14
13
  rawResponse: true;
@@ -4,7 +4,7 @@ import { ErrorResponse } from '../models/error-response.model.js';
4
4
  import { LeaveType } from '../models/leave-type.model.js';
5
5
  class LeaveService extends Service {
6
6
  constructor() {
7
- super();
7
+ super(...arguments);
8
8
  this.apiPath = '/leave';
9
9
  }
10
10
  create(data, options) {
@@ -7,7 +7,6 @@ import { InternalQueryParams } from '../interfaces/query-params/internal-query-p
7
7
  declare type RequiredProps = 'name';
8
8
  declare class LocationsService extends Service {
9
9
  private apiPath;
10
- constructor();
11
10
  create(data: RequirementsOf<ApiLocation, RequiredProps>): Promise<Location>;
12
11
  create(data: RequirementsOf<ApiLocation, RequiredProps>, options: {
13
12
  rawResponse: true;
@@ -3,7 +3,7 @@ import { Location } from '../models/location.model.js';
3
3
  import { ErrorResponse } from '../models/error-response.model.js';
4
4
  class LocationsService extends Service {
5
5
  constructor() {
6
- super();
6
+ super(...arguments);
7
7
  this.apiPath = '/locations';
8
8
  }
9
9
  create(data, options) {
@@ -7,7 +7,6 @@ import { InternalQueryParams } from '../interfaces/query-params/internal-query-p
7
7
  declare type RequiredProps = 'name';
8
8
  declare class RolesService extends Service {
9
9
  private apiPath;
10
- constructor();
11
10
  create(data: RequirementsOf<ApiRole, RequiredProps>): Promise<Role>;
12
11
  create(data: RequirementsOf<ApiRole, RequiredProps>, options: {
13
12
  rawResponse: true;
@@ -3,7 +3,7 @@ import { Role } from '../models/role.model.js';
3
3
  import { ErrorResponse } from '../models/error-response.model.js';
4
4
  class RolesService extends Service {
5
5
  constructor() {
6
- super();
6
+ super(...arguments);
7
7
  this.apiPath = '/roles';
8
8
  }
9
9
  create(data, options) {
@@ -7,7 +7,6 @@ import { InternalQueryParams } from '../interfaces/query-params/internal-query-p
7
7
  declare type RequiredProps = 'end_time' | 'start_time' | 'location';
8
8
  declare class ShiftsService extends Service {
9
9
  private apiPath;
10
- constructor();
11
10
  create(data: RequirementsOf<ApiShift, RequiredProps>): Promise<Shift>;
12
11
  create(data: RequirementsOf<ApiShift, RequiredProps>, options: {
13
12
  rawResponse: true;
@@ -3,7 +3,7 @@ import { Shift } from '../models/shift.model.js';
3
3
  import { ErrorResponse } from '../models/error-response.model.js';
4
4
  class ShiftsService extends Service {
5
5
  constructor() {
6
- super();
6
+ super(...arguments);
7
7
  this.apiPath = '/shifts';
8
8
  }
9
9
  create(data, options) {
@@ -7,7 +7,6 @@ import { InternalQueryParams } from '../interfaces/query-params/internal-query-p
7
7
  declare type RequiredProps = 'first_name' | 'last_name';
8
8
  declare class UsersService extends Service {
9
9
  private apiPath;
10
- constructor();
11
10
  create(data: RequirementsOf<ApiUser, RequiredProps>): Promise<User>;
12
11
  create(data: RequirementsOf<ApiUser, RequiredProps>, options: {
13
12
  rawResponse: true;
@@ -3,7 +3,7 @@ import { User } from '../models/user.model.js';
3
3
  import { ErrorResponse } from '../models/error-response.model.js';
4
4
  class UsersService extends Service {
5
5
  constructor() {
6
- super();
6
+ super(...arguments);
7
7
  this.apiPath = '/users';
8
8
  }
9
9
  create(data, options) {
package/dist/version.js CHANGED
@@ -1 +1 @@
1
- export const Version = { version: "1.0.6" };
1
+ export const Version = { version: "1.0.7" };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rotacloud",
3
- "version": "1.0.6",
3
+ "version": "1.0.7",
4
4
  "description": "The RotaCloud SDK for the RotaCloud API",
5
5
  "engines": {
6
6
  "node": ">=14.17.0"
@@ -3,15 +3,15 @@ import { ApiLeaveDate } from './index.js';
3
3
  export interface ApiLeave {
4
4
  id: number;
5
5
  deleted: boolean;
6
- deleted_at: number;
7
- deleted_by: number;
6
+ deleted_at: number | null;
7
+ deleted_by: number | null;
8
8
  type: number;
9
9
  user: number;
10
10
  admin: number;
11
11
  status: string;
12
12
  requested: boolean;
13
- user_message: string;
14
- admin_message: string;
13
+ user_message: string | null;
14
+ admin_message: string | null;
15
15
  start_date: string;
16
16
  start_am_pm: string;
17
17
  end_date: string;
@@ -3,9 +3,11 @@ import { ApiGroup } from '../interfaces/index.js';
3
3
  export class Group {
4
4
  public id: number;
5
5
  public name: string;
6
+ public users: number[];
6
7
 
7
8
  constructor(group: ApiGroup) {
8
9
  this.id = group.id;
9
10
  this.name = group.name;
11
+ this.users = group.users;
10
12
  }
11
13
  }
@@ -2,10 +2,50 @@ import { ApiLeave, ApiLeaveDate } from '../interfaces/index.js';
2
2
 
3
3
  export class Leave {
4
4
  public id: number;
5
+ public type: number;
6
+ public user: number;
7
+ public start_date: string;
8
+ public end_date: string;
5
9
  public dates: ApiLeaveDate[];
10
+ public paid: boolean;
11
+ public status: string;
12
+ public requested: boolean;
13
+ public admin_message: string | null;
14
+ public user_message: string | null;
15
+ public deleted: boolean;
16
+ public deleted_at: number | null;
17
+ public deleted_by: number | null;
18
+ public admin: number;
19
+ public start_am_pm: string;
20
+ public end_am_pm: string;
21
+ public hours: { [key: string]: number };
22
+ public hours_method: string;
23
+ public hours_set: boolean;
24
+ public requested_at: number;
25
+ public replied_at: number;
6
26
 
7
27
  constructor(leave: ApiLeave) {
8
28
  this.id = leave.id;
29
+ this.type = leave.type;
9
30
  this.dates = leave.dates;
31
+ this.user = leave.user;
32
+ this.start_date = leave.start_date;
33
+ this.end_date = leave.end_date;
34
+ this.paid = leave.paid;
35
+ this.status = leave.status;
36
+ this.requested = leave.requested;
37
+ this.admin_message = leave.admin_message;
38
+ this.user_message = leave.user_message;
39
+ this.deleted = leave.deleted;
40
+ this.deleted_at = leave.deleted_at;
41
+ this.deleted_by = leave.deleted_by;
42
+ this.admin = leave.admin;
43
+ this.start_am_pm = leave.start_am_pm;
44
+ this.end_am_pm = leave.end_am_pm;
45
+ this.hours = leave.hours;
46
+ this.hours_method = leave.hours_method;
47
+ this.hours_set = leave.hours_set;
48
+ this.requested_at = leave.requested_at;
49
+ this.replied_at = leave.replied_at;
10
50
  }
11
51
  }
@@ -4,8 +4,11 @@ export class Role {
4
4
  public id: number;
5
5
  public name: string;
6
6
  public colour: string;
7
+ public users: number[];
8
+
7
9
  constructor(role: ApiRole) {
8
10
  this.id = role.id;
9
11
  this.name = role.name;
12
+ this.users = role.users;
10
13
  }
11
14
  }
package/src/rotacloud.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import {
2
2
  AccountsService,
3
3
  AttendanceService,
4
+ DaysOffService,
4
5
  LeaveEmbargoesService,
5
6
  LeaveRequestService,
6
7
  LeaveService,
@@ -10,7 +11,6 @@ import {
10
11
  UsersService,
11
12
  } from './services/index.js';
12
13
  import { SDKConfig } from './interfaces/index.js';
13
- import { DaysOffService } from './services/days-off.service.js';
14
14
 
15
15
  export class RotaCloud {
16
16
  public static config: SDKConfig;
@@ -7,10 +7,6 @@ import { InternalQueryParams } from '../interfaces/query-params/internal-query-p
7
7
  class AccountsService extends Service {
8
8
  private apiPath = '/accounts';
9
9
 
10
- constructor() {
11
- super();
12
- }
13
-
14
10
  async *list(options?: Options<InternalQueryParams>) {
15
11
  for await (const res of super.iterator<ApiAccount>({ url: this.apiPath }, options)) {
16
12
  yield new Account(res);
@@ -12,10 +12,6 @@ type RequiredProps = 'user' | 'in_time';
12
12
  class AttendanceService extends Service {
13
13
  private apiPath = '/attendance';
14
14
 
15
- constructor() {
16
- super();
17
- }
18
-
19
15
  create(data: RequirementsOf<ApiAttendance, RequiredProps>): Promise<Attendance>;
20
16
  create(
21
17
  data: RequirementsOf<ApiAttendance, RequiredProps>,
@@ -0,0 +1,79 @@
1
+ import { AxiosResponse } from 'axios';
2
+ import { ApiGroup } from '../interfaces/index.js';
3
+ import { Service, Options, RequirementsOf } from './index.js';
4
+
5
+ import { ErrorResponse } from '../models/error-response.model.js';
6
+ import { InternalQueryParams } from '../interfaces/query-params/internal-query-params.inteface.js';
7
+ import { Group } from '../models/group.model.js';
8
+ import { GroupsQueryParams } from '../interfaces/query-params/groups-query-params.interface.js';
9
+
10
+ type RequiredProps = 'name';
11
+
12
+ class GroupsService extends Service {
13
+ private apiPath = '/groups';
14
+
15
+ create(data: RequirementsOf<ApiGroup, RequiredProps>): Promise<Group>;
16
+ create(
17
+ data: RequirementsOf<ApiGroup, RequiredProps>,
18
+ options: { rawResponse: true; params?: InternalQueryParams }
19
+ ): Promise<AxiosResponse<ApiGroup, any>>;
20
+ create(data: RequirementsOf<ApiGroup, RequiredProps>, options: Options<InternalQueryParams>): Promise<Group>;
21
+ create(data: RequirementsOf<ApiGroup, RequiredProps>, options?: Options<InternalQueryParams>) {
22
+ return super.fetch<ApiGroup>({ url: this.apiPath, data, method: 'POST' }).then(
23
+ (res) => Promise.resolve(options?.rawResponse ? res : new Group(res.data)),
24
+ (err) => Promise.reject(options?.rawResponse ? err : new ErrorResponse(err))
25
+ );
26
+ }
27
+
28
+ get(id: number): Promise<Group>;
29
+ get(id: number, options: { rawResponse: true; params?: InternalQueryParams }): Promise<AxiosResponse<ApiGroup, any>>;
30
+ get(id: number, options: Options<InternalQueryParams>): Promise<Group>;
31
+ get(id: number, options?: Options<InternalQueryParams>) {
32
+ return super.fetch<ApiGroup>({ url: `${this.apiPath}/${id}` }, options).then(
33
+ (res) => Promise.resolve(options?.rawResponse ? res : new Group(res.data)),
34
+ (err) => Promise.reject(options?.rawResponse ? err : new ErrorResponse(err))
35
+ );
36
+ }
37
+
38
+ async *list(options?: Options<GroupsQueryParams & InternalQueryParams>) {
39
+ for await (const res of super.iterator<ApiGroup>({ url: this.apiPath }, options)) {
40
+ yield new Group(res);
41
+ }
42
+ }
43
+
44
+ listByPage(options?: Options<GroupsQueryParams & InternalQueryParams>) {
45
+ return super.iterator<ApiGroup>({ url: this.apiPath }, options).byPage();
46
+ }
47
+
48
+ update(id: number, data: Partial<ApiGroup>): Promise<Group>;
49
+ update(
50
+ id: number,
51
+ data: Partial<ApiGroup>,
52
+ options: { rawResponse: true; params?: InternalQueryParams }
53
+ ): Promise<AxiosResponse<ApiGroup, any>>;
54
+ update(id: number, data: Partial<ApiGroup>, options: Options<InternalQueryParams>): Promise<Group>;
55
+ update(id: number, data: Partial<ApiGroup>, options?: Options<InternalQueryParams>) {
56
+ return super
57
+ .fetch<ApiGroup>({
58
+ url: `${this.apiPath}/${id}`,
59
+ data,
60
+ method: 'POST',
61
+ })
62
+ .then(
63
+ (res) => Promise.resolve(options?.rawResponse ? res : new Group(res.data)),
64
+ (err) => Promise.reject(options?.rawResponse ? err : new ErrorResponse(err))
65
+ );
66
+ }
67
+
68
+ delete(id: number): Promise<number>;
69
+ delete(id: number, options: { rawResponse: true; params?: InternalQueryParams }): Promise<AxiosResponse<any, any>>;
70
+ delete(id: number, options: Options<InternalQueryParams>): Promise<number>;
71
+ delete(id: number, options?: Options<InternalQueryParams>) {
72
+ return super.fetch<ApiGroup>({ url: `${this.apiPath}/${id}`, method: 'DELETE' }).then(
73
+ (res) => Promise.resolve(options?.rawResponse ? res : res.status),
74
+ (err) => Promise.reject(options?.rawResponse ? err : new ErrorResponse(err))
75
+ );
76
+ }
77
+ }
78
+
79
+ export { GroupsService };
@@ -1,6 +1,8 @@
1
1
  export * from './service.js';
2
2
  export * from './accounts.service.js';
3
3
  export * from './attendance.service.js';
4
+ export * from './days-off.service.js';
5
+ export * from './groups.service.js';
4
6
  export * from './leave-request.service.js';
5
7
  export * from './leave-embargoes.service.js';
6
8
  export * from './leave.service.js';
@@ -12,10 +12,6 @@ type RequiredProps = 'start_date' | 'end_date' | 'users';
12
12
  class LeaveEmbargoesService extends Service {
13
13
  private apiPath = '/leave_embargoes';
14
14
 
15
- constructor() {
16
- super();
17
- }
18
-
19
15
  create(data: RequirementsOf<ApiLeaveEmbargo, RequiredProps>): Promise<LeaveEmbargo>;
20
16
  create(
21
17
  data: RequirementsOf<ApiLeaveEmbargo, RequiredProps>,
@@ -13,10 +13,6 @@ type RequiredProps = 'users' | 'type' | 'start_date' | 'end_date';
13
13
  class LeaveService extends Service {
14
14
  private apiPath = '/leave';
15
15
 
16
- constructor() {
17
- super();
18
- }
19
-
20
16
  create(data: RequirementsOf<ApiLeave, RequiredProps>): Promise<Leave[]>;
21
17
  create(
22
18
  data: RequirementsOf<ApiLeave, RequiredProps>,
@@ -12,10 +12,6 @@ type RequiredProps = 'name';
12
12
  class LocationsService extends Service {
13
13
  private apiPath = '/locations';
14
14
 
15
- constructor() {
16
- super();
17
- }
18
-
19
15
  create(data: RequirementsOf<ApiLocation, RequiredProps>): Promise<Location>;
20
16
  create(
21
17
  data: RequirementsOf<ApiLocation, RequiredProps>,
@@ -12,10 +12,6 @@ type RequiredProps = 'name';
12
12
  class RolesService extends Service {
13
13
  private apiPath = '/roles';
14
14
 
15
- constructor() {
16
- super();
17
- }
18
-
19
15
  create(data: RequirementsOf<ApiRole, RequiredProps>): Promise<Role>;
20
16
  create(
21
17
  data: RequirementsOf<ApiRole, RequiredProps>,
@@ -12,10 +12,6 @@ type RequiredProps = 'end_time' | 'start_time' | 'location';
12
12
  class ShiftsService extends Service {
13
13
  private apiPath = '/shifts';
14
14
 
15
- constructor() {
16
- super();
17
- }
18
-
19
15
  create(data: RequirementsOf<ApiShift, RequiredProps>): Promise<Shift>;
20
16
  create(
21
17
  data: RequirementsOf<ApiShift, RequiredProps>,
@@ -12,10 +12,6 @@ type RequiredProps = 'first_name' | 'last_name';
12
12
  class UsersService extends Service {
13
13
  private apiPath = '/users';
14
14
 
15
- constructor() {
16
- super();
17
- }
18
-
19
15
  create(data: RequirementsOf<ApiUser, RequiredProps>): Promise<User>;
20
16
  create(
21
17
  data: RequirementsOf<ApiUser, RequiredProps>,
package/src/version.ts CHANGED
@@ -1 +1 @@
1
- export const Version = { version: "1.0.6" }
1
+ export const Version = { version: "1.0.7" }