backend-demo-tn/src/main/java/com/cubetiqs/demo/rest/UserController.java

103 lines
3.1 KiB
Java
Raw Normal View History

2020-06-11 19:13:29 +07:00
package com.cubetiqs.demo.rest;
import com.cubetiqs.demo.domain.UserEntity;
2020-06-22 20:04:51 +07:00
import com.cubetiqs.demo.domain.view.UserView;
2020-06-11 19:13:29 +07:00
import com.cubetiqs.demo.repository.UserRepository;
2020-06-22 20:04:51 +07:00
import com.cubetiqs.demo.service.UserNotFoundException;
2020-06-16 19:19:26 +07:00
import com.cubetiqs.demo.service.UserService;
2020-06-22 20:04:51 +07:00
import com.cubetiqs.demo.util.StringUtils;
2020-06-11 19:13:29 +07:00
import org.springframework.beans.factory.annotation.Autowired;
2020-06-22 20:04:51 +07:00
import org.springframework.data.domain.Page;
2020-06-11 19:13:29 +07:00
import org.springframework.data.domain.Pageable;
2020-06-15 19:38:02 +07:00
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
2020-06-11 19:13:29 +07:00
import org.springframework.web.bind.annotation.*;
2020-06-16 19:19:26 +07:00
import java.util.List;
2020-06-15 19:38:02 +07:00
import java.util.Optional;
2020-06-11 19:13:29 +07:00
2020-06-22 20:04:51 +07:00
2020-06-11 19:13:29 +07:00
@RestController
@RequestMapping(path = {"/users"})
public class UserController {
private final UserRepository userRepository;
2020-06-16 19:19:26 +07:00
private final UserService userService;
2020-06-11 19:13:29 +07:00
@Autowired
2020-06-16 19:19:26 +07:00
public UserController(UserRepository userRepository, UserService userService) {
2020-06-11 19:13:29 +07:00
this.userRepository = userRepository;
2020-06-16 19:19:26 +07:00
this.userService = userService;
2020-06-11 19:13:29 +07:00
}
@GetMapping
2020-06-16 19:19:26 +07:00
public List<UserEntity> getAllUsers(Pageable pageable) {
2020-06-18 19:47:20 +07:00
return userService.findAllActives();
2020-06-11 19:13:29 +07:00
}
2020-06-22 20:04:51 +07:00
@GetMapping("/searchByEmail")
public Page<UserView> searchByEmail(
Pageable pageable,
@RequestParam(value = "q", defaultValue = "") String q
) {
return userService.searchByEmailAsView(StringUtils.stringQuery(q), pageable);
}
@GetMapping("/allUsers")
public Page<UserEntity> fetchAllUsers(Pageable pageable) {
return userRepository.fetchAllUsers(Pageable.unpaged());
}
@GetMapping("/findByEmail/{email}")
public ResponseEntity<Object> getUserById(
@PathVariable String email
) {
try {
return ResponseEntity.ok(userService.findByEmail(email));
} catch (UserNotFoundException ex) {
return ResponseEntity.status(HttpStatus.NOT_FOUND).body(ex.getMessage());
}
}
2020-06-15 19:38:02 +07:00
@GetMapping("/{id}")
public UserEntity getUserById(
@PathVariable Long id
) {
return userRepository.findById(id).orElse(null);
}
2020-06-11 19:13:29 +07:00
@PostMapping
public UserEntity createUser(
@RequestBody UserEntity user
) {
return userRepository.save(user);
}
2020-06-15 19:38:02 +07:00
@PutMapping("/{id}")
public UserEntity updateUser(
@PathVariable Long id,
@RequestBody UserEntity user
) {
Optional<UserEntity> userEntityOptional = userRepository.findById(id);
if(userEntityOptional.isPresent()) {
// found
user.setId(id);
return userRepository.save(user);
} else {
return null;
}
}
@DeleteMapping("/{id}")
public ResponseEntity<Object> deleteUser(
@PathVariable Long id
) {
Optional<UserEntity> userEntityOptional = userRepository.findById(id);
if (userEntityOptional.isPresent()) {
userRepository.delete(userEntityOptional.get());
return ResponseEntity.status(HttpStatus.OK).body("user deleted");
} else {
return ResponseEntity.badRequest().body("not found");
}
}
2020-06-11 19:13:29 +07:00
}