From 62ccecb214237c8ec725a81b8599f3c74163c25a Mon Sep 17 00:00:00 2001 From: dirgantarasiahaan Date: Wed, 24 May 2023 12:21:01 +0700 Subject: [PATCH] add api instansi and user management --- .../controller/InstansiController.java | 74 ++++++++++++++++++ .../smartproc/controller/UsersController.java | 77 +++++++------------ .../smartproc/model/entity/Instansi.java | 3 + .../model/projection/InstansiView.java | 23 ++++++ .../model/projection/UserRoleView.java | 6 +- .../model/request/InstansiRequest.java | 25 ++++++ .../smartproc/model/request/UsersRequest.java | 4 + .../response/GetListInstansiResponse.java | 20 +++++ .../model/response/InstansiResponse.java | 21 +++++ .../model/response/UsersResponse.java | 12 ++- .../repository/BidangRepository.java | 13 ++++ .../repository/InstansiRepository.java | 30 ++++++++ .../smartproc/repository/UsersRepository.java | 31 ++++++++ .../smartproc/service/CommonService.java | 47 +++++++++++ .../instansi/DeleteInstansiService.java | 30 ++++++++ .../instansi/GetInstansiByIdService.java | 34 ++++++++ .../instansi/GetListInstansiService.java | 65 ++++++++++++++++ .../instansi/PostCreateInstansiService.java | 41 ++++++++++ .../instansi/PutUpdateInstansiService.java | 35 +++++++++ .../manajemenuser/DeleteUserService.java | 30 ++++++++ .../manajemenuser/GetListUserService.java | 10 ++- .../manajemenuser/GetUserByIdService.java | 40 ++++++++++ .../manajemenuser/PostCreateUserService.java | 38 +++++---- .../manajemenuser/PutUpdateUserService.java | 45 +++++++++++ 24 files changed, 683 insertions(+), 71 deletions(-) create mode 100644 src/main/java/com/iconplus/smartproc/controller/InstansiController.java create mode 100644 src/main/java/com/iconplus/smartproc/model/projection/InstansiView.java create mode 100644 src/main/java/com/iconplus/smartproc/model/request/InstansiRequest.java create mode 100644 src/main/java/com/iconplus/smartproc/model/response/GetListInstansiResponse.java create mode 100644 src/main/java/com/iconplus/smartproc/model/response/InstansiResponse.java create mode 100644 src/main/java/com/iconplus/smartproc/repository/BidangRepository.java create mode 100644 src/main/java/com/iconplus/smartproc/repository/InstansiRepository.java create mode 100644 src/main/java/com/iconplus/smartproc/service/CommonService.java create mode 100644 src/main/java/com/iconplus/smartproc/service/instansi/DeleteInstansiService.java create mode 100644 src/main/java/com/iconplus/smartproc/service/instansi/GetInstansiByIdService.java create mode 100644 src/main/java/com/iconplus/smartproc/service/instansi/GetListInstansiService.java create mode 100644 src/main/java/com/iconplus/smartproc/service/instansi/PostCreateInstansiService.java create mode 100644 src/main/java/com/iconplus/smartproc/service/instansi/PutUpdateInstansiService.java create mode 100644 src/main/java/com/iconplus/smartproc/service/manajemenuser/DeleteUserService.java create mode 100644 src/main/java/com/iconplus/smartproc/service/manajemenuser/GetUserByIdService.java create mode 100644 src/main/java/com/iconplus/smartproc/service/manajemenuser/PutUpdateUserService.java diff --git a/src/main/java/com/iconplus/smartproc/controller/InstansiController.java b/src/main/java/com/iconplus/smartproc/controller/InstansiController.java new file mode 100644 index 0000000..bd1455c --- /dev/null +++ b/src/main/java/com/iconplus/smartproc/controller/InstansiController.java @@ -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()); + } +} diff --git a/src/main/java/com/iconplus/smartproc/controller/UsersController.java b/src/main/java/com/iconplus/smartproc/controller/UsersController.java index 4dc836b..adb8bf4 100644 --- a/src/main/java/com/iconplus/smartproc/controller/UsersController.java +++ b/src/main/java/com/iconplus/smartproc/controller/UsersController.java @@ -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 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 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> 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); + public EmptyResponse deleteUsers(@PathVariable Long id){ + return deleteUserService.execute(UsersRequest.builder() + .id(id) + .build()); } } \ No newline at end of file diff --git a/src/main/java/com/iconplus/smartproc/model/entity/Instansi.java b/src/main/java/com/iconplus/smartproc/model/entity/Instansi.java index f324d83..ca5a949 100644 --- a/src/main/java/com/iconplus/smartproc/model/entity/Instansi.java +++ b/src/main/java/com/iconplus/smartproc/model/entity/Instansi.java @@ -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; diff --git a/src/main/java/com/iconplus/smartproc/model/projection/InstansiView.java b/src/main/java/com/iconplus/smartproc/model/projection/InstansiView.java new file mode 100644 index 0000000..3dd7329 --- /dev/null +++ b/src/main/java/com/iconplus/smartproc/model/projection/InstansiView.java @@ -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); + +} diff --git a/src/main/java/com/iconplus/smartproc/model/projection/UserRoleView.java b/src/main/java/com/iconplus/smartproc/model/projection/UserRoleView.java index b931002..39dbd1b 100644 --- a/src/main/java/com/iconplus/smartproc/model/projection/UserRoleView.java +++ b/src/main/java/com/iconplus/smartproc/model/projection/UserRoleView.java @@ -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); diff --git a/src/main/java/com/iconplus/smartproc/model/request/InstansiRequest.java b/src/main/java/com/iconplus/smartproc/model/request/InstansiRequest.java new file mode 100644 index 0000000..6ccc0ea --- /dev/null +++ b/src/main/java/com/iconplus/smartproc/model/request/InstansiRequest.java @@ -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; + +} diff --git a/src/main/java/com/iconplus/smartproc/model/request/UsersRequest.java b/src/main/java/com/iconplus/smartproc/model/request/UsersRequest.java index 373b00c..c90a863 100644 --- a/src/main/java/com/iconplus/smartproc/model/request/UsersRequest.java +++ b/src/main/java/com/iconplus/smartproc/model/request/UsersRequest.java @@ -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; diff --git a/src/main/java/com/iconplus/smartproc/model/response/GetListInstansiResponse.java b/src/main/java/com/iconplus/smartproc/model/response/GetListInstansiResponse.java new file mode 100644 index 0000000..4fef9e0 --- /dev/null +++ b/src/main/java/com/iconplus/smartproc/model/response/GetListInstansiResponse.java @@ -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 data; + private Pagination pagination; +} diff --git a/src/main/java/com/iconplus/smartproc/model/response/InstansiResponse.java b/src/main/java/com/iconplus/smartproc/model/response/InstansiResponse.java new file mode 100644 index 0000000..520da30 --- /dev/null +++ b/src/main/java/com/iconplus/smartproc/model/response/InstansiResponse.java @@ -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; +} diff --git a/src/main/java/com/iconplus/smartproc/model/response/UsersResponse.java b/src/main/java/com/iconplus/smartproc/model/response/UsersResponse.java index 9bcf829..d180742 100644 --- a/src/main/java/com/iconplus/smartproc/model/response/UsersResponse.java +++ b/src/main/java/com/iconplus/smartproc/model/response/UsersResponse.java @@ -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; diff --git a/src/main/java/com/iconplus/smartproc/repository/BidangRepository.java b/src/main/java/com/iconplus/smartproc/repository/BidangRepository.java new file mode 100644 index 0000000..e24fe16 --- /dev/null +++ b/src/main/java/com/iconplus/smartproc/repository/BidangRepository.java @@ -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 { + + Optional findByIdAndIsDeleteFalse(Long id); +} diff --git a/src/main/java/com/iconplus/smartproc/repository/InstansiRepository.java b/src/main/java/com/iconplus/smartproc/repository/InstansiRepository.java new file mode 100644 index 0000000..ded6024 --- /dev/null +++ b/src/main/java/com/iconplus/smartproc/repository/InstansiRepository.java @@ -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 { + + @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 getListInstansi(String search, Pageable pageable); + + Optional findByIdAndIsDeleteFalse(Long id); + + Optional findByInstansiAndIsDeleteFalse(String instansi); +} diff --git a/src/main/java/com/iconplus/smartproc/repository/UsersRepository.java b/src/main/java/com/iconplus/smartproc/repository/UsersRepository.java index 14e45c0..c8481ce 100644 --- a/src/main/java/com/iconplus/smartproc/repository/UsersRepository.java +++ b/src/main/java/com/iconplus/smartproc/repository/UsersRepository.java @@ -15,13 +15,21 @@ public interface UsersRepository extends JpaRepository { @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 { Page getAllUsersAndDeletedFase(String search, Pageable pageable); Optional findByEmailAndIsDeleteFalse(String email); + + Optional 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 getUserByIdAndDeletedFase(Long id); } diff --git a/src/main/java/com/iconplus/smartproc/service/CommonService.java b/src/main/java/com/iconplus/smartproc/service/CommonService.java new file mode 100644 index 0000000..beae0dd --- /dev/null +++ b/src/main/java/com/iconplus/smartproc/service/CommonService.java @@ -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"); + } + } +} diff --git a/src/main/java/com/iconplus/smartproc/service/instansi/DeleteInstansiService.java b/src/main/java/com/iconplus/smartproc/service/instansi/DeleteInstansiService.java new file mode 100644 index 0000000..4ddb038 --- /dev/null +++ b/src/main/java/com/iconplus/smartproc/service/instansi/DeleteInstansiService.java @@ -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 { + + 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(); + } +} diff --git a/src/main/java/com/iconplus/smartproc/service/instansi/GetInstansiByIdService.java b/src/main/java/com/iconplus/smartproc/service/instansi/GetInstansiByIdService.java new file mode 100644 index 0000000..d98dc2a --- /dev/null +++ b/src/main/java/com/iconplus/smartproc/service/instansi/GetInstansiByIdService.java @@ -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 { + + 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(); + } +} diff --git a/src/main/java/com/iconplus/smartproc/service/instansi/GetListInstansiService.java b/src/main/java/com/iconplus/smartproc/service/instansi/GetListInstansiService.java new file mode 100644 index 0000000..93f0c8b --- /dev/null +++ b/src/main/java/com/iconplus/smartproc/service/instansi/GetListInstansiService.java @@ -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 { + + private InstansiRepository instansiRepository; + + public GetListInstansiService(InstansiRepository instansiRepository) { + this.instansiRepository = instansiRepository; + } + + @Override + public GetListInstansiResponse execute(InstansiRequest input) { + validateRequest(input); + + List 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()+'%'); + } + } +} diff --git a/src/main/java/com/iconplus/smartproc/service/instansi/PostCreateInstansiService.java b/src/main/java/com/iconplus/smartproc/service/instansi/PostCreateInstansiService.java new file mode 100644 index 0000000..d5c22d2 --- /dev/null +++ b/src/main/java/com/iconplus/smartproc/service/instansi/PostCreateInstansiService.java @@ -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 { + + 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(); + } +} diff --git a/src/main/java/com/iconplus/smartproc/service/instansi/PutUpdateInstansiService.java b/src/main/java/com/iconplus/smartproc/service/instansi/PutUpdateInstansiService.java new file mode 100644 index 0000000..15c3c6d --- /dev/null +++ b/src/main/java/com/iconplus/smartproc/service/instansi/PutUpdateInstansiService.java @@ -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 { + + 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(); + } +} diff --git a/src/main/java/com/iconplus/smartproc/service/manajemenuser/DeleteUserService.java b/src/main/java/com/iconplus/smartproc/service/manajemenuser/DeleteUserService.java new file mode 100644 index 0000000..9c2d58b --- /dev/null +++ b/src/main/java/com/iconplus/smartproc/service/manajemenuser/DeleteUserService.java @@ -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 { + + 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(); + } +} diff --git a/src/main/java/com/iconplus/smartproc/service/manajemenuser/GetListUserService.java b/src/main/java/com/iconplus/smartproc/service/manajemenuser/GetListUserService.java index f9a01b5..487bfd8 100644 --- a/src/main/java/com/iconplus/smartproc/service/manajemenuser/GetListUserService.java +++ b/src/main/java/com/iconplus/smartproc/service/manajemenuser/GetListUserService.java @@ -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 { + + 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(); + } +} diff --git a/src/main/java/com/iconplus/smartproc/service/manajemenuser/PostCreateUserService.java b/src/main/java/com/iconplus/smartproc/service/manajemenuser/PostCreateUserService.java index 4598602..2b790b7 100644 --- a/src/main/java/com/iconplus/smartproc/service/manajemenuser/PostCreateUserService.java +++ b/src/main/java/com/iconplus/smartproc/service/manajemenuser/PostCreateUserService.java @@ -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 { 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(); diff --git a/src/main/java/com/iconplus/smartproc/service/manajemenuser/PutUpdateUserService.java b/src/main/java/com/iconplus/smartproc/service/manajemenuser/PutUpdateUserService.java new file mode 100644 index 0000000..821a977 --- /dev/null +++ b/src/main/java/com/iconplus/smartproc/service/manajemenuser/PutUpdateUserService.java @@ -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 { + + 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(); + } +}