package com.iconplus.smartproc.controller; import com.iconplus.smartproc.model.entity.Users; import com.iconplus.smartproc.exception.ResourceNotFoundException; import com.iconplus.smartproc.model.request.RolesRequest; import com.iconplus.smartproc.model.request.UsersRequest; import com.iconplus.smartproc.model.response.GetRolesResponse; import com.iconplus.smartproc.model.response.GetUsersResponse; import com.iconplus.smartproc.repository.UsersRepository; import com.iconplus.smartproc.service.manajemenuser.GetListUserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import java.util.HashMap; import java.util.List; import java.util.Map; @CrossOrigin(origins = "http://localhost:8080", allowCredentials = "true") @RestController @RequestMapping("/api/users") public class UsersController { @Autowired private UsersRepository usersRepository; private final GetListUserService getListUserService; public UsersController(GetListUserService getListUserService) { this.getListUserService = getListUserService; } @GetMapping public GetUsersResponse getUsers(@RequestParam(name = "search", required = false) String search, @RequestParam(name = "instansi", required = false) String instansi, @RequestParam(name = "bidang", required = false) String bidang, @RequestParam(name = "nama", required = false) String nama, @RequestParam(name = "jabatan", required = false) String jabatan, @RequestParam(name = "role", required = false) String role, @RequestParam(name = "email", required = false) String email, @RequestParam(name = "page", defaultValue = "1") Integer page, @RequestParam(name = "size", defaultValue = "5") Integer size){ Pageable pageable = PageRequest.of((page - 1), size); UsersRequest usersRequest = UsersRequest.builder() .search(search) .instansi(instansi) .bidang(bidang) .nama(nama) .jabatan(jabatan) .role(role) .email(email) .pageable(pageable) .build(); return getListUserService.execute(usersRequest); } // create @PostMapping public Users createUsers(@RequestBody Users users) { return usersRepository.save(users); } // get users by id rest api @GetMapping("/{id}") public ResponseEntity getUsersById(@PathVariable Long id) { Users users = usersRepository.findById(id) .orElseThrow(() -> new ResourceNotFoundException("Users not exist with id :" + id)); return ResponseEntity.ok(users); } // update users rest api @PutMapping("/{id}") public ResponseEntity updateUsers(@PathVariable Long id, @RequestBody Users usersDetails){ Users users = usersRepository.findById(id) .orElseThrow(() -> new ResourceNotFoundException("Users not exist with id :" + id)); users.setUsername(usersDetails.getUsername()); users.setNama(usersDetails.getNama()); users.setEmail(usersDetails.getEmail()); users.setPassword(usersDetails.getPassword()); // users.setInstansi(usersDetails.getInstansi()); // users.setBidang(usersDetails.getBidang()); // users.setJabatan(usersDetails.getJabatan()); // users.setRole(usersDetails.getRole()); Users updatedUsers = usersRepository.save(users); return ResponseEntity.ok(updatedUsers); } // delete users rest api @DeleteMapping("/{id}") public ResponseEntity> deleteUsers(@PathVariable Long id){ Users users = usersRepository.findById(id) .orElseThrow(() -> new ResourceNotFoundException("Users not exist with id :" + id)); usersRepository.delete(users); Map response = new HashMap<>(); response.put("deleted", Boolean.TRUE); return ResponseEntity.ok(response); } }