package com.allfree.allfreespringbackend.controlller; import com.allfree.allfreespringbackend.common.dto.CommonArticleResponseDTO; import com.allfree.allfreespringbackend.common.dto.CommonResponseDTO; import com.allfree.allfreespringbackend.service.UserService; import com.allfree.allfreespringbackend.user.User; import com.allfree.allfreespringbackend.user.dto.NewUserDTO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Objects; @CrossOrigin(origins = "*", maxAge = 3600) @RestController @RequestMapping("/api/v1/") public class UserController { private final UserService userService; @Autowired public UserController(UserService userService) { this.userService = userService; } @GetMapping("/users") public List<User> getAllUsers() { return userService.getAllUsers(); } @PostMapping("/users/new") public User createUser(@RequestBody NewUserDTO newUser) { final User user = User.loadFromUserDTO(newUser); return userService.saveUser(user); } // @PostMapping("/users/new") // public User createUser(@RequestBody NewUserDTO newUser){ // try{ // return userService.saveUserD(newUser); // } catch (Exception e){ // e.printStackTrace(); // return null; // } // } @GetMapping("/users/{id}") public User getUserById(@PathVariable Long id) { return userService.getUserById(id); } // TODO: 17.02.2022 check if username || email already exist @PutMapping("/users/update/{id}") public User updateUser(@PathVariable Long id, @RequestBody User user) { return userService.updateUser(id, user); } @DeleteMapping("/users/delete/{id}") public Map<String, Boolean> deleteUser(@PathVariable Long id) { User userToBeDeleted = userService.getUserById(id); userToBeDeleted.setRoles(null); userService.deleteUser(userToBeDeleted); Map<String, Boolean> response = new HashMap<>(); response.put("deleted", true); return response; } @GetMapping("/user/{userId}/articles/{articleStatus}") public ResponseEntity<?> getUserArticlesByStatus(@PathVariable Long userId, @PathVariable String articleStatus) { User user = userService.getUserById(userId); if (Objects.nonNull(user) && user.getArticles().size() > 0) { return ResponseEntity.ok(CommonArticleResponseDTO.builder().articleList(user.getArticlesByStatus(articleStatus)).build()); } return ResponseEntity.badRequest().body(new CommonResponseDTO("Acest utilizator nu are articole :)")); } }