forked from wuhan2020/rest-api
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSuppliesRequirement.ts
87 lines (74 loc) · 2.22 KB
/
SuppliesRequirement.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
import { Object as LCObject, Query, ACL } from 'leanengine';
import {
JsonController,
Post,
Authorized,
Ctx,
Body,
ForbiddenError,
Get,
QueryParam,
Put,
Param,
Delete,
OnUndefined
} from 'routing-controllers';
import { LCContext, queryPage } from '../utility';
import { RequirementModel } from '../model/Supplies';
import { RoleController } from './Role';
export class SuppliesRequirement extends LCObject {}
@JsonController('/supplies/requirement')
export class RequirementController {
@Post()
@Authorized()
async create(
@Ctx() { currentUser: user }: LCContext,
@Body() { hospital, ...rest }: RequirementModel
) {
let requirement = await new Query(SuppliesRequirement)
.equalTo('hospital', hospital)
.first();
if (requirement) throw new ForbiddenError();
const acl = new ACL();
acl.setPublicReadAccess(true),
acl.setPublicWriteAccess(false),
acl.setWriteAccess(user, true),
acl.setRoleWriteAccess(await RoleController.getAdmin(), true);
requirement = await new SuppliesRequirement().save(
{ ...rest, hospital, creator: user },
{ user }
);
return requirement.toJSON();
}
@Get()
getList(
@QueryParam('pageSize') size: number,
@QueryParam('pageIndex') index: number
) {
return queryPage(SuppliesRequirement, { size, index });
}
@Put('/:id')
async edit(
@Ctx() { currentUser: user }: LCContext,
@Param('id') id: string,
@Body() { hospital, address, ...rest }: RequirementModel
) {
const requirement = LCObject.createWithoutData(
'SuppliesRequirement',
id
);
await requirement.save(rest, { user });
return requirement.toJSON();
}
@Delete('/:id')
@Authorized()
@OnUndefined(204)
async delete(
@Ctx() { currentUser: user }: LCContext,
@Param('id') id: string
) {
await LCObject.createWithoutData('SuppliesRequirement', id).destroy({
user
});
}
}