add api instansi and user management

This commit is contained in:
dirgantarasiahaan 2023-05-24 12:21:01 +07:00
parent 4c500b18f5
commit 62ccecb214
24 changed files with 683 additions and 71 deletions

View File

@ -0,0 +1,74 @@
package com.iconplus.smartproc.controller;
import com.iconplus.smartproc.helper.model.EmptyResponse;
import com.iconplus.smartproc.model.request.InstansiRequest;
import com.iconplus.smartproc.model.response.GetListInstansiResponse;
import com.iconplus.smartproc.model.response.InstansiResponse;
import com.iconplus.smartproc.service.instansi.*;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.web.bind.annotation.*;
@CrossOrigin(origins = "http://localhost:8080", allowCredentials = "true")
@RestController
@RequestMapping("/api/instansi")
public class InstansiController {
private final GetListInstansiService getListInstansiService;
private final PostCreateInstansiService postCreateInstansiService;
private final PutUpdateInstansiService putUpdateInstansiService;
private final GetInstansiByIdService getInstansiByIdService;
private final DeleteInstansiService deleteInstansiService;
public InstansiController(GetListInstansiService getListInstansiService,
PostCreateInstansiService postCreateInstansiService,
PutUpdateInstansiService putUpdateInstansiService,
GetInstansiByIdService getInstansiByIdService,
DeleteInstansiService deleteInstansiService) {
this.getListInstansiService = getListInstansiService;
this.postCreateInstansiService = postCreateInstansiService;
this.putUpdateInstansiService = putUpdateInstansiService;
this.getInstansiByIdService = getInstansiByIdService;
this.deleteInstansiService = deleteInstansiService;
}
@GetMapping
public GetListInstansiResponse getListInstansi(@RequestParam(name = "search", required = false) String search,
@RequestParam(name = "page", defaultValue = "1") Integer page,
@RequestParam(name = "size", defaultValue = "5") Integer size){
Pageable pageable = PageRequest.of((page - 1), size);
InstansiRequest instansiRequest = InstansiRequest.builder()
.search(search)
.pageable(pageable)
.build();
return getListInstansiService.execute(instansiRequest);
}
@PostMapping
public InstansiResponse createInstansi(@RequestBody InstansiRequest request) {
return postCreateInstansiService.execute(request);
}
@GetMapping("/{id}")
public InstansiResponse getInstansiById(@PathVariable Long id) {
return getInstansiByIdService.execute(InstansiRequest.builder()
.id(id)
.build());
}
@PutMapping("/{id}")
public InstansiResponse updateInstansi(@PathVariable Long id, @RequestBody InstansiRequest request){
request.setId(id);
return putUpdateInstansiService.execute(request);
}
@DeleteMapping("/{id}")
public EmptyResponse deleteInstansi(@PathVariable Long id){
return deleteInstansiService.execute(InstansiRequest.builder()
.id(id)
.build());
}
}

View File

@ -1,33 +1,34 @@
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.helper.model.EmptyResponse;
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 com.iconplus.smartproc.model.response.UsersResponse;
import com.iconplus.smartproc.service.manajemenuser.*;
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) {
private final PostCreateUserService postCreateUserService;
private final PutUpdateUserService putUpdateUserService;
private final GetUserByIdService getUserByIdService;
private final DeleteUserService deleteUserService;
public UsersController(GetListUserService getListUserService,
PostCreateUserService postCreateUserService,
PutUpdateUserService putUpdateUserService,
GetUserByIdService getUserByIdService,
DeleteUserService deleteUserService) {
this.getListUserService = getListUserService;
this.postCreateUserService = postCreateUserService;
this.putUpdateUserService = putUpdateUserService;
this.getUserByIdService = getUserByIdService;
this.deleteUserService = deleteUserService;
}
@ -57,48 +58,28 @@ public class UsersController {
return getListUserService.execute(usersRequest);
}
// create
@PostMapping
public Users createUsers(@RequestBody Users users) {
return usersRepository.save(users);
public UsersResponse createUsers(@RequestBody UsersRequest request) {
return postCreateUserService.execute(request);
}
// get users by id rest api
@GetMapping("/{id}")
public ResponseEntity<Users> getUsersById(@PathVariable Long id) {
Users users = usersRepository.findById(id)
.orElseThrow(() -> new ResourceNotFoundException("Users not exist with id :" + id));
return ResponseEntity.ok(users);
public UsersResponse getUsersById(@PathVariable Long id) {
return getUserByIdService.execute(UsersRequest.builder()
.id(id)
.build());
}
// update users rest api
@PutMapping("/{id}")
public ResponseEntity<Users> 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);
public UsersResponse updateUsers(@PathVariable Long id, @RequestBody UsersRequest request){
request.setId(id);
return putUpdateUserService.execute(request);
}
// delete users rest api
@DeleteMapping("/{id}")
public ResponseEntity<Map<String, Boolean>> deleteUsers(@PathVariable Long id){
Users users = usersRepository.findById(id)
.orElseThrow(() -> new ResourceNotFoundException("Users not exist with id :" + id));
usersRepository.delete(users);
Map<String, Boolean> response = new HashMap<>();
response.put("deleted", Boolean.TRUE);
return ResponseEntity.ok(response);
public EmptyResponse deleteUsers(@PathVariable Long id){
return deleteUserService.execute(UsersRequest.builder()
.id(id)
.build());
}
}

View File

@ -25,6 +25,9 @@ public class Instansi extends BaseEntity {
@Column(name = "instansi")
private String instansi;
@Column(name = "alamat")
private String alamat;
@Column(name = "keterangan")
private String keterangan;

View File

@ -0,0 +1,23 @@
package com.iconplus.smartproc.model.projection;
public interface InstansiView {
Long getId();
void setId(Long id);
String getInstansi();
void setInstansi(String instansi);
String getAlamat();
void setAlamat(String alamat);
String getKeterangan();
void setKeterangan(String keterangan);
Boolean getIsActive();
void setIsActive(Boolean isActive);
Boolean getIsDelete();
void setIsDelete(Boolean isDelete);
}

View File

@ -21,11 +21,11 @@ public interface UserRoleView {
void setUsername(String username);
void setNama(String nama);
void setEmail(String email);
void setInstatnsi(String instansi);
void setInstansiId(Long instansiId);
void setInstansi(String instansi);
void setBidangId(Long bidangId);
void setBidang(String bidang);
void setJabatan(String Jabatan);
void setInstatnsiId(Long instansiId);
void setBidangId(Long bidangId);
void setIsActive(Boolean isActive);
void setPassword(String password);
void setRoleId(Long roleId);

View File

@ -0,0 +1,25 @@
package com.iconplus.smartproc.model.request;
import com.iconplus.smartproc.helper.base.BaseRequest;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.domain.Pageable;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class InstansiRequest extends BaseRequest {
private Long id;
private String instansi;
private String alamat;
private String keterangan;
private Boolean isActive;
private String search;
private transient Pageable pageable;
}

View File

@ -15,10 +15,14 @@ public class UsersRequest extends BaseRequest {
private Long id;
private String username;
private String password;
private Long instansiId;
private String instansi;
private Long bidangId;
private String bidang;
private String nama;
private String jabatan;
private Long roleId;
private String role;
private String email;
private Boolean isActive;

View File

@ -0,0 +1,20 @@
package com.iconplus.smartproc.model.response;
import com.iconplus.smartproc.helper.base.BaseResponse;
import com.iconplus.smartproc.helper.model.Pagination;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class GetListInstansiResponse extends BaseResponse {
private List<InstansiResponse> data;
private Pagination pagination;
}

View File

@ -0,0 +1,21 @@
package com.iconplus.smartproc.model.response;
import com.iconplus.smartproc.helper.base.BaseResponse;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class InstansiResponse extends BaseResponse {
private Long id;
private String instansi;
private String alamat;
private String keterangan;
private Boolean isActive;
private Boolean isDelete;
}

View File

@ -12,11 +12,19 @@ import lombok.NoArgsConstructor;
@NoArgsConstructor
public class UsersResponse extends BaseResponse {
private Long id;
private String instansi;
private String bidang;
private String nama;
private String username;
private String jabatan;
private Long instansiId;
private String instansi;
private Long bidangId;
private String bidang;
private Long roleId;
private String role;
private String email;
private Boolean isActive;
private Boolean isDelete;

View File

@ -0,0 +1,13 @@
package com.iconplus.smartproc.repository;
import com.iconplus.smartproc.model.entity.Bidang;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import java.util.Optional;
@Repository
public interface BidangRepository extends JpaRepository<Bidang, LokasiRepository> {
Optional<Bidang> findByIdAndIsDeleteFalse(Long id);
}

View File

@ -0,0 +1,30 @@
package com.iconplus.smartproc.repository;
import com.iconplus.smartproc.model.entity.Instansi;
import com.iconplus.smartproc.model.projection.InstansiView;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
import java.util.Optional;
@Repository
public interface InstansiRepository extends JpaRepository<Instansi, Long> {
@Query(value = "SELECT i.id as id," +
"i.instansi as instansi, " +
"i.alamat as alamat, " +
"i.keterangan as keterangan, " +
"i.isActive as isActive, " +
"i.isDelete as isDelete " +
"FROM Instansi i " +
"WHERE i.isDelete = false " +
"AND (:search = '' or UPPER(i.instansi) like :search)")
Page<InstansiView> getListInstansi(String search, Pageable pageable);
Optional<Instansi> findByIdAndIsDeleteFalse(Long id);
Optional<Instansi> findByInstansiAndIsDeleteFalse(String instansi);
}

View File

@ -15,13 +15,21 @@ public interface UsersRepository extends JpaRepository<Users, Long> {
@Query("SELECT u.id as id, " +
"u.nama as nama, " +
"u.username as username, " +
"u.jabatan as jabatan, " +
"u.roleId as roleId, " +
"r.role as role, " +
"u.bidangId as bidangId, " +
"b.bidang as bidang, " +
"u.instansiId as instansiId, " +
"i.instansi as instansi, " +
"u.email as email, " +
"u.isActive as isActive, " +
"u.isDelete as isDelete " +
"FROM Users u " +
"JOIN Roles r ON r.id = u.roleId " +
"JOIN Bidang b ON b.id = u.bidangId " +
"JOIN Instansi i ON i.id = u.instansiId " +
"Where u.isDelete = false " +
"AND (:search='' " +
"or (UPPER(u.nama) like :search " +
@ -33,5 +41,28 @@ public interface UsersRepository extends JpaRepository<Users, Long> {
Page<UserRoleView> getAllUsersAndDeletedFase(String search, Pageable pageable);
Optional<Users> findByEmailAndIsDeleteFalse(String email);
Optional<Users> findByIdAndIsDeleteFalse(Long id);
@Query("SELECT u.id as id, " +
"u.nama as nama, " +
"u.username as username, " +
"u.jabatan as jabatan, " +
"u.roleId as roleId, " +
"r.role as role, " +
"u.bidangId as bidangId, " +
"b.bidang as bidang, " +
"u.instansiId as instansiId, " +
"i.instansi as instansi, " +
"u.email as email, " +
"u.isActive as isActive, " +
"u.isDelete as isDelete " +
"FROM Users u " +
"JOIN Roles r ON r.id = u.roleId " +
"JOIN Bidang b ON b.id = u.bidangId " +
"JOIN Instansi i ON i.id = u.instansiId " +
"Where u.isDelete = false " +
"AND u.id = :id")
Optional<UserRoleView> getUserByIdAndDeletedFase(Long id);
}

View File

@ -0,0 +1,47 @@
package com.iconplus.smartproc.service;
import com.iconplus.smartproc.exception.BusinessException;
import com.iconplus.smartproc.model.request.UsersRequest;
import com.iconplus.smartproc.repository.BidangRepository;
import com.iconplus.smartproc.repository.InstansiRepository;
import com.iconplus.smartproc.repository.RolesRepository;
import com.iconplus.smartproc.repository.UsersRepository;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
@Service
public class CommonService {
private UsersRepository usersRepository;
private RolesRepository rolesRepository;
private BidangRepository bidangRepository;
private InstansiRepository instansiRepository;
public CommonService(UsersRepository usersRepository,
RolesRepository rolesRepository,
BidangRepository bidangRepository,
InstansiRepository instansiRepository) {
this.usersRepository = usersRepository;
this.rolesRepository = rolesRepository;
this.bidangRepository = bidangRepository;
this.instansiRepository = instansiRepository;
}
public void validateUserRequst(UsersRequest input) {
var roles= rolesRepository.findByIdAndIsDeleteFalse(input.getRoleId());
if (roles.isEmpty()) {
throw new BusinessException("err", "err", "err");
}
var bidang= bidangRepository.findByIdAndIsDeleteFalse(input.getBidangId());
if (bidang.isEmpty()) {
throw new BusinessException("err", "err", "err");
}
var instansi= instansiRepository.findByIdAndIsDeleteFalse(input.getInstansiId());
if (instansi.isEmpty()) {
throw new BusinessException("err", "err", "err");
}
}
}

View File

@ -0,0 +1,30 @@
package com.iconplus.smartproc.service.instansi;
import com.iconplus.smartproc.exception.BusinessException;
import com.iconplus.smartproc.helper.model.EmptyResponse;
import com.iconplus.smartproc.helper.service.BaseService;
import com.iconplus.smartproc.model.request.InstansiRequest;
import com.iconplus.smartproc.repository.InstansiRepository;
import org.springframework.stereotype.Service;
@Service
public class DeleteInstansiService implements BaseService<InstansiRequest, EmptyResponse> {
private InstansiRepository instansiRepository;
public DeleteInstansiService(InstansiRepository instansiRepository) {
this.instansiRepository = instansiRepository;
}
@Override
public EmptyResponse execute(InstansiRequest input) {
var instansi = instansiRepository.findByIdAndIsDeleteFalse(input.getId())
.orElseThrow(() -> new BusinessException("err", "err", "err"));
instansi.setIsDelete(true);
instansiRepository.save(instansi);
return new EmptyResponse();
}
}

View File

@ -0,0 +1,34 @@
package com.iconplus.smartproc.service.instansi;
import com.iconplus.smartproc.exception.BusinessException;
import com.iconplus.smartproc.helper.service.BaseService;
import com.iconplus.smartproc.model.request.InstansiRequest;
import com.iconplus.smartproc.model.response.InstansiResponse;
import com.iconplus.smartproc.repository.InstansiRepository;
import org.springframework.stereotype.Service;
@Service
public class GetInstansiByIdService implements BaseService<InstansiRequest, InstansiResponse> {
private InstansiRepository instansiRepository;
public GetInstansiByIdService(InstansiRepository instansiRepository) {
this.instansiRepository = instansiRepository;
}
@Override
public InstansiResponse execute(InstansiRequest input) {
var instansi= instansiRepository.findByIdAndIsDeleteFalse(input.getId())
.orElseThrow(() -> new BusinessException("err", "err", "err"));
return InstansiResponse.builder()
.id(instansi.getId())
.instansi(instansi.getInstansi())
.alamat(instansi.getAlamat())
.keterangan(instansi.getKeterangan())
.isActive(instansi.getIsActive())
.isDelete(instansi.getIsDelete())
.build();
}
}

View File

@ -0,0 +1,65 @@
package com.iconplus.smartproc.service.instansi;
import com.iconplus.smartproc.helper.model.Pagination;
import com.iconplus.smartproc.helper.service.BaseService;
import com.iconplus.smartproc.model.projection.InstansiView;
import com.iconplus.smartproc.model.request.InstansiRequest;
import com.iconplus.smartproc.model.request.UsersRequest;
import com.iconplus.smartproc.model.response.GetListInstansiResponse;
import com.iconplus.smartproc.model.response.InstansiResponse;
import com.iconplus.smartproc.repository.InstansiRepository;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
@Service
public class GetListInstansiService implements BaseService<InstansiRequest, GetListInstansiResponse> {
private InstansiRepository instansiRepository;
public GetListInstansiService(InstansiRepository instansiRepository) {
this.instansiRepository = instansiRepository;
}
@Override
public GetListInstansiResponse execute(InstansiRequest input) {
validateRequest(input);
List<InstansiResponse> instansiResponseList = new ArrayList<>();
var listInstansi = instansiRepository.getListInstansi(input.getSearch(), input.getPageable());
for (InstansiView instansiView : listInstansi) {
InstansiResponse instansiResponse = InstansiResponse.builder()
.id(instansiView.getId())
.instansi(instansiView.getInstansi())
.alamat(instansiView.getAlamat())
.keterangan(instansiView.getKeterangan())
.isActive(instansiView.getIsActive())
.isDelete(instansiView.getIsDelete())
.build();
instansiResponseList.add(instansiResponse);
}
return GetListInstansiResponse.builder()
.data(instansiResponseList)
.pagination(Pagination.builder()
.pageSize(input.getPageable().getPageSize())
.currentPage(input.getPageable().getPageNumber())
.totalPages(listInstansi.getTotalPages())
.totalRecords(listInstansi.getTotalElements())
.isFirstPage(listInstansi.isFirst())
.isLastPage(listInstansi.isLast())
.build())
.build();
}
private void validateRequest(InstansiRequest input) {
if (StringUtils.isNotBlank(input.getSearch())) {
input.setSearch('%'+ input.getSearch().toUpperCase()+'%');
}
}
}

View File

@ -0,0 +1,41 @@
package com.iconplus.smartproc.service.instansi;
import com.iconplus.smartproc.exception.BusinessException;
import com.iconplus.smartproc.helper.service.BaseService;
import com.iconplus.smartproc.model.entity.Instansi;
import com.iconplus.smartproc.model.request.InstansiRequest;
import com.iconplus.smartproc.model.response.InstansiResponse;
import com.iconplus.smartproc.repository.InstansiRepository;
import org.springframework.stereotype.Service;
@Service
public class PostCreateInstansiService implements BaseService<InstansiRequest, InstansiResponse> {
private InstansiRepository instansiRepository;
public PostCreateInstansiService(InstansiRepository instansiRepository) {
this.instansiRepository = instansiRepository;
}
@Override
public InstansiResponse execute(InstansiRequest input) {
var instansi = instansiRepository.findByInstansiAndIsDeleteFalse(input.getInstansi());
if (instansi.isPresent()) {
throw new BusinessException("err", "err", "err");
}
Instansi instansiEntity = Instansi.builder()
.instansi(input.getInstansi())
.alamat(input.getAlamat())
.keterangan(input.getKeterangan())
.isActive(input.getIsActive())
.isDelete(false)
.build();
var result = instansiRepository.save(instansiEntity);
return InstansiResponse.builder()
.id(result.getId())
.build();
}
}

View File

@ -0,0 +1,35 @@
package com.iconplus.smartproc.service.instansi;
import com.iconplus.smartproc.exception.BusinessException;
import com.iconplus.smartproc.helper.service.BaseService;
import com.iconplus.smartproc.model.request.InstansiRequest;
import com.iconplus.smartproc.model.response.InstansiResponse;
import com.iconplus.smartproc.repository.InstansiRepository;
import org.springframework.stereotype.Service;
@Service
public class PutUpdateInstansiService implements BaseService<InstansiRequest, InstansiResponse> {
private InstansiRepository instansiRepository;
public PutUpdateInstansiService(InstansiRepository instansiRepository) {
this.instansiRepository = instansiRepository;
}
@Override
public InstansiResponse execute(InstansiRequest input) {
var instansi = instansiRepository.findByIdAndIsDeleteFalse(input.getId())
.orElseThrow(() -> new BusinessException("err", "err", "err"));
instansi.setInstansi(input.getInstansi());
instansi.setAlamat(input.getAlamat());
instansi.setKeterangan(input.getKeterangan());
instansi.setIsActive(input.getIsActive());
var result = instansiRepository.save(instansi);
return InstansiResponse.builder()
.id(result.getId())
.build();
}
}

View File

@ -0,0 +1,30 @@
package com.iconplus.smartproc.service.manajemenuser;
import com.iconplus.smartproc.exception.BusinessException;
import com.iconplus.smartproc.helper.model.EmptyResponse;
import com.iconplus.smartproc.helper.service.BaseService;
import com.iconplus.smartproc.model.request.UsersRequest;
import com.iconplus.smartproc.repository.UsersRepository;
import org.springframework.stereotype.Service;
@Service
public class DeleteUserService implements BaseService<UsersRequest, EmptyResponse> {
private UsersRepository usersRepository;
public DeleteUserService(UsersRepository usersRepository) {
this.usersRepository = usersRepository;
}
@Override
public EmptyResponse execute(UsersRequest input) {
var users = usersRepository.findByIdAndIsDeleteFalse(input.getId())
.orElseThrow(() -> new BusinessException("err", "err", "err"));
users.setIsDelete(true);
usersRepository.save(users);
return new EmptyResponse();
}
}

View File

@ -3,14 +3,12 @@ package com.iconplus.smartproc.service.manajemenuser;
import com.iconplus.smartproc.helper.model.Pagination;
import com.iconplus.smartproc.helper.service.BaseService;
import com.iconplus.smartproc.model.projection.UserRoleView;
import com.iconplus.smartproc.model.request.RolesRequest;
import com.iconplus.smartproc.model.request.UsersRequest;
import com.iconplus.smartproc.model.response.GetUsersResponse;
import com.iconplus.smartproc.model.response.UsersResponse;
import com.iconplus.smartproc.repository.UsersRepository;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.data.domain.Page;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
@ -35,11 +33,15 @@ public class GetListUserService implements BaseService<UsersRequest, GetUsersRes
for (UserRoleView userRoleView : userRoleViews) {
UsersResponse usersResponse = UsersResponse.builder()
.id(userRoleView.getId())
.instansi(userRoleView.getInstansi())
.bidang(userRoleView.getBidang())
.nama(userRoleView.getNama())
.username(userRoleView.getUsername())
.jabatan(userRoleView.getJabatan())
.roleId(userRoleView.getRoleId())
.role(userRoleView.getRole())
.bidangId(userRoleView.getBidangId())
.bidang(userRoleView.getBidang())
.instansiId(userRoleView.getInstansiId())
.instansi(userRoleView.getInstansi())
.email(userRoleView.getEmail())
.isActive(userRoleView.getIsActive())
.build();

View File

@ -0,0 +1,40 @@
package com.iconplus.smartproc.service.manajemenuser;
import com.iconplus.smartproc.exception.BusinessException;
import com.iconplus.smartproc.helper.service.BaseService;
import com.iconplus.smartproc.model.request.UsersRequest;
import com.iconplus.smartproc.model.response.UsersResponse;
import com.iconplus.smartproc.repository.UsersRepository;
import org.springframework.stereotype.Service;
@Service
public class GetUserByIdService implements BaseService<UsersRequest, UsersResponse> {
private UsersRepository usersRepository;
public GetUserByIdService(UsersRepository usersRepository) {
this.usersRepository = usersRepository;
}
@Override
public UsersResponse execute(UsersRequest input) {
var userRoleView = usersRepository.getUserByIdAndDeletedFase(input.getId())
.orElseThrow(() -> new BusinessException("err", "err", "err"));
return UsersResponse.builder()
.id(userRoleView.getId())
.nama(userRoleView.getNama())
.username(userRoleView.getUsername())
.jabatan(userRoleView.getJabatan())
.roleId(userRoleView.getRoleId())
.role(userRoleView.getRole())
.bidangId(userRoleView.getBidangId())
.bidang(userRoleView.getBidang())
.instansiId(userRoleView.getInstansiId())
.instansi(userRoleView.getInstansi())
.email(userRoleView.getEmail())
.isActive(userRoleView.getIsActive())
.build();
}
}

View File

@ -1,40 +1,50 @@
package com.iconplus.smartproc.service.manajemenuser;
import com.iconplus.smartproc.exception.BusinessException;
import com.iconplus.smartproc.helper.service.BaseService;
import com.iconplus.smartproc.model.entity.Users;
import com.iconplus.smartproc.model.request.UsersRequest;
import com.iconplus.smartproc.model.response.UsersResponse;
import com.iconplus.smartproc.repository.UsersRepository;
import com.iconplus.smartproc.service.CommonService;
import org.springframework.stereotype.Service;
@Service
public class PostCreateUserService implements BaseService<UsersRequest, UsersResponse> {
private UsersRepository usersRepository;
private CommonService commonService;
public PostCreateUserService(UsersRepository usersRepository) {
public PostCreateUserService(UsersRepository usersRepository,
CommonService commonService) {
this.usersRepository = usersRepository;
this.commonService = commonService;
}
@Override
public UsersResponse execute(UsersRequest input) {
var users = usersRepository.findByEmailAndIsDeleteFalse(input.getEmail());
if (users.isPresent()) {
throw new BusinessException("err", "err", "err");
}
Users users = Users.builder()
// .id(input.getId())
// .username(input.getUsername())
// .email(input.getEmail())
// .nama(input.getNama())
// .bidangId(1L)
// .instansiId(1L)
// .roleId(in)
// .jabatan()
// .password()
// .isActive()
// .deleted(false)
commonService.validateUserRequst(input);
Users usersEntity = Users.builder()
.instansiId(input.getInstansiId())
.bidangId(input.getBidangId())
.nama(input.getNama())
.username(input.getUsername())
.jabatan(input.getJabatan())
.roleId(input.getRoleId())
.email(input.getEmail())
.password(input.getPassword())
.isActive(input.getIsActive())
.isDelete(false)
.build();
var result = usersRepository.save(users);
var result = usersRepository.save(usersEntity);
return UsersResponse.builder()
.id(result.getId())
.build();

View File

@ -0,0 +1,45 @@
package com.iconplus.smartproc.service.manajemenuser;
import com.iconplus.smartproc.exception.BusinessException;
import com.iconplus.smartproc.helper.service.BaseService;
import com.iconplus.smartproc.model.request.UsersRequest;
import com.iconplus.smartproc.model.response.UsersResponse;
import com.iconplus.smartproc.repository.UsersRepository;
import com.iconplus.smartproc.service.CommonService;
import org.springframework.stereotype.Service;
@Service
public class PutUpdateUserService implements BaseService<UsersRequest, UsersResponse> {
private UsersRepository usersRepository;
private CommonService commonService;
public PutUpdateUserService(UsersRepository usersRepository,
CommonService commonService) {
this.usersRepository = usersRepository;
this.commonService = commonService;
}
@Override
public UsersResponse execute(UsersRequest input) {
var users = usersRepository.findByIdAndIsDeleteFalse(input.getId())
.orElseThrow(() -> new BusinessException("err", "err", "err"));
commonService.validateUserRequst(input);
users.setInstansiId(input.getInstansiId());
users.setBidangId(input.getBidangId());
users.setNama(input.getNama());
users.setUsername(input.getUsername());
users.setJabatan(input.getJabatan());
users.setRoleId(input.getRoleId());
users.setEmail(input.getEmail());
users.setPassword(input.getPassword());
users.setIsActive(input.getIsActive());
users.setIsDelete(false);
var result = usersRepository.save(users);
return UsersResponse.builder()
.id(result.getId())
.build();
}
}