rotacloud 1.0.5 → 1.0.8
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.
- package/dist/interfaces/leave.interface.d.ts +4 -4
- package/dist/models/group.model.d.ts +1 -0
- package/dist/models/group.model.js +1 -0
- package/dist/models/leave.model.d.ts +22 -0
- package/dist/models/leave.model.js +20 -0
- package/dist/models/location.model.d.ts +1 -0
- package/dist/models/location.model.js +1 -0
- package/dist/models/role.model.d.ts +1 -0
- package/dist/models/role.model.js +1 -0
- package/dist/rotacloud.d.ts +2 -2
- package/dist/rotacloud.js +2 -2
- package/dist/services/accounts.service.d.ts +0 -1
- package/dist/services/accounts.service.js +1 -1
- package/dist/services/attendance.service.d.ts +0 -1
- package/dist/services/attendance.service.js +1 -1
- package/dist/services/groups.service.d.ts +37 -0
- package/dist/services/groups.service.js +36 -0
- package/dist/services/index.d.ts +2 -0
- package/dist/services/index.js +2 -0
- package/dist/services/leave-embargoes.service.d.ts +0 -1
- package/dist/services/leave-embargoes.service.js +1 -1
- package/dist/services/leave.service.d.ts +0 -1
- package/dist/services/leave.service.js +1 -1
- package/dist/services/locations.service.d.ts +0 -1
- package/dist/services/locations.service.js +1 -1
- package/dist/services/roles.service.d.ts +0 -1
- package/dist/services/roles.service.js +1 -1
- package/dist/services/service.js +2 -1
- package/dist/services/shifts.service.d.ts +0 -1
- package/dist/services/shifts.service.js +1 -1
- package/dist/services/users.service.d.ts +0 -1
- package/dist/services/users.service.js +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
- package/src/interfaces/leave.interface.ts +4 -4
- package/src/models/group.model.ts +2 -0
- package/src/models/leave.model.ts +40 -0
- package/src/models/location.model.ts +2 -0
- package/src/models/role.model.ts +3 -0
- package/src/rotacloud.ts +3 -1
- package/src/services/accounts.service.ts +0 -4
- package/src/services/attendance.service.ts +0 -4
- package/src/services/groups.service.ts +79 -0
- package/src/services/index.ts +2 -0
- package/src/services/leave-embargoes.service.ts +0 -4
- package/src/services/leave.service.ts +0 -4
- package/src/services/locations.service.ts +0 -4
- package/src/services/roles.service.ts +0 -4
- package/src/services/service.ts +1 -1
- package/src/services/shifts.service.ts +0 -4
- package/src/services/users.service.ts +0 -4
- 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;
|
|
@@ -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
|
}
|
package/dist/rotacloud.d.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { AccountsService, AttendanceService, LeaveEmbargoesService, LeaveRequestService, LeaveService, LocationsService, RolesService, ShiftsService, UsersService } from './services/index.js';
|
|
1
|
+
import { AccountsService, AttendanceService, DaysOffService, GroupsService, 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;
|
|
7
6
|
accounts: AccountsService;
|
|
8
7
|
attendance: AttendanceService;
|
|
9
8
|
daysOff: DaysOffService;
|
|
9
|
+
group: GroupsService;
|
|
10
10
|
leaveEmbargoes: LeaveEmbargoesService;
|
|
11
11
|
leaveRequests: LeaveRequestService;
|
|
12
12
|
leave: LeaveService;
|
package/dist/rotacloud.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
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, GroupsService, 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';
|
|
6
5
|
this.accounts = new AccountsService();
|
|
7
6
|
this.attendance = new AttendanceService();
|
|
8
7
|
this.daysOff = new DaysOffService();
|
|
8
|
+
this.group = new GroupsService();
|
|
9
9
|
this.leaveEmbargoes = new LeaveEmbargoesService();
|
|
10
10
|
this.leaveRequests = new LeaveRequestService();
|
|
11
11
|
this.leave = new LeaveService();
|
|
@@ -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
|
}
|
|
@@ -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 };
|
package/dist/services/index.d.ts
CHANGED
|
@@ -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';
|
package/dist/services/index.js
CHANGED
|
@@ -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;
|
package/dist/services/service.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import axios from 'axios';
|
|
2
2
|
import { RotaCloud } from '../rotacloud.js';
|
|
3
|
+
import { Version } from '../version.js';
|
|
3
4
|
export class Service {
|
|
4
5
|
// rate limit tracking could be implemented here statically
|
|
5
6
|
isLeaveRequest(endpoint) {
|
|
@@ -31,7 +32,7 @@ export class Service {
|
|
|
31
32
|
async fetch(httpOptions, options) {
|
|
32
33
|
const headers = {
|
|
33
34
|
Authorization: `Bearer ${RotaCloud.config.apiKey}`,
|
|
34
|
-
|
|
35
|
+
'SDK-Version': Version.version,
|
|
35
36
|
};
|
|
36
37
|
if (RotaCloud.config.accountId) {
|
|
37
38
|
headers.Account = String(RotaCloud.config.accountId);
|
|
@@ -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;
|
package/dist/version.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const Version = { version: "1.0.
|
|
1
|
+
export const Version = { version: "1.0.8" };
|
package/package.json
CHANGED
|
@@ -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
|
}
|
|
@@ -9,9 +9,11 @@ export class LatLngObject {
|
|
|
9
9
|
export class Location {
|
|
10
10
|
public id: number;
|
|
11
11
|
public name: string;
|
|
12
|
+
public users: number[];
|
|
12
13
|
|
|
13
14
|
constructor(locaiton: ApiLocation) {
|
|
14
15
|
this.id = locaiton.id;
|
|
15
16
|
this.name = locaiton.name;
|
|
17
|
+
this.users = locaiton.users;
|
|
16
18
|
}
|
|
17
19
|
}
|
package/src/models/role.model.ts
CHANGED
package/src/rotacloud.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
2
|
AccountsService,
|
|
3
3
|
AttendanceService,
|
|
4
|
+
DaysOffService,
|
|
5
|
+
GroupsService,
|
|
4
6
|
LeaveEmbargoesService,
|
|
5
7
|
LeaveRequestService,
|
|
6
8
|
LeaveService,
|
|
@@ -10,7 +12,6 @@ import {
|
|
|
10
12
|
UsersService,
|
|
11
13
|
} from './services/index.js';
|
|
12
14
|
import { SDKConfig } from './interfaces/index.js';
|
|
13
|
-
import { DaysOffService } from './services/days-off.service.js';
|
|
14
15
|
|
|
15
16
|
export class RotaCloud {
|
|
16
17
|
public static config: SDKConfig;
|
|
@@ -19,6 +20,7 @@ export class RotaCloud {
|
|
|
19
20
|
public accounts = new AccountsService();
|
|
20
21
|
public attendance = new AttendanceService();
|
|
21
22
|
public daysOff = new DaysOffService();
|
|
23
|
+
public group = new GroupsService();
|
|
22
24
|
public leaveEmbargoes = new LeaveEmbargoesService();
|
|
23
25
|
public leaveRequests = new LeaveRequestService();
|
|
24
26
|
public leave = new LeaveService();
|
|
@@ -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 };
|
package/src/services/index.ts
CHANGED
|
@@ -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>,
|
package/src/services/service.ts
CHANGED
|
@@ -54,7 +54,7 @@ export abstract class Service<ApiResponse = any> {
|
|
|
54
54
|
public async fetch<T = ApiResponse>(httpOptions: AxiosRequestConfig, options?): Promise<AxiosResponse<T>> {
|
|
55
55
|
const headers: AxiosRequestHeaders = {
|
|
56
56
|
Authorization: `Bearer ${RotaCloud.config.apiKey}`,
|
|
57
|
-
|
|
57
|
+
'SDK-Version': Version.version,
|
|
58
58
|
};
|
|
59
59
|
if (RotaCloud.config.accountId) {
|
|
60
60
|
headers.Account = String(RotaCloud.config.accountId);
|
|
@@ -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.
|
|
1
|
+
export const Version = { version: "1.0.8" }
|