diff --git a/src/main/java/com/iconplus/smartproc/controller/RolesController.java b/src/main/java/com/iconplus/smartproc/controller/RolesController.java index 30ea420..13eafa2 100644 --- a/src/main/java/com/iconplus/smartproc/controller/RolesController.java +++ b/src/main/java/com/iconplus/smartproc/controller/RolesController.java @@ -1,66 +1,73 @@ package com.iconplus.smartproc.controller; -import com.iconplus.smartproc.model.entity.Roles; -import com.iconplus.smartproc.exception.ResourceNotFoundException; -import com.iconplus.smartproc.repository.RolesRepository; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.ResponseEntity; +import com.iconplus.smartproc.helper.model.EmptyResponse; +import com.iconplus.smartproc.model.request.RolesRequest; +import com.iconplus.smartproc.model.response.GetRolesResponse; +import com.iconplus.smartproc.model.response.RolesResponse; +import com.iconplus.smartproc.service.roles.*; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; 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/roles") public class RolesController { - @Autowired - private RolesRepository rolesRepository; - //get all data + private final GetRolesService getRolesService; + private final PostCreateRoleService postCreateRoleService; + private final GetRoleByIdService getRoleByIdService; + private final PutUpdateRoleService putUpdateRoleService; + private final DeleteRoleService deleteRoleService; + + public RolesController(GetRolesService getRolesService, + PostCreateRoleService postCreateRoleService, + GetRoleByIdService getRoleByIdService, + PutUpdateRoleService putUpdateRoleService, + DeleteRoleService deleteRoleService) { + this.getRolesService = getRolesService; + this.postCreateRoleService = postCreateRoleService; + this.getRoleByIdService = getRoleByIdService; + this.putUpdateRoleService = putUpdateRoleService; + this.deleteRoleService = deleteRoleService; + } + @GetMapping - public List getAllRoless(){ - return rolesRepository.findAll(); + public GetRolesResponse getRoles(@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); + RolesRequest rolesRequest = RolesRequest.builder() + .search(search) + .pageable(pageable) + .build(); + + return getRolesService.execute(rolesRequest); } - // create @PostMapping - public Roles createRoles(@RequestBody Roles roles) { - return rolesRepository.save(roles); + public RolesResponse createRoles(@RequestBody RolesRequest rolesRequest) { + return postCreateRoleService.execute(rolesRequest); } - // get roles by id rest api @GetMapping("/{id}") - public ResponseEntity getRolesById(@PathVariable Long id) { - Roles roles = rolesRepository.findById(id) - .orElseThrow(() -> new ResourceNotFoundException("Roles not exist with id :" + id)); - return ResponseEntity.ok(roles); + public RolesResponse getRolesById(@PathVariable Long id) { + return getRoleByIdService.execute(RolesRequest.builder() + .id(id) + .build()); } - // update roles rest api @PutMapping("/{id}") - public ResponseEntity updateRoles(@PathVariable Long id, @RequestBody Roles rolesDetails){ - Roles roles = rolesRepository.findById(id) - .orElseThrow(() -> new ResourceNotFoundException("Roles not exist with id :" + id)); - - roles.setRole(rolesDetails.getRole()); - roles.setKeterangan(rolesDetails.getKeterangan()); - roles.setIsActive(rolesDetails.getIsActive()); - - Roles updatedRoles = rolesRepository.save(roles); - return ResponseEntity.ok(updatedRoles); + public RolesResponse updateRoles(@PathVariable Long id, @RequestBody RolesRequest rolesRequest){ + rolesRequest.setId(id); + return putUpdateRoleService.execute(rolesRequest); } - // delete roles rest api @DeleteMapping("/{id}") - public ResponseEntity> deleteRoles(@PathVariable Long id){ - Roles roles = rolesRepository.findById(id) - .orElseThrow(() -> new ResourceNotFoundException("Supposmatrix not exist with id :" + id)); - - rolesRepository.delete(roles); - Map response = new HashMap<>(); - response.put("deleted", Boolean.TRUE); - return ResponseEntity.ok(response); + public EmptyResponse deleteRoles(@PathVariable Long id){ + return deleteRoleService.execute(RolesRequest.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 73758c8..4dc836b 100644 --- a/src/main/java/com/iconplus/smartproc/controller/UsersController.java +++ b/src/main/java/com/iconplus/smartproc/controller/UsersController.java @@ -2,8 +2,15 @@ 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.*; @@ -18,10 +25,36 @@ public class UsersController { @Autowired private UsersRepository usersRepository; - //get all data + private final GetListUserService getListUserService; + public UsersController(GetListUserService getListUserService) { + this.getListUserService = getListUserService; + } + + @GetMapping - public List getAllUserss(){ - return usersRepository.findAll(); + 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 @@ -45,7 +78,7 @@ public class UsersController { .orElseThrow(() -> new ResourceNotFoundException("Users not exist with id :" + id)); users.setUsername(usersDetails.getUsername()); - users.setFullname(usersDetails.getFullname()); + users.setNama(usersDetails.getNama()); users.setEmail(usersDetails.getEmail()); users.setPassword(usersDetails.getPassword()); // users.setInstansi(usersDetails.getInstansi()); diff --git a/src/main/java/com/iconplus/smartproc/model/entity/Bidang.java b/src/main/java/com/iconplus/smartproc/model/entity/Bidang.java new file mode 100644 index 0000000..64002b2 --- /dev/null +++ b/src/main/java/com/iconplus/smartproc/model/entity/Bidang.java @@ -0,0 +1,38 @@ +package com.iconplus.smartproc.model.entity; + +import com.iconplus.smartproc.helper.base.BaseEntity; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.hibernate.annotations.Type; + +import javax.persistence.*; + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +@Entity +@Table(name = "bidang") +public class Bidang extends BaseEntity { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "id") + private Long id; + + @Column(name = "bidang") + private String bidang; + + @Column(name = "keterangan") + private String keterangan; + + @Column(name = "is_active") + @Type(type = "org.hibernate.type.NumericBooleanType") + private Boolean isActive; + + @Column(name = "is_delete") + @Type(type = "org.hibernate.type.NumericBooleanType") + private Boolean isDelete; +} diff --git a/src/main/java/com/iconplus/smartproc/model/entity/Instansi.java b/src/main/java/com/iconplus/smartproc/model/entity/Instansi.java new file mode 100644 index 0000000..f324d83 --- /dev/null +++ b/src/main/java/com/iconplus/smartproc/model/entity/Instansi.java @@ -0,0 +1,38 @@ +package com.iconplus.smartproc.model.entity; + +import com.iconplus.smartproc.helper.base.BaseEntity; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.hibernate.annotations.Type; + +import javax.persistence.*; + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +@Entity +@Table(name = "instansi") +public class Instansi extends BaseEntity { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "id") + private Long id; + + @Column(name = "instansi") + private String instansi; + + @Column(name = "keterangan") + private String keterangan; + + @Column(name = "is_active") + @Type(type = "org.hibernate.type.NumericBooleanType") + private Boolean isActive; + + @Column(name = "is_delete") + @Type(type = "org.hibernate.type.NumericBooleanType") + private Boolean isDelete; +} diff --git a/src/main/java/com/iconplus/smartproc/model/entity/JenisAnggaran.java b/src/main/java/com/iconplus/smartproc/model/entity/JenisAnggaran.java index 7e28219..7ea948b 100644 --- a/src/main/java/com/iconplus/smartproc/model/entity/JenisAnggaran.java +++ b/src/main/java/com/iconplus/smartproc/model/entity/JenisAnggaran.java @@ -19,7 +19,7 @@ public class JenisAnggaran extends BaseEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") - private long id; + private Long id; @Column(name = "jenis_anggaran") private String jenisAnggaran; @@ -27,8 +27,12 @@ public class JenisAnggaran extends BaseEntity { @Column(name = "keterangan") private String keterangan; - @Column(name = "deleted") + @Column(name = "is_active") @Type(type = "org.hibernate.type.NumericBooleanType") - private Boolean deleted; + private Boolean isActive; + + @Column(name = "is_delete") + @Type(type = "org.hibernate.type.NumericBooleanType") + private Boolean isDelete; } diff --git a/src/main/java/com/iconplus/smartproc/model/entity/JenisKontrak.java b/src/main/java/com/iconplus/smartproc/model/entity/JenisKontrak.java index 20b5e37..a84127b 100644 --- a/src/main/java/com/iconplus/smartproc/model/entity/JenisKontrak.java +++ b/src/main/java/com/iconplus/smartproc/model/entity/JenisKontrak.java @@ -1,8 +1,10 @@ package com.iconplus.smartproc.model.entity; import com.iconplus.smartproc.helper.base.BaseEntity; +import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; import org.hibernate.annotations.Type; import javax.persistence.*; @@ -11,11 +13,13 @@ import javax.persistence.*; @Table(name = "jenis_kontrak") @Data @Builder +@AllArgsConstructor +@NoArgsConstructor public class JenisKontrak extends BaseEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") - private long id; + private Long id; @Column(name = "jenis_kontrak") private String jenisKontrak; @@ -23,8 +27,12 @@ public class JenisKontrak extends BaseEntity { @Column(name = "keterangan") private String keterangan; - @Column(name = "deleted") + @Column(name = "is_active") @Type(type = "org.hibernate.type.NumericBooleanType") - private Boolean deleted; + private Boolean isActive; + + @Column(name = "is_delete") + @Type(type = "org.hibernate.type.NumericBooleanType") + private Boolean isDelete; } diff --git a/src/main/java/com/iconplus/smartproc/model/entity/JenisPengadaan.java b/src/main/java/com/iconplus/smartproc/model/entity/JenisPengadaan.java index 52980b0..6881919 100644 --- a/src/main/java/com/iconplus/smartproc/model/entity/JenisPengadaan.java +++ b/src/main/java/com/iconplus/smartproc/model/entity/JenisPengadaan.java @@ -1,8 +1,10 @@ package com.iconplus.smartproc.model.entity; import com.iconplus.smartproc.helper.base.BaseEntity; +import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; import org.hibernate.annotations.Type; import javax.persistence.*; @@ -11,6 +13,8 @@ import javax.persistence.*; @Table(name = "jenis_pengadaan") @Data @Builder +@AllArgsConstructor +@NoArgsConstructor public class JenisPengadaan extends BaseEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @@ -23,8 +27,12 @@ public class JenisPengadaan extends BaseEntity { @Column(name = "keterangan") private String keterangan; - @Column(name = "deleted") + @Column(name = "is_active") @Type(type = "org.hibernate.type.NumericBooleanType") - private Boolean deleted; + private Boolean isActive; + + @Column(name = "is_delete") + @Type(type = "org.hibernate.type.NumericBooleanType") + private Boolean isDelete; } diff --git a/src/main/java/com/iconplus/smartproc/model/entity/Lokasi.java b/src/main/java/com/iconplus/smartproc/model/entity/Lokasi.java index 707dde5..8c479df 100644 --- a/src/main/java/com/iconplus/smartproc/model/entity/Lokasi.java +++ b/src/main/java/com/iconplus/smartproc/model/entity/Lokasi.java @@ -1,8 +1,10 @@ package com.iconplus.smartproc.model.entity; import com.iconplus.smartproc.helper.base.BaseEntity; +import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; import org.hibernate.annotations.Type; import javax.persistence.*; @@ -11,11 +13,13 @@ import javax.persistence.*; @Table(name = "lokasi") @Data @Builder +@AllArgsConstructor +@NoArgsConstructor public class Lokasi extends BaseEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") - private long id; + private Long id; @Column(name = "lokasi") private String lokasi; @@ -23,8 +27,12 @@ public class Lokasi extends BaseEntity { @Column(name = "keterangan") private String keterangan; - @Column(name = "deleted") + @Column(name = "is_active") @Type(type = "org.hibernate.type.NumericBooleanType") - private Boolean deleted; + private Boolean isActive; + + @Column(name = "is_delete") + @Type(type = "org.hibernate.type.NumericBooleanType") + private Boolean isDelete; } diff --git a/src/main/java/com/iconplus/smartproc/model/entity/MetodePengadaan.java b/src/main/java/com/iconplus/smartproc/model/entity/MetodePengadaan.java index 0f0b34f..aa6a2bf 100644 --- a/src/main/java/com/iconplus/smartproc/model/entity/MetodePengadaan.java +++ b/src/main/java/com/iconplus/smartproc/model/entity/MetodePengadaan.java @@ -1,8 +1,10 @@ package com.iconplus.smartproc.model.entity; import com.iconplus.smartproc.helper.base.BaseEntity; +import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; import org.hibernate.annotations.Type; import javax.persistence.*; @@ -11,6 +13,8 @@ import javax.persistence.*; @Table(name = "metode_pengadaan") @Data @Builder +@AllArgsConstructor +@NoArgsConstructor public class MetodePengadaan extends BaseEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @@ -23,8 +27,8 @@ public class MetodePengadaan extends BaseEntity { @Column(name = "keterangan") private String keterangan; - @Column(name = "deleted") + @Column(name = "is_active") @Type(type = "org.hibernate.type.NumericBooleanType") - private Boolean deleted; + private Boolean isDelete; } diff --git a/src/main/java/com/iconplus/smartproc/model/entity/MetodePenyampaian.java b/src/main/java/com/iconplus/smartproc/model/entity/MetodePenyampaian.java index 900a8e1..23093cf 100644 --- a/src/main/java/com/iconplus/smartproc/model/entity/MetodePenyampaian.java +++ b/src/main/java/com/iconplus/smartproc/model/entity/MetodePenyampaian.java @@ -2,8 +2,10 @@ package com.iconplus.smartproc.model.entity; import com.iconplus.smartproc.helper.base.BaseEntity; +import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; import org.hibernate.annotations.Type; import javax.persistence.*; @@ -12,6 +14,8 @@ import javax.persistence.*; @Table(name = "metode_penyampaian") @Data @Builder +@AllArgsConstructor +@NoArgsConstructor public class MetodePenyampaian extends BaseEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @@ -24,8 +28,12 @@ public class MetodePenyampaian extends BaseEntity { @Column(name = "keterangan") private String keterangan; - @Column(name = "deleted") + @Column(name = "is_active") @Type(type = "org.hibernate.type.NumericBooleanType") - private Boolean deleted; + private Boolean isActive; + + @Column(name = "is_delete") + @Type(type = "org.hibernate.type.NumericBooleanType") + private Boolean isDelete; } diff --git a/src/main/java/com/iconplus/smartproc/model/entity/Roles.java b/src/main/java/com/iconplus/smartproc/model/entity/Roles.java index 5be5838..9e3fda2 100644 --- a/src/main/java/com/iconplus/smartproc/model/entity/Roles.java +++ b/src/main/java/com/iconplus/smartproc/model/entity/Roles.java @@ -1,21 +1,25 @@ package com.iconplus.smartproc.model.entity; import com.iconplus.smartproc.helper.base.BaseEntity; +import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; import org.hibernate.annotations.Type; import javax.persistence.*; -@Entity -@Table(name = "roles") @Data @Builder +@AllArgsConstructor +@NoArgsConstructor +@Entity +@Table(name = "roles") public class Roles extends BaseEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") - private long id; + private Long id; @Column(name = "role") private String role; @@ -27,8 +31,8 @@ public class Roles extends BaseEntity { @Type(type = "org.hibernate.type.NumericBooleanType") private Boolean isActive; - @Column(name = "deleted") + @Column(name = "is_delete") @Type(type = "org.hibernate.type.NumericBooleanType") - private Boolean deleted; + private Boolean isDelete; } diff --git a/src/main/java/com/iconplus/smartproc/model/entity/StrategiPengadaan.java b/src/main/java/com/iconplus/smartproc/model/entity/StrategiPengadaan.java index a890f8e..9b84d45 100644 --- a/src/main/java/com/iconplus/smartproc/model/entity/StrategiPengadaan.java +++ b/src/main/java/com/iconplus/smartproc/model/entity/StrategiPengadaan.java @@ -1,8 +1,10 @@ package com.iconplus.smartproc.model.entity; import com.iconplus.smartproc.helper.base.BaseEntity; +import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; import org.hibernate.annotations.Type; import javax.persistence.*; @@ -11,6 +13,8 @@ import javax.persistence.*; @Table(name = "strategi_pengadaan") @Data @Builder +@AllArgsConstructor +@NoArgsConstructor public class StrategiPengadaan extends BaseEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @@ -23,8 +27,12 @@ public class StrategiPengadaan extends BaseEntity { @Column(name = "keterangan") private String keterangan; - @Column(name = "deleted") + @Column(name = "is_active") @Type(type = "org.hibernate.type.NumericBooleanType") - private Boolean deleted; + private Boolean isActive; + + @Column(name = "is_delete") + @Type(type = "org.hibernate.type.NumericBooleanType") + private Boolean isDelete; } diff --git a/src/main/java/com/iconplus/smartproc/model/entity/SumberDana.java b/src/main/java/com/iconplus/smartproc/model/entity/SumberDana.java index cdae9d1..1e50261 100644 --- a/src/main/java/com/iconplus/smartproc/model/entity/SumberDana.java +++ b/src/main/java/com/iconplus/smartproc/model/entity/SumberDana.java @@ -1,8 +1,10 @@ package com.iconplus.smartproc.model.entity; import com.iconplus.smartproc.helper.base.BaseEntity; +import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; import org.hibernate.annotations.Type; import javax.persistence.*; @@ -11,6 +13,8 @@ import javax.persistence.*; @Table(name = "sumber_dana") @Data @Builder +@AllArgsConstructor +@NoArgsConstructor public class SumberDana extends BaseEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @@ -23,8 +27,12 @@ public class SumberDana extends BaseEntity { @Column(name = "keterangan") private String keterangan; - @Column(name = "deleted") + @Column(name = "is_active") @Type(type = "org.hibernate.type.NumericBooleanType") - private Boolean deleted; + private Boolean isActive; + + @Column(name = "is_delete") + @Type(type = "org.hibernate.type.NumericBooleanType") + private Boolean isDelete; } diff --git a/src/main/java/com/iconplus/smartproc/model/entity/SupplyPositioningMatrix.java b/src/main/java/com/iconplus/smartproc/model/entity/SupplyPositioningMatrix.java index 39b4881..841b74c 100644 --- a/src/main/java/com/iconplus/smartproc/model/entity/SupplyPositioningMatrix.java +++ b/src/main/java/com/iconplus/smartproc/model/entity/SupplyPositioningMatrix.java @@ -1,8 +1,10 @@ package com.iconplus.smartproc.model.entity; import com.iconplus.smartproc.helper.base.BaseEntity; +import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; import org.hibernate.annotations.Type; import javax.persistence.*; @@ -11,6 +13,8 @@ import javax.persistence.*; @Table(name = "supply_positioning_matrix") @Data @Builder +@AllArgsConstructor +@NoArgsConstructor public class SupplyPositioningMatrix extends BaseEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @@ -23,8 +27,12 @@ public class SupplyPositioningMatrix extends BaseEntity { @Column(name = "keterangan") private String keterangan; - @Column(name = "deleted") + @Column(name = "is_active") @Type(type = "org.hibernate.type.NumericBooleanType") - private Boolean deleted; + private Boolean isActive; + + @Column(name = "is_delete") + @Type(type = "org.hibernate.type.NumericBooleanType") + private Boolean isDelete; } diff --git a/src/main/java/com/iconplus/smartproc/model/entity/TokenManagement.java b/src/main/java/com/iconplus/smartproc/model/entity/TokenManagement.java index 10c7b65..75c9963 100644 --- a/src/main/java/com/iconplus/smartproc/model/entity/TokenManagement.java +++ b/src/main/java/com/iconplus/smartproc/model/entity/TokenManagement.java @@ -45,7 +45,7 @@ public class TokenManagement extends BaseEntity { @Column(name = "expired_time") private Timestamp expiredTime; - @Column(name = "deleted") + @Column(name = "is_delete") @Type(type = "org.hibernate.type.NumericBooleanType") - private Boolean deleted; + private Boolean isDelete; } diff --git a/src/main/java/com/iconplus/smartproc/model/entity/UnitInisiator.java b/src/main/java/com/iconplus/smartproc/model/entity/UnitInisiator.java index c33558f..3ff82d8 100644 --- a/src/main/java/com/iconplus/smartproc/model/entity/UnitInisiator.java +++ b/src/main/java/com/iconplus/smartproc/model/entity/UnitInisiator.java @@ -1,8 +1,10 @@ package com.iconplus.smartproc.model.entity; import com.iconplus.smartproc.helper.base.BaseEntity; +import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; import org.hibernate.annotations.Type; import javax.persistence.*; @@ -11,6 +13,8 @@ import javax.persistence.*; @Table(name = "unit_inisiator") @Data @Builder +@AllArgsConstructor +@NoArgsConstructor public class UnitInisiator extends BaseEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @@ -23,8 +27,12 @@ public class UnitInisiator extends BaseEntity { @Column(name = "keterangan") private String keterangan; - @Column(name = "deleted") + @Column(name = "is_active") @Type(type = "org.hibernate.type.NumericBooleanType") - private Boolean deleted; + private Boolean isActive; + + @Column(name = "is_delete") + @Type(type = "org.hibernate.type.NumericBooleanType") + private Boolean isDelete; } diff --git a/src/main/java/com/iconplus/smartproc/model/entity/Users.java b/src/main/java/com/iconplus/smartproc/model/entity/Users.java index 1e5ab59..0ec4c8d 100644 --- a/src/main/java/com/iconplus/smartproc/model/entity/Users.java +++ b/src/main/java/com/iconplus/smartproc/model/entity/Users.java @@ -1,27 +1,31 @@ package com.iconplus.smartproc.model.entity; import com.iconplus.smartproc.helper.base.BaseEntity; +import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; import org.hibernate.annotations.Type; import javax.persistence.*; -@Entity -@Table(name = "users") @Data @Builder +@AllArgsConstructor +@NoArgsConstructor +@Entity +@Table(name = "users") public class Users extends BaseEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") - private long id; + private Long id; @Column(name = "username") private String username; - @Column(name = "fullname") - private String fullname; + @Column(name = "nama") + private String nama; @Column(name = "email") private String email; @@ -30,10 +34,10 @@ public class Users extends BaseEntity { private String password; @Column(name = "instansi_id") - private String instansiId; + private Long instansiId; @Column(name = "bidang_id") - private String bidangId; + private Long bidangId; @Column(name = "jabatan") private String jabatan; @@ -45,7 +49,7 @@ public class Users extends BaseEntity { @Type(type = "org.hibernate.type.NumericBooleanType") private Boolean isActive; - @Column(name = "deleted") + @Column(name = "is_delete") @Type(type = "org.hibernate.type.NumericBooleanType") - private Boolean deleted; + private Boolean isDelete; } diff --git a/src/main/java/com/iconplus/smartproc/model/projection/JenisAnggaranView.java b/src/main/java/com/iconplus/smartproc/model/projection/JenisAnggaranView.java index 3f77ef0..28ace7e 100644 --- a/src/main/java/com/iconplus/smartproc/model/projection/JenisAnggaranView.java +++ b/src/main/java/com/iconplus/smartproc/model/projection/JenisAnggaranView.java @@ -5,10 +5,12 @@ public interface JenisAnggaranView { Long getId(); String getJenisAnggaran(); String getKeterangan(); - Boolean getDeleted(); + String getIsActive(); + Boolean getIsDelete(); void setId(Long id); void setJenisAnggaran(String jenisAnggaran); void setKeterangan(String keterangan); - void setDeleted(Boolean deleted); + void setIsActive(Boolean isActive); + void setIsDelete(Boolean isDelete); } diff --git a/src/main/java/com/iconplus/smartproc/model/projection/RolesView.java b/src/main/java/com/iconplus/smartproc/model/projection/RolesView.java new file mode 100644 index 0000000..78e6519 --- /dev/null +++ b/src/main/java/com/iconplus/smartproc/model/projection/RolesView.java @@ -0,0 +1,16 @@ +package com.iconplus.smartproc.model.projection; + +public interface RolesView { + + Long getId(); + String getRole(); + String getKeterangan(); + Boolean getIsActive(); + Boolean getIsDelete(); + + void setId(Long id); + void setRole(String role); + void setKeterangan(String keterangan); + void setIsActive(Boolean isActive); + 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 284aa4d..b931002 100644 --- a/src/main/java/com/iconplus/smartproc/model/projection/UserRoleView.java +++ b/src/main/java/com/iconplus/smartproc/model/projection/UserRoleView.java @@ -4,16 +4,32 @@ public interface UserRoleView { Long getId(); String getUsername(); + String getNama(); + String getEmail(); + Long getInstansiId(); + String getInstansi(); + Long getBidangId(); + String getBidang(); + String getJabatan(); + Boolean getIsActive(); String getPassword(); Long getRoleId(); String getRole(); - Boolean getDeleted(); + Boolean getIsDelete(); void setId(Long id); void setUsername(String username); + void setNama(String nama); + void setEmail(String email); + void setInstatnsi(String instansi); + 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); void setRole(String role); - void setDeleted(Boolean deleted); + void setIsDelete(Boolean isDelete); } diff --git a/src/main/java/com/iconplus/smartproc/model/request/JenisAnggaranRequest.java b/src/main/java/com/iconplus/smartproc/model/request/JenisAnggaranRequest.java index 003af07..8ed6848 100644 --- a/src/main/java/com/iconplus/smartproc/model/request/JenisAnggaranRequest.java +++ b/src/main/java/com/iconplus/smartproc/model/request/JenisAnggaranRequest.java @@ -13,7 +13,7 @@ public class JenisAnggaranRequest extends BaseRequest { private String jenisAnggaran; private String keterangan; private Boolean isActive; - private Boolean deleted; + private Boolean isDelete; private String search; private transient Pageable pageable; } diff --git a/src/main/java/com/iconplus/smartproc/model/request/RolesRequest.java b/src/main/java/com/iconplus/smartproc/model/request/RolesRequest.java index c03828c..7177a9b 100644 --- a/src/main/java/com/iconplus/smartproc/model/request/RolesRequest.java +++ b/src/main/java/com/iconplus/smartproc/model/request/RolesRequest.java @@ -5,6 +5,7 @@ import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import org.springframework.data.domain.Pageable; @Data @Builder @@ -16,6 +17,8 @@ public class RolesRequest extends BaseRequest { private String role; private String keterangan; private Boolean isActive; - private Boolean deleted; + private Boolean isDelete; + 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 new file mode 100644 index 0000000..373b00c --- /dev/null +++ b/src/main/java/com/iconplus/smartproc/model/request/UsersRequest.java @@ -0,0 +1,27 @@ +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 +@AllArgsConstructor +@NoArgsConstructor +public class UsersRequest extends BaseRequest { + + private Long id; + private String username; + private String instansi; + private String bidang; + private String nama; + private String jabatan; + private String role; + private String email; + private Boolean isActive; + private String search; + private transient Pageable pageable; +} diff --git a/src/main/java/com/iconplus/smartproc/model/response/GetRolesResponse.java b/src/main/java/com/iconplus/smartproc/model/response/GetRolesResponse.java new file mode 100644 index 0000000..5967478 --- /dev/null +++ b/src/main/java/com/iconplus/smartproc/model/response/GetRolesResponse.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 GetRolesResponse extends BaseResponse { + + private List data; + private Pagination pagination; +} diff --git a/src/main/java/com/iconplus/smartproc/model/response/GetUsersResponse.java b/src/main/java/com/iconplus/smartproc/model/response/GetUsersResponse.java new file mode 100644 index 0000000..6b86b9c --- /dev/null +++ b/src/main/java/com/iconplus/smartproc/model/response/GetUsersResponse.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 GetUsersResponse extends BaseResponse { + + private List data; + private Pagination pagination; +} diff --git a/src/main/java/com/iconplus/smartproc/model/response/JenisAnggaranResponse.java b/src/main/java/com/iconplus/smartproc/model/response/JenisAnggaranResponse.java index 3d73169..39cd323 100644 --- a/src/main/java/com/iconplus/smartproc/model/response/JenisAnggaranResponse.java +++ b/src/main/java/com/iconplus/smartproc/model/response/JenisAnggaranResponse.java @@ -16,6 +16,6 @@ public class JenisAnggaranResponse extends BaseResponse { private String jenisAnggaran; private String keterangan; private Boolean isActive; - private Boolean deleted; + private Boolean isDelete; } diff --git a/src/main/java/com/iconplus/smartproc/model/response/RolesResponse.java b/src/main/java/com/iconplus/smartproc/model/response/RolesResponse.java index 012c815..11ece70 100644 --- a/src/main/java/com/iconplus/smartproc/model/response/RolesResponse.java +++ b/src/main/java/com/iconplus/smartproc/model/response/RolesResponse.java @@ -16,6 +16,6 @@ public class RolesResponse extends BaseResponse { private String role; private String keterangan; private Boolean isActive; - private Boolean deleted; + 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 new file mode 100644 index 0000000..9bcf829 --- /dev/null +++ b/src/main/java/com/iconplus/smartproc/model/response/UsersResponse.java @@ -0,0 +1,23 @@ +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 UsersResponse extends BaseResponse { + private Long id; + private String instansi; + private String bidang; + private String nama; + private String jabatan; + private String role; + private String email; + private Boolean isActive; + private Boolean isDelete; +} diff --git a/src/main/java/com/iconplus/smartproc/repository/JenisAnggaranRepository.java b/src/main/java/com/iconplus/smartproc/repository/JenisAnggaranRepository.java index d601d1c..a25164b 100644 --- a/src/main/java/com/iconplus/smartproc/repository/JenisAnggaranRepository.java +++ b/src/main/java/com/iconplus/smartproc/repository/JenisAnggaranRepository.java @@ -16,16 +16,16 @@ public interface JenisAnggaranRepository extends JpaRepository getAllJenisAnggaran(String search, Pageable pageable); - Optional findByIdAndDeletedFalse(Long id); + Optional findByIdAndIsDeleteFalse(Long id); - Optional findByJenisAnggaranAndDeletedFalse(String jenisAnggaran); + Optional findByJenisAnggaranAndIsDeleteFalse(String jenisAnggaran); } diff --git a/src/main/java/com/iconplus/smartproc/repository/RolesRepository.java b/src/main/java/com/iconplus/smartproc/repository/RolesRepository.java index 470cc0e..5cf54e5 100644 --- a/src/main/java/com/iconplus/smartproc/repository/RolesRepository.java +++ b/src/main/java/com/iconplus/smartproc/repository/RolesRepository.java @@ -1,11 +1,15 @@ package com.iconplus.smartproc.repository; import com.iconplus.smartproc.model.entity.Roles; +import com.iconplus.smartproc.model.projection.RolesView; import com.iconplus.smartproc.model.projection.UserRoleView; +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.List; import java.util.Optional; @Repository @@ -18,13 +22,25 @@ public interface RolesRepository extends JpaRepository { "r.role as role " + "FROM Users u " + "join Roles r on r.id=u.roleId " + - "WHERE u.deleted = false " + - "AND r.deleted = false " + + "WHERE u.isDelete = false " + + "AND r.isDelete = false " + "AND u.username = :userName ") Optional getUserRoleByUserId(String userName); - Optional findByIdAndDeletedFalse(Long id); + @Query(value = "SELECT r.id as id, " + + "r.role as role, " + + "r.keterangan as keterangan, " + + "r.isActive as isActive, " + + "r.isDelete as isDelete " + + "FROM Roles r " + + "WHERE r.isDelete = false " + + "AND (:search = '' " + + "or (UPPER(r.role) like :search OR UPPER(r.keterangan) like :search)) " + + "ORDER BY r.id") + Page findAllRolesANdDeletedFalse(String search, Pageable pageable); - Optional findByRoleAndDeletedFalse(Long id); + Optional findByIdAndIsDeleteFalse(Long id); + + Optional findByRoleAndIsDeleteFalse(String role); } diff --git a/src/main/java/com/iconplus/smartproc/repository/TokenManagementRepository.java b/src/main/java/com/iconplus/smartproc/repository/TokenManagementRepository.java index 9809026..57e0b55 100644 --- a/src/main/java/com/iconplus/smartproc/repository/TokenManagementRepository.java +++ b/src/main/java/com/iconplus/smartproc/repository/TokenManagementRepository.java @@ -13,7 +13,7 @@ public interface TokenManagementRepository extends JpaRepository= SYSDATE", nativeQuery = true) List findAccessTokenByUserIdAndDeletedFalse(String userId); } diff --git a/src/main/java/com/iconplus/smartproc/repository/UsersRepository.java b/src/main/java/com/iconplus/smartproc/repository/UsersRepository.java index e15d932..14e45c0 100644 --- a/src/main/java/com/iconplus/smartproc/repository/UsersRepository.java +++ b/src/main/java/com/iconplus/smartproc/repository/UsersRepository.java @@ -1,7 +1,11 @@ package com.iconplus.smartproc.repository; import com.iconplus.smartproc.model.entity.Users; +import com.iconplus.smartproc.model.projection.UserRoleView; +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; @@ -9,6 +13,25 @@ import java.util.Optional; @Repository public interface UsersRepository extends JpaRepository { - Optional findByEmailAndDeletedFalse(String email); + @Query("SELECT u.id as id, " + + "u.nama as nama, " + + "u.jabatan as jabatan, " + + "r.role as role, " + + "u.email as email, " + + "u.isActive as isActive, " + + "u.isDelete as isDelete " + + "FROM Users u " + + "JOIN Roles r ON r.id = u.roleId " + + "Where u.isDelete = false " + + "AND (:search='' " + + "or (UPPER(u.nama) like :search " + + " OR UPPER(u.jabatan) like :search " + + " OR UPPER(r.role) like :search " + + " OR UPPER(u.email) like :search) " + + ") " + + "ORDER by u.id") + Page getAllUsersAndDeletedFase(String search, Pageable pageable); + + Optional findByEmailAndIsDeleteFalse(String email); } diff --git a/src/main/java/com/iconplus/smartproc/service/authentication/LoginService.java b/src/main/java/com/iconplus/smartproc/service/authentication/LoginService.java index e824182..2b371b4 100644 --- a/src/main/java/com/iconplus/smartproc/service/authentication/LoginService.java +++ b/src/main/java/com/iconplus/smartproc/service/authentication/LoginService.java @@ -26,7 +26,7 @@ public class LoginService implements BaseService { @Override public LoginResponse execute(LoginRequest input) { - var user= usersRepository.findByEmailAndDeletedFalse(input.getEmail()) + var user= usersRepository.findByEmailAndIsDeleteFalse(input.getEmail()) .orElseThrow(() -> new BusinessException(HttpStatus.CONFLICT, Constants.ERR_CODE_10003, Constants.ERR_TTL_10003, diff --git a/src/main/java/com/iconplus/smartproc/service/jenisanggaran/DeleteJenisAnggaranService.java b/src/main/java/com/iconplus/smartproc/service/jenisanggaran/DeleteJenisAnggaranService.java index 9999044..3a13142 100644 --- a/src/main/java/com/iconplus/smartproc/service/jenisanggaran/DeleteJenisAnggaranService.java +++ b/src/main/java/com/iconplus/smartproc/service/jenisanggaran/DeleteJenisAnggaranService.java @@ -3,7 +3,6 @@ package com.iconplus.smartproc.service.jenisanggaran; 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.entity.JenisAnggaran; import com.iconplus.smartproc.model.request.JenisAnggaranRequest; import com.iconplus.smartproc.repository.JenisAnggaranRepository; import com.iconplus.smartproc.util.Constants; @@ -25,15 +24,15 @@ public class DeleteJenisAnggaranService implements BaseService new BusinessException(HttpStatus.CONFLICT, Constants.ERR_CODE_10001, Constants.ERR_TTL_10001, String.format(Constants.ERR_MSG_10001, input.getId()))); - jenisAnggaran.setDeleted(true); + jenisAnggaran.setIsDelete(true); jenisAnggaranRepository.save(jenisAnggaran); - log.info("success delete jenis anggaran id {}", jenisAnggaran.getDeleted()); + log.info("success delete jenis anggaran id {}", jenisAnggaran.getIsDelete()); return new EmptyResponse(); } } diff --git a/src/main/java/com/iconplus/smartproc/service/jenisanggaran/GetJenisAnggaranByIdService.java b/src/main/java/com/iconplus/smartproc/service/jenisanggaran/GetJenisAnggaranByIdService.java index 9d69226..25a5125 100644 --- a/src/main/java/com/iconplus/smartproc/service/jenisanggaran/GetJenisAnggaranByIdService.java +++ b/src/main/java/com/iconplus/smartproc/service/jenisanggaran/GetJenisAnggaranByIdService.java @@ -21,7 +21,7 @@ public class GetJenisAnggaranByIdService implements BaseService new BusinessException(HttpStatus.CONFLICT, Constants.ERR_CODE_10001, Constants.ERR_TTL_10001, @@ -34,7 +34,7 @@ public class PutUpdateJenisAnggaranService implements BaseService { + + private UsersRepository usersRepository; + + public GetListUserService(UsersRepository usersRepository) { + this.usersRepository = usersRepository; + } + + @Override + public GetUsersResponse execute(UsersRequest input) { + validateRequest(input); + List usersResponses = new ArrayList<>(); + var userRoleViews = usersRepository.getAllUsersAndDeletedFase(input.getEmail(), input.getPageable()); + + for (UserRoleView userRoleView : userRoleViews) { + UsersResponse usersResponse = UsersResponse.builder() + .id(userRoleView.getId()) + .instansi(userRoleView.getInstansi()) + .bidang(userRoleView.getBidang()) + .nama(userRoleView.getNama()) + .jabatan(userRoleView.getJabatan()) + .role(userRoleView.getRole()) + .email(userRoleView.getEmail()) + .isActive(userRoleView.getIsActive()) + .build(); + usersResponses.add(usersResponse); + } + + return GetUsersResponse.builder() + .data(usersResponses) + .pagination(Pagination.builder() + .pageSize(input.getPageable().getPageSize()) + .currentPage(input.getPageable().getPageNumber()) + .totalPages(userRoleViews.getTotalPages()) + .totalRecords(userRoleViews.getTotalElements()) + .isFirstPage(userRoleViews.isFirst()) + .isLastPage(userRoleViews.isLast()) + .build()) + .build(); + } + + private void validateRequest(UsersRequest input) { + if (StringUtils.isNotBlank(input.getSearch())) { + input.setSearch('%'+ input.getSearch().toUpperCase()+'%'); + } + } +} diff --git a/src/main/java/com/iconplus/smartproc/service/manajemenuser/PostCreateUserService.java b/src/main/java/com/iconplus/smartproc/service/manajemenuser/PostCreateUserService.java new file mode 100644 index 0000000..4598602 --- /dev/null +++ b/src/main/java/com/iconplus/smartproc/service/manajemenuser/PostCreateUserService.java @@ -0,0 +1,43 @@ +package com.iconplus.smartproc.service.manajemenuser; + +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 org.springframework.stereotype.Service; + +@Service +public class PostCreateUserService implements BaseService { + + private UsersRepository usersRepository; + + public PostCreateUserService(UsersRepository usersRepository) { + this.usersRepository = usersRepository; + } + + @Override + public UsersResponse execute(UsersRequest input) { + + + 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) + .build(); + + var result = usersRepository.save(users); + return UsersResponse.builder() + .id(result.getId()) + .build(); + + } +} diff --git a/src/main/java/com/iconplus/smartproc/service/role/DeleteRoleService.java b/src/main/java/com/iconplus/smartproc/service/role/DeleteRoleService.java deleted file mode 100644 index 92cc5a0..0000000 --- a/src/main/java/com/iconplus/smartproc/service/role/DeleteRoleService.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.iconplus.smartproc.service.role; - -import com.iconplus.smartproc.helper.service.BaseService; -import com.iconplus.smartproc.model.request.RolesRequest; -import com.iconplus.smartproc.model.response.RolesResponse; -import com.iconplus.smartproc.repository.RolesRepository; -import org.springframework.stereotype.Service; - -@Service -public class DeleteRoleService implements BaseService { - - private RolesRepository rolesRepository; - - public DeleteRoleService(RolesRepository rolesRepository) { - this.rolesRepository = rolesRepository; - } - - @Override - public RolesResponse execute(RolesRequest input) { - - return null; - } -} diff --git a/src/main/java/com/iconplus/smartproc/service/role/GetRoleByIdService.java b/src/main/java/com/iconplus/smartproc/service/role/GetRoleByIdService.java deleted file mode 100644 index c23af74..0000000 --- a/src/main/java/com/iconplus/smartproc/service/role/GetRoleByIdService.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.iconplus.smartproc.service.role; - -import org.springframework.stereotype.Service; - -@Service -public class GetRoleByIdService { -} diff --git a/src/main/java/com/iconplus/smartproc/service/role/GetRolesService.java b/src/main/java/com/iconplus/smartproc/service/role/GetRolesService.java deleted file mode 100644 index 86f1589..0000000 --- a/src/main/java/com/iconplus/smartproc/service/role/GetRolesService.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.iconplus.smartproc.service.role; - -import org.springframework.stereotype.Service; - -@Service -public class GetRolesService { -} diff --git a/src/main/java/com/iconplus/smartproc/service/role/PostCreateRoleService.java b/src/main/java/com/iconplus/smartproc/service/role/PostCreateRoleService.java deleted file mode 100644 index 0c4c47e..0000000 --- a/src/main/java/com/iconplus/smartproc/service/role/PostCreateRoleService.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.iconplus.smartproc.service.role; - -import org.springframework.stereotype.Service; - -@Service -public class PostCreateRoleService { -} diff --git a/src/main/java/com/iconplus/smartproc/service/role/PutUpdateRoleService.java b/src/main/java/com/iconplus/smartproc/service/role/PutUpdateRoleService.java deleted file mode 100644 index 9e57ba2..0000000 --- a/src/main/java/com/iconplus/smartproc/service/role/PutUpdateRoleService.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.iconplus.smartproc.service.role; - -import com.iconplus.smartproc.helper.service.BaseService; -import org.springframework.stereotype.Service; - -//@Service -//public class PutUpdateRoleService implements BaseService<> { -//} diff --git a/src/main/java/com/iconplus/smartproc/service/roles/DeleteRoleService.java b/src/main/java/com/iconplus/smartproc/service/roles/DeleteRoleService.java new file mode 100644 index 0000000..f5a4c17 --- /dev/null +++ b/src/main/java/com/iconplus/smartproc/service/roles/DeleteRoleService.java @@ -0,0 +1,33 @@ +package com.iconplus.smartproc.service.roles; + +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.entity.Roles; +import com.iconplus.smartproc.model.request.RolesRequest; +import com.iconplus.smartproc.repository.RolesRepository; +import com.iconplus.smartproc.util.Constants; +import org.springframework.stereotype.Service; + +@Service +public class DeleteRoleService implements BaseService { + + private RolesRepository rolesRepository; + public DeleteRoleService(RolesRepository rolesRepository) { + this.rolesRepository = rolesRepository; + } + + @Override + public EmptyResponse execute(RolesRequest input) { + + Roles role = rolesRepository.findByIdAndIsDeleteFalse(input.getId()) + .orElseThrow(() -> new BusinessException(Constants.ERR_CODE_10005, + Constants.ERR_TTL_10005, + String.format(Constants.ERR_MSG_10005, input.getId()))); + + role.setIsDelete(true); + rolesRepository.save(role); + + return new EmptyResponse(); + } +} diff --git a/src/main/java/com/iconplus/smartproc/service/roles/GetRoleByIdService.java b/src/main/java/com/iconplus/smartproc/service/roles/GetRoleByIdService.java new file mode 100644 index 0000000..bc7f7c2 --- /dev/null +++ b/src/main/java/com/iconplus/smartproc/service/roles/GetRoleByIdService.java @@ -0,0 +1,36 @@ +package com.iconplus.smartproc.service.roles; + +import com.iconplus.smartproc.exception.BusinessException; +import com.iconplus.smartproc.helper.service.BaseService; +import com.iconplus.smartproc.model.entity.Roles; +import com.iconplus.smartproc.model.request.RolesRequest; +import com.iconplus.smartproc.model.response.RolesResponse; +import com.iconplus.smartproc.repository.RolesRepository; +import com.iconplus.smartproc.util.Constants; +import org.springframework.stereotype.Service; + +@Service +public class GetRoleByIdService implements BaseService { + + private final RolesRepository rolesRepository; + public GetRoleByIdService(RolesRepository rolesRepository) { + this.rolesRepository = rolesRepository; + } + + @Override + public RolesResponse execute(RolesRequest input) { + + Roles role = rolesRepository.findByIdAndIsDeleteFalse(input.getId()) + .orElseThrow(() -> new BusinessException(Constants.ERR_CODE_10005, + Constants.ERR_TTL_10005, + String.format(Constants.ERR_MSG_10005, input.getId()))); + + return RolesResponse.builder() + .id(role.getId()) + .role(role.getRole()) + .keterangan(role.getKeterangan()) + .isActive(role.getIsActive()) + .isDelete(role.getIsDelete()) + .build(); + } +} diff --git a/src/main/java/com/iconplus/smartproc/service/roles/GetRolesService.java b/src/main/java/com/iconplus/smartproc/service/roles/GetRolesService.java new file mode 100644 index 0000000..d2399b4 --- /dev/null +++ b/src/main/java/com/iconplus/smartproc/service/roles/GetRolesService.java @@ -0,0 +1,60 @@ +package com.iconplus.smartproc.service.roles; + +import com.iconplus.smartproc.helper.model.Pagination; +import com.iconplus.smartproc.helper.service.BaseService; +import com.iconplus.smartproc.model.projection.RolesView; +import com.iconplus.smartproc.model.request.RolesRequest; +import com.iconplus.smartproc.model.response.GetRolesResponse; +import com.iconplus.smartproc.model.response.RolesResponse; +import com.iconplus.smartproc.repository.RolesRepository; +import org.apache.commons.lang3.StringUtils; +import org.springframework.data.domain.Page; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +@Service +public class GetRolesService implements BaseService { + + private final RolesRepository rolesRepository; + public GetRolesService(RolesRepository rolesRepository) { + this.rolesRepository = rolesRepository; + } + + @Override + public GetRolesResponse execute(RolesRequest input) { + validateRequest(input); + List rolesResponseList = new ArrayList<>(); + Page rolesViews = rolesRepository.findAllRolesANdDeletedFalse(input.getSearch(), input.getPageable()); + + for (RolesView rolesView : rolesViews) { + RolesResponse rolesResponse = RolesResponse.builder() + .id(rolesView.getId()) + .role(rolesView.getRole()) + .keterangan(rolesView.getKeterangan()) + .isActive(rolesView.getIsActive()) + .isDelete(rolesView.getIsDelete()) + .build(); + rolesResponseList.add(rolesResponse); + } + + return GetRolesResponse.builder() + .data(rolesResponseList) + .pagination(Pagination.builder() + .pageSize(input.getPageable().getPageSize()) + .currentPage(input.getPageable().getPageNumber()) + .totalPages(rolesViews.getTotalPages()) + .totalRecords(rolesViews.getTotalElements()) + .isFirstPage(rolesViews.isFirst()) + .isLastPage(rolesViews.isLast()) + .build()) + .build(); + } + + private void validateRequest(RolesRequest input) { + if (StringUtils.isNotBlank(input.getSearch())) { + input.setSearch('%'+ input.getSearch().toUpperCase()+'%'); + } + } +} diff --git a/src/main/java/com/iconplus/smartproc/service/roles/PostCreateRoleService.java b/src/main/java/com/iconplus/smartproc/service/roles/PostCreateRoleService.java new file mode 100644 index 0000000..c571fd5 --- /dev/null +++ b/src/main/java/com/iconplus/smartproc/service/roles/PostCreateRoleService.java @@ -0,0 +1,44 @@ +package com.iconplus.smartproc.service.roles; + +import com.iconplus.smartproc.exception.BusinessException; +import com.iconplus.smartproc.helper.service.BaseService; +import com.iconplus.smartproc.model.entity.Roles; +import com.iconplus.smartproc.model.request.RolesRequest; +import com.iconplus.smartproc.model.response.RolesResponse; +import com.iconplus.smartproc.repository.RolesRepository; +import com.iconplus.smartproc.util.Constants; +import org.springframework.stereotype.Service; + +import java.util.Optional; + +@Service +public class PostCreateRoleService implements BaseService { + + private final RolesRepository rolesRepository; + public PostCreateRoleService(RolesRepository rolesRepository) { + this.rolesRepository = rolesRepository; + } + + @Override + public RolesResponse execute(RolesRequest input) { + + Optional role = rolesRepository.findByRoleAndIsDeleteFalse(input.getRole()); + if (role.isPresent()) { + throw new BusinessException(Constants.ERR_CODE_10006, + Constants.ERR_TTL_10006, + String.format(Constants.ERR_MSG_10006, input.getRole())); + } + + Roles roles = Roles.builder() + .role(input.getRole()) + .keterangan(input.getKeterangan()) + .isActive(input.getIsActive()) + .isDelete(false) + .build(); + var result = rolesRepository.save(roles); + + return RolesResponse.builder() + .id(result.getId()) + .build(); + } +} diff --git a/src/main/java/com/iconplus/smartproc/service/roles/PutUpdateRoleService.java b/src/main/java/com/iconplus/smartproc/service/roles/PutUpdateRoleService.java new file mode 100644 index 0000000..e48aa65 --- /dev/null +++ b/src/main/java/com/iconplus/smartproc/service/roles/PutUpdateRoleService.java @@ -0,0 +1,38 @@ +package com.iconplus.smartproc.service.roles; + +import com.iconplus.smartproc.exception.BusinessException; +import com.iconplus.smartproc.helper.service.BaseService; +import com.iconplus.smartproc.model.entity.Roles; +import com.iconplus.smartproc.model.request.RolesRequest; +import com.iconplus.smartproc.model.response.RolesResponse; +import com.iconplus.smartproc.repository.RolesRepository; +import com.iconplus.smartproc.util.Constants; +import org.springframework.stereotype.Service; + +@Service +public class PutUpdateRoleService implements BaseService { + + private final RolesRepository rolesRepository; + public PutUpdateRoleService(RolesRepository rolesRepository) { + this.rolesRepository = rolesRepository; + } + + @Override + public RolesResponse execute(RolesRequest input) { + + Roles role = rolesRepository.findByIdAndIsDeleteFalse(input.getId()) + .orElseThrow(() -> new BusinessException(Constants.ERR_CODE_10005, + Constants.ERR_TTL_10005, + String.format(Constants.ERR_MSG_10005, input.getId()))); + + role.setRole(input.getRole()); + role.setKeterangan(input.getKeterangan()); + role.setIsActive(input.getIsActive()); + rolesRepository.save(role); + + return RolesResponse.builder() + .id(role.getId()) + .build(); + } +} + diff --git a/src/main/java/com/iconplus/smartproc/util/Constants.java b/src/main/java/com/iconplus/smartproc/util/Constants.java index 9273684..e013a2f 100644 --- a/src/main/java/com/iconplus/smartproc/util/Constants.java +++ b/src/main/java/com/iconplus/smartproc/util/Constants.java @@ -10,7 +10,7 @@ public class Constants { public static final String ERR_CODE_10002 = "10002"; public static final String ERR_TTL_10002 = "Data tersedia"; - public static final String ERR_MSG_10002 = "Jenis Anggaran dengan id : %s sudah tersedia"; + public static final String ERR_MSG_10002 = "Jenis Anggaran : %s sudah tersedia"; public static final String ERR_CODE_10003 = "10003"; public static final String ERR_TTL_10003 = "Data tidak tersedia"; @@ -20,6 +20,14 @@ public class Constants { public static final String ERR_TTL_10004 = "Gagal Authentikasi User"; public static final String ERR_MSG_10004 = "Silahkan Periksa kembali Email dan Password Anda"; + public static final String ERR_CODE_10005 = "10005"; + public static final String ERR_TTL_10005 = "Data tidak tersedia"; + public static final String ERR_MSG_10005 = "Role dengan id : %s tidak ditemukan"; + + public static final String ERR_CODE_10006 = "10006"; + public static final String ERR_TTL_10006 = "Data tersedia"; + public static final String ERR_MSG_10006 = "Role : %s sudah tersedia"; + public static final String ERR_CODE_40041 = "40041"; public static final String ERR_TTL_40041 = "Terjadi Gangguan"; public static final String ERR_MSG_40041 = "Masalah Koneksi System"; diff --git a/src/main/resources/application-local.yml b/src/main/resources/application-local.yml index 4340c9d..69e2bf7 100644 --- a/src/main/resources/application-local.yml +++ b/src/main/resources/application-local.yml @@ -11,7 +11,7 @@ spring: driver-class-name: org.postgresql.Driver url: jdbc:postgresql://localhost:5432/smartproc username: postgres - password: postgres + password: postgre jackson: default-property-inclusion: NON_NULL jpa: