-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathemployee-manager.go
121 lines (99 loc) · 2.87 KB
/
employee-manager.go
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
package controllers
import (
"fmt"
"github.com/opensourceways/app-cla-server/dbmodels"
"github.com/opensourceways/app-cla-server/email"
"github.com/opensourceways/app-cla-server/models"
)
type EmployeeManagerController struct {
baseController
}
func (this *EmployeeManagerController) Prepare() {
this.apiPrepare(PermissionCorpAdmin)
}
// @Title Post
// @Description add employee managers
// @Param body body models.EmployeeManagerCreateOption true "body for employee manager"
// @Success 201 {int} map
// @router / [post]
func (this *EmployeeManagerController) Post() {
action := "add employee managers"
sendResp := this.newFuncForSendingFailedResp(action)
pl, fr := this.tokenPayloadBasedOnCorpManager()
if fr != nil {
sendResp(fr)
return
}
info := &models.EmployeeManagerCreateOption{}
if fr := this.fetchInputPayload(info); fr != nil {
sendResp(fr)
return
}
if err := info.ValidateWhenAdding(pl.LinkID, pl.Email); err != nil {
this.sendModelErrorAsResp(err, action)
return
}
added, merr := info.Create(pl.LinkID)
if merr != nil {
this.sendModelErrorAsResp(merr, action)
return
}
this.sendSuccessResp(action + " successfully")
notifyCorpManagerWhenAdding(pl.LinkID, &pl.OrgInfo, added)
}
// @Title Delete
// @Description delete employee manager
// @Param body body models.EmployeeManagerCreateOption true "body for employee manager"
// @Success 204 {string} delete success!
// @router / [delete]
func (this *EmployeeManagerController) Delete() {
action := "delete employee managers"
sendResp := this.newFuncForSendingFailedResp(action)
pl, fr := this.tokenPayloadBasedOnCorpManager()
if fr != nil {
sendResp(fr)
return
}
info := &models.EmployeeManagerCreateOption{}
if fr := this.fetchInputPayload(info); fr != nil {
sendResp(fr)
return
}
if err := info.ValidateWhenDeleting(pl.Email); err != nil {
this.sendModelErrorAsResp(err, action)
return
}
deleted, merr := info.Delete(pl.LinkID)
if merr != nil {
this.sendModelErrorAsResp(merr, action)
return
}
this.sendSuccessResp(action + "successfully")
subject := fmt.Sprintf("Revoking the authorization on project of \"%s\"", pl.OrgAlias)
for _, item := range deleted {
msg := email.RemovingCorpManager{
User: item.Name,
Org: pl.OrgAlias,
ProjectURL: pl.ProjectURL(),
}
sendEmailToIndividual(pl.LinkID, item.Email, subject, msg)
}
}
// @Title GetAll
// @Description get all employee managers
// @Success 200 {object} dbmodels.CorporationManagerListResult
// @router / [get]
func (this *EmployeeManagerController) GetAll() {
sendResp := this.newFuncForSendingFailedResp("list employee managers")
pl, fr := this.tokenPayloadBasedOnCorpManager()
if fr != nil {
sendResp(fr)
return
}
r, err := models.ListCorporationManagers(pl.LinkID, pl.Email, dbmodels.RoleManager)
if err == nil {
this.sendSuccessResp(r)
} else {
sendResp(parseModelError(err))
}
}