Passed
Pull Request — dev (#389)
by
unknown
05:17
created

easytests.api.v1.controllers.UsersController   A

Complexity

Total Complexity 9

Size/Duplication

Total Lines 69
Duplicated Lines 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
wmc 9
c 2
b 0
f 0
dl 0
loc 69
rs 10

6 Methods

Rating   Name   Duplication   Size   Complexity  
isAdmin 0 2 ?
A getUserModel(Integer,UsersOptionsInterface) 0 6 2
A getUserModel(Integer) 0 2 1
A isAdmin() 0 2 1
A list() 0 11 2
A delete(Integer) 0 13 3
1
package easytests.api.v1.controllers;
2
3
import easytests.api.v1.exceptions.*;
4
import easytests.api.v1.mappers.UsersMapper;
5
import easytests.api.v1.models.User;
6
import easytests.auth.services.SessionServiceInterface;
7
import easytests.core.models.UserModelInterface;
8
import easytests.core.options.UsersOptionsInterface;
9
import easytests.core.options.builder.UsersOptionsBuilderInterface;
10
import easytests.core.services.UsersServiceInterface;
11
import java.util.List;
12
import java.util.stream.Collectors;
13
import org.springframework.beans.factory.annotation.Autowired;
14
import org.springframework.beans.factory.annotation.Qualifier;
15
import org.springframework.web.bind.annotation.*;
16
17
18
/**
19
 * @author SvetlanaTselikova
20
 */
21
@RestController("UsersControllerV1")
22
@SuppressWarnings("checkstyle:MultipleStringLiterals")
23
@RequestMapping("/v1/users")
24
public class UsersController {
25
26
    @Autowired
27
    protected UsersServiceInterface usersService;
28
29
    @Autowired
30
    private UsersOptionsBuilderInterface usersOptionsBuilder;
31
32
    @Autowired
33
    private SessionServiceInterface sessionService;
34
35
    @Autowired
36
    @Qualifier("UsersMapperV1")
37
    private UsersMapper usersMapper;
38
39
    private Boolean isAdmin() {
40
        return this.sessionService.getUserModel().getIsAdmin();
41
    }
42
43
    @GetMapping("")
44
    public List<User> list() throws ForbiddenException {
45
        if (!this.isAdmin()) {
46
            throw new ForbiddenException();
47
        }
48
        final List<UserModelInterface> usersModels = this.usersService.findAll();
49
50
        return usersModels
51
                .stream()
52
                .map(model -> this.usersMapper.map(model, User.class))
53
                .collect(Collectors.toList());
54
    }
55
56
    /**
57
     * create
58
     */
59
    /**
60
     * update
61
     */
62
    /**
63
     * show(userId)
64
     */
65
    @DeleteMapping("/{userId}")
66
    public void delete(@PathVariable Integer userId) throws NotFoundException, ForbiddenException {
67
        final UserModelInterface userModel = this.getUserModel(userId);
68
69
        if (!this.isAdmin()) {
70
            throw new ForbiddenException();
71
        }
72
73
        if (userModel == null) {
0 ignored issues
show
Bug introduced by
This condition always evaluates to false. Consider refactoring your code to no longer check for it or rewrite the condition.
Loading history...
74
            throw new NotFoundException();
75
        }
76
77
        this.usersService.delete(userModel);
78
    }
79
80
    private UserModelInterface getUserModel(Integer id, UsersOptionsInterface userOptions) throws NotFoundException {
81
        final UserModelInterface userModel = this.usersService.find(id, userOptions);
82
        if (userModel == null) {
83
            throw new NotFoundException();
84
        }
85
        return userModel;
86
    }
87
88
    private UserModelInterface getUserModel(Integer id) throws NotFoundException {
89
        return this.getUserModel(id, this.usersOptionsBuilder.forDelete());
90
    }
91
    /**
92
     * showMe
93
     */
94
}
95