admin: interface to edit teams

This commit is contained in:
nemunaire 2017-01-28 19:36:28 +01:00 committed by Pierre-Olivier Mercier
parent da0e7facfd
commit 7478051425
5 changed files with 169 additions and 3 deletions

View file

@ -36,6 +36,7 @@ func init() {
router.GET("/api/teams/:tid/", apiHandler(teamHandler(
func(team fic.Team, _ []byte) (interface{}, error) {
return team, nil })))
router.PUT("/api/teams/:tid/", apiHandler(teamHandler(updateTeam)))
router.POST("/api/teams/:tid/", apiHandler(teamHandler(addTeamMember)))
router.DELETE("/api/teams/:tid/", apiHandler(teamHandler(
func(team fic.Team, _ []byte) (interface{}, error) {
@ -60,6 +61,8 @@ func init() {
router.GET("/api/teams/:tid/members", apiHandler(teamHandler(
func(team fic.Team, _ []byte) (interface{}, error) {
return team.GetMembers() })))
router.POST("/api/teams/:tid/members", apiHandler(teamHandler(addTeamMember)))
router.PUT("/api/teams/:tid/members", apiHandler(teamHandler(setTeamMember)))
router.GET("/api/teams/:tid/name", apiHandler(teamHandler(
func(team fic.Team, _ []byte) (interface{}, error) {
return team.InitialName, nil })))
@ -141,6 +144,21 @@ func createTeam(_ httprouter.Params, body []byte) (interface{}, error) {
return fic.CreateTeam(strings.TrimSpace(ut.Name), ut.Color)
}
func updateTeam(team fic.Team, body []byte) (interface{}, error) {
var ut fic.Team
if err := json.Unmarshal(body, &ut); err != nil {
return nil, err
}
ut.Id = team.Id
if _, err := ut.Update(); err != nil {
return nil, err
}
return ut, nil
}
func addTeamMember(team fic.Team, body []byte) (interface{}, error) {
var members []uploadedMember
if err := json.Unmarshal(body, &members); err != nil {
@ -154,6 +172,20 @@ func addTeamMember(team fic.Team, body []byte) (interface{}, error) {
return team.GetMembers()
}
func setTeamMember(team fic.Team, body []byte) (interface{}, error) {
var members []uploadedMember
if err := json.Unmarshal(body, &members); err != nil {
return nil, err
}
team.ClearMembers()
for _, member := range members {
team.AddMember(strings.TrimSpace(member.Firstname), strings.TrimSpace(member.Lastname), strings.TrimSpace(member.Nickname), strings.TrimSpace(member.Company))
}
return team.GetMembers()
}
func dispMemberTeam(ps httprouter.Params, body []byte) (interface{}, error) {
if mid, err := strconv.Atoi(string(ps.ByName("mid"))); err != nil {
return fic.Team{}, err