diff --git a/src/main/java/com/iconplus/smartproc/controller/AuthenticationController.java b/src/main/java/com/iconplus/smartproc/controller/AuthenticationController.java index 42ff38a..491fa80 100644 --- a/src/main/java/com/iconplus/smartproc/controller/AuthenticationController.java +++ b/src/main/java/com/iconplus/smartproc/controller/AuthenticationController.java @@ -3,11 +3,9 @@ package com.iconplus.smartproc.controller; import com.iconplus.smartproc.exception.BusinessException; import com.iconplus.smartproc.helper.model.EmptyRequest; import com.iconplus.smartproc.helper.model.EmptyResponse; -import com.iconplus.smartproc.model.request.ChangePasswordRequest; -import com.iconplus.smartproc.model.request.ForgotPasswordRequest; -import com.iconplus.smartproc.model.request.LoginRequest; -import com.iconplus.smartproc.model.request.RefreshTokenRequest; +import com.iconplus.smartproc.model.request.*; import com.iconplus.smartproc.model.response.GlobalResponse; +import com.iconplus.smartproc.model.response.InitForgotPasswordResponse; import com.iconplus.smartproc.model.response.RefreshTokenResponse; import com.iconplus.smartproc.service.authentication.*; import org.springframework.web.bind.annotation.*; @@ -22,17 +20,20 @@ public class AuthenticationController { private final LogoutService logoutService; private final ChangePasswordService changePasswordService; private final ForgotPasswordService forgotPasswordService; + private final InitForgotPasswordService initForgotPasswordService; public AuthenticationController(LoginService loginService, TokenManagementService tokenManagementService, LogoutService logoutService, ChangePasswordService changePasswordService, - ForgotPasswordService forgotPasswordService) { + ForgotPasswordService forgotPasswordService, + InitForgotPasswordService initForgotPasswordService) { this.loginService = loginService; this.tokenManagementService = tokenManagementService; this.logoutService = logoutService; this.changePasswordService = changePasswordService; this.forgotPasswordService = forgotPasswordService; + this.initForgotPasswordService = initForgotPasswordService; } @PostMapping("/login") @@ -73,4 +74,10 @@ public class AuthenticationController { return forgotPasswordService.execute(forgotPasswordRequest); } + + @PostMapping("/init/forgot-password") + public InitForgotPasswordResponse initForgotPassword(@RequestBody InitForgotPasswordRequest initForgotPasswordRequest) { + return initForgotPasswordService.execute(initForgotPasswordRequest); + } + } diff --git a/src/main/java/com/iconplus/smartproc/controller/DrpController.java b/src/main/java/com/iconplus/smartproc/controller/DrpController.java index f3eb35d..88d4b47 100644 --- a/src/main/java/com/iconplus/smartproc/controller/DrpController.java +++ b/src/main/java/com/iconplus/smartproc/controller/DrpController.java @@ -1,5 +1,6 @@ package com.iconplus.smartproc.controller; +import com.iconplus.smartproc.helper.model.EmptyResponse; import com.iconplus.smartproc.model.request.DrpPengadaanRequest; import com.iconplus.smartproc.model.request.DrpRequest; import com.iconplus.smartproc.model.response.DrpPengadaanResponse; @@ -54,6 +55,14 @@ public class DrpController { .build()); } + @GetMapping("/tahun/{id}") + public EmptyResponse getExistDrp(@PathVariable(name = "id") Integer tahun) { + postCreateDrpService.validateTahunDrp(DrpRequest.builder() + .tahun(tahun) + .build()); + return new EmptyResponse(); + } + @PostMapping public DrpResponse createDrp(@RequestBody DrpRequest drpRequest) { return postCreateDrpService.execute(drpRequest); diff --git a/src/main/java/com/iconplus/smartproc/model/entity/DrpPengadaan.java b/src/main/java/com/iconplus/smartproc/model/entity/DrpPengadaan.java index 192f20b..9f5808b 100644 --- a/src/main/java/com/iconplus/smartproc/model/entity/DrpPengadaan.java +++ b/src/main/java/com/iconplus/smartproc/model/entity/DrpPengadaan.java @@ -9,6 +9,7 @@ import org.hibernate.annotations.Type; import javax.persistence.*; import java.math.BigDecimal; +import java.sql.Date; import java.sql.Timestamp; @Data @@ -63,10 +64,10 @@ public class DrpPengadaan extends BaseEntity { private Long strategiPengadaanId; @Column(name = "rencana_tanggal") - private Timestamp rencanaTanggal; + private Date rencanaTanggal; @Column(name = "target_tanggal") - private Timestamp targetTanggal; + private Date targetTanggal; @Column(name = "hpe") private BigDecimal hpe; 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 06c169f..f464a50 100644 --- a/src/main/java/com/iconplus/smartproc/model/entity/Users.java +++ b/src/main/java/com/iconplus/smartproc/model/entity/Users.java @@ -8,6 +8,7 @@ import lombok.NoArgsConstructor; import org.hibernate.annotations.Type; import javax.persistence.*; +import java.sql.Timestamp; @Data @Builder @@ -30,6 +31,9 @@ public class Users extends BaseEntity { @Column(name = "email") private String email; + @Column(name = "telepon") + private String telepon; + @Column(name = "password") private String password; @@ -45,6 +49,12 @@ public class Users extends BaseEntity { @Column(name = "role_id") private Long roleId; + @Column(name = "remember_id") + private String rememberId; + + @Column(name = "expired_time") + private Timestamp expiredTime; + @Column(name = "is_active") @Type(type = "org.hibernate.type.NumericBooleanType") private Boolean isActive; diff --git a/src/main/java/com/iconplus/smartproc/model/projection/DrpPengadaanView.java b/src/main/java/com/iconplus/smartproc/model/projection/DrpPengadaanView.java new file mode 100644 index 0000000..d0c8b52 --- /dev/null +++ b/src/main/java/com/iconplus/smartproc/model/projection/DrpPengadaanView.java @@ -0,0 +1,64 @@ +package com.iconplus.smartproc.model.projection; + +import java.math.BigDecimal; +import java.sql.Date; + +public interface DrpPengadaanView { + + Long getId(); + void setId(Long id); + + Long getDrpId(); + void setDrpId(Long drpId); + + String getNomor(); + void setNomor(String nomor); + + String getNamaPengadaan(); + void setNamaPengadaan(String namaPengadaan); + + Long getLokasiId(); + void setLokasiId(Long lokasiId); + + Long getJenisPengadaanId(); + void setJenisPengadaanId(Long jenisPengadaanId); + + Long getUnitInisiatorId(); + void setUnitInisiatorId(Long unitInisiatorId); + + BigDecimal getHpe(); + void setHpe(BigDecimal hpe); + + BigDecimal getPagu(); + void setPagu(BigDecimal pagu); + + Long getSumberDanaId(); + void setSumberDanaId(Long sumberDanaId); + + Long getMetodePengadaanId(); + void setMetodePengadaanId(Long metodePengadaanId); + + Long getSupplyPositioningMatrix(); + void setSupplyPositioningMatrix(Long supplyPositioningMatrix); + + Long getMetodePenyampaianId(); + void setMetodePenyampaianId(Long metodePenyampaianId); + + Long getJenisKontrakId(); + void setJenisKontrakId(Long jenisKontrakId); + + Long getStrategiPengadaanId(); + void setStrategiPengadaanId(Long strategiPengadaanId); + + Date getRencanaTanggal(); + void setRencanaTanggal(Date rencanaTanggal); + + Date getTargetTanggal(); + void setTargetTanggal(Date targetTanggal); + + 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 c8f0759..95ef7fe 100644 --- a/src/main/java/com/iconplus/smartproc/model/projection/UserRoleView.java +++ b/src/main/java/com/iconplus/smartproc/model/projection/UserRoleView.java @@ -17,6 +17,7 @@ public interface UserRoleView { Long getRoleId(); String getRole(); Boolean getIsDelete(); + String getTelepon(); void setId(Long id); void setUsername(String username); @@ -33,5 +34,6 @@ public interface UserRoleView { void setRoleId(Long roleId); void setRole(String role); void setIsDelete(Boolean isDelete); + void setTelepon(String telepon); } diff --git a/src/main/java/com/iconplus/smartproc/model/request/DrpDokumenRequest.java b/src/main/java/com/iconplus/smartproc/model/request/DrpDokumenRequest.java index 21917be..a42a55d 100644 --- a/src/main/java/com/iconplus/smartproc/model/request/DrpDokumenRequest.java +++ b/src/main/java/com/iconplus/smartproc/model/request/DrpDokumenRequest.java @@ -14,7 +14,6 @@ public class DrpDokumenRequest extends BaseRequest { private Long jenisDokumenId; private String filename; - private byte[] file; private String keterangan; private Boolean isDelete; } diff --git a/src/main/java/com/iconplus/smartproc/model/request/DrpPengadaanDokumenRequest.java b/src/main/java/com/iconplus/smartproc/model/request/DrpPengadaanDokumenRequest.java index 41d293f..b1819d1 100644 --- a/src/main/java/com/iconplus/smartproc/model/request/DrpPengadaanDokumenRequest.java +++ b/src/main/java/com/iconplus/smartproc/model/request/DrpPengadaanDokumenRequest.java @@ -19,7 +19,6 @@ public class DrpPengadaanDokumenRequest extends BaseRequest { private Long drpId; private Long jenisDokumenId; private String filename; - private byte[] file; private String keterangan; private Boolean isDelete; } diff --git a/src/main/java/com/iconplus/smartproc/model/request/DrpPengadaanRequest.java b/src/main/java/com/iconplus/smartproc/model/request/DrpPengadaanRequest.java index 453b309..7b80947 100644 --- a/src/main/java/com/iconplus/smartproc/model/request/DrpPengadaanRequest.java +++ b/src/main/java/com/iconplus/smartproc/model/request/DrpPengadaanRequest.java @@ -5,14 +5,10 @@ import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import org.hibernate.annotations.Type; import org.springframework.data.domain.Pageable; -import javax.persistence.Column; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; import java.math.BigDecimal; +import java.sql.Date; import java.sql.Timestamp; import java.util.List; @@ -36,8 +32,8 @@ public class DrpPengadaanRequest extends BaseRequest { private Long metodePenyampaianId; private Long jenisKontrakId; private Long strategiPengadaanId; - private Timestamp rencanaTanggal; - private Timestamp targetTanggal; + private Date rencanaTanggal; + private Date targetTanggal; private BigDecimal hpe; private Boolean isActive; private Boolean isDelete; diff --git a/src/main/java/com/iconplus/smartproc/model/request/ForgotPasswordRequest.java b/src/main/java/com/iconplus/smartproc/model/request/ForgotPasswordRequest.java index 16cb94c..7de7671 100644 --- a/src/main/java/com/iconplus/smartproc/model/request/ForgotPasswordRequest.java +++ b/src/main/java/com/iconplus/smartproc/model/request/ForgotPasswordRequest.java @@ -11,7 +11,7 @@ import lombok.NoArgsConstructor; @AllArgsConstructor @NoArgsConstructor public class ForgotPasswordRequest extends BaseRequest { - private String email; + private String rememberId; private String newPassword; private String confirmationPassword; } diff --git a/src/main/java/com/iconplus/smartproc/model/request/InitForgotPasswordRequest.java b/src/main/java/com/iconplus/smartproc/model/request/InitForgotPasswordRequest.java new file mode 100644 index 0000000..7f54c0e --- /dev/null +++ b/src/main/java/com/iconplus/smartproc/model/request/InitForgotPasswordRequest.java @@ -0,0 +1,16 @@ +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; + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class InitForgotPasswordRequest extends BaseRequest { + + private String email; +} 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 77244bd..be46f3d 100644 --- a/src/main/java/com/iconplus/smartproc/model/request/UsersRequest.java +++ b/src/main/java/com/iconplus/smartproc/model/request/UsersRequest.java @@ -26,6 +26,7 @@ public class UsersRequest extends BaseRequest { private Long roleId; private String role; private String email; + private String telepon; private Boolean isActive; private String search; private transient Pageable pageable; diff --git a/src/main/java/com/iconplus/smartproc/model/response/DrpPengadaanDokumenResponse.java b/src/main/java/com/iconplus/smartproc/model/response/DrpPengadaanDokumenResponse.java new file mode 100644 index 0000000..e518ff8 --- /dev/null +++ b/src/main/java/com/iconplus/smartproc/model/response/DrpPengadaanDokumenResponse.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 DrpPengadaanDokumenResponse extends BaseResponse { + + private Long id; + private Long drpId; + private Long jenisDokumenId; + private String filename; + private String keterangan; + private Boolean isDelete; + +} diff --git a/src/main/java/com/iconplus/smartproc/model/response/DrpPengadaanResponse.java b/src/main/java/com/iconplus/smartproc/model/response/DrpPengadaanResponse.java index 8a12fef..bbf336d 100644 --- a/src/main/java/com/iconplus/smartproc/model/response/DrpPengadaanResponse.java +++ b/src/main/java/com/iconplus/smartproc/model/response/DrpPengadaanResponse.java @@ -7,6 +7,7 @@ import lombok.Data; import lombok.NoArgsConstructor; import java.math.BigDecimal; +import java.sql.Date; import java.sql.Timestamp; @Data @@ -29,8 +30,8 @@ public class DrpPengadaanResponse extends BaseResponse { private Long metodePenyampaianId; private Long jenisKontrakId; private Long strategiPengadaanId; - private Timestamp rencanaTanggal; - private Timestamp targetTanggal; + private Date rencanaTanggal; + private Date targetTanggal; private BigDecimal hpe; private Boolean isActive; private Boolean isDelete; diff --git a/src/main/java/com/iconplus/smartproc/model/response/DrpResponse.java b/src/main/java/com/iconplus/smartproc/model/response/DrpResponse.java index 3f95e38..efb60dd 100644 --- a/src/main/java/com/iconplus/smartproc/model/response/DrpResponse.java +++ b/src/main/java/com/iconplus/smartproc/model/response/DrpResponse.java @@ -21,5 +21,7 @@ public class DrpResponse extends BaseResponse { private Boolean isActive; private Boolean isDelete; - private List data; + private List dataDrpDokumen; + + private List dataDrpPengadaanDokumen; } diff --git a/src/main/java/com/iconplus/smartproc/model/response/InitForgotPasswordResponse.java b/src/main/java/com/iconplus/smartproc/model/response/InitForgotPasswordResponse.java new file mode 100644 index 0000000..b005be0 --- /dev/null +++ b/src/main/java/com/iconplus/smartproc/model/response/InitForgotPasswordResponse.java @@ -0,0 +1,17 @@ +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 +@NoArgsConstructor +@AllArgsConstructor +public class InitForgotPasswordResponse extends BaseResponse { + + private String rememberId; + +} 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 b001a4a..7bbfd57 100644 --- a/src/main/java/com/iconplus/smartproc/model/response/UsersResponse.java +++ b/src/main/java/com/iconplus/smartproc/model/response/UsersResponse.java @@ -28,6 +28,7 @@ public class UsersResponse extends BaseResponse { private String role; private String email; + private String telepon; private Boolean isActive; private Boolean isDelete; } diff --git a/src/main/java/com/iconplus/smartproc/repository/DrpPengadaanDokumenRepository.java b/src/main/java/com/iconplus/smartproc/repository/DrpPengadaanDokumenRepository.java index 22a8185..a3ccf03 100644 --- a/src/main/java/com/iconplus/smartproc/repository/DrpPengadaanDokumenRepository.java +++ b/src/main/java/com/iconplus/smartproc/repository/DrpPengadaanDokumenRepository.java @@ -4,6 +4,11 @@ import com.iconplus.smartproc.model.entity.DrpPengadaanDokumen; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; +import java.util.List; + @Repository public interface DrpPengadaanDokumenRepository extends JpaRepository { + + List findByDrpIdAndIsDeleteFalse(Long drpId); + } diff --git a/src/main/java/com/iconplus/smartproc/repository/DrpPengadaanRepository.java b/src/main/java/com/iconplus/smartproc/repository/DrpPengadaanRepository.java index 65d585c..d9857d1 100644 --- a/src/main/java/com/iconplus/smartproc/repository/DrpPengadaanRepository.java +++ b/src/main/java/com/iconplus/smartproc/repository/DrpPengadaanRepository.java @@ -1,9 +1,13 @@ package com.iconplus.smartproc.repository; import com.iconplus.smartproc.model.entity.DrpPengadaan; +import org.springframework.data.domain.Page; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; import org.springframework.stereotype.Repository; @Repository public interface DrpPengadaanRepository extends JpaRepository { + + } diff --git a/src/main/java/com/iconplus/smartproc/repository/UsersRepository.java b/src/main/java/com/iconplus/smartproc/repository/UsersRepository.java index 28c7327..04fb221 100644 --- a/src/main/java/com/iconplus/smartproc/repository/UsersRepository.java +++ b/src/main/java/com/iconplus/smartproc/repository/UsersRepository.java @@ -25,6 +25,7 @@ public interface UsersRepository extends JpaRepository { "u.instansiId as instansiId, " + "i.instansi as instansi, " + "u.email as email, " + + "u.telepon as telepon, " + "u.isActive as isActive, " + "u.isDelete as isDelete " + "FROM Users u " + @@ -94,5 +95,11 @@ public interface UsersRepository extends JpaRepository { "Where u.isDelete = false " + "AND u.id = :id") Optional getUserByIdAndDeletedFase(Long id); + + @Query(value = "SELECT * FROM users " + + "WHERE remember_id = :rememberId " + + "AND is_delete = 0 " + + "AND expired_time >= CURRENT_TIMESTAMP", nativeQuery = true) + Optional getUsersByEmailAndExpiredTime(String rememberId); } diff --git a/src/main/java/com/iconplus/smartproc/service/CommonService.java b/src/main/java/com/iconplus/smartproc/service/CommonService.java index 3818415..bf2d274 100644 --- a/src/main/java/com/iconplus/smartproc/service/CommonService.java +++ b/src/main/java/com/iconplus/smartproc/service/CommonService.java @@ -42,7 +42,7 @@ public class CommonService { throw new BusinessException(HttpStatus.CONFLICT, Constants.ERR_CODE_10001, Constants.ERR_TTL_10001, - String.format(Constants.ERR_MSG_10001, "Role", input.getId())); + String.format(Constants.ERR_MSG_10001, "Role", input.getRoleId())); } var bidang= bidangRepository.findByIdAndIsDeleteFalse(input.getBidangId()); @@ -50,7 +50,7 @@ public class CommonService { throw new BusinessException(HttpStatus.CONFLICT, Constants.ERR_CODE_10001, Constants.ERR_TTL_10001, - String.format(Constants.ERR_MSG_10001, "Bidang", input.getId())); + String.format(Constants.ERR_MSG_10001, "Bidang", input.getBidangId())); } var instansi= instansiRepository.findByIdAndIsDeleteFalse(input.getInstansiId()); @@ -58,7 +58,7 @@ public class CommonService { throw new BusinessException(HttpStatus.CONFLICT, Constants.ERR_CODE_10001, Constants.ERR_TTL_10001, - String.format(Constants.ERR_MSG_10001, "Instansi", input.getId())); + String.format(Constants.ERR_MSG_10001, "Instansi", input.getInstansiId())); } } diff --git a/src/main/java/com/iconplus/smartproc/service/authentication/ForgotPasswordService.java b/src/main/java/com/iconplus/smartproc/service/authentication/ForgotPasswordService.java index 35dd3cd..b76dbd0 100644 --- a/src/main/java/com/iconplus/smartproc/service/authentication/ForgotPasswordService.java +++ b/src/main/java/com/iconplus/smartproc/service/authentication/ForgotPasswordService.java @@ -26,15 +26,14 @@ public class ForgotPasswordService implements BaseService new BusinessException(Constants.ERR_CODE_10001, Constants.ERR_TTL_10001, - String.format(Constants.ERR_MSG_10001, "User", input.getEmail()))); + String.format(Constants.ERR_MSG_10001, "Remember-id", input.getRememberId()))); String newPassword = commonService.getPassword(input.getNewPassword()); String confirmationPassword = commonService.getPassword(input.getConfirmationPassword()); - if (!StringUtils.equalsIgnoreCase(newPassword, confirmationPassword)) { throw new BusinessException(HttpStatus.CONFLICT, Constants.ERR_CODE_10007, diff --git a/src/main/java/com/iconplus/smartproc/service/authentication/InitForgotPasswordService.java b/src/main/java/com/iconplus/smartproc/service/authentication/InitForgotPasswordService.java new file mode 100644 index 0000000..1b9d168 --- /dev/null +++ b/src/main/java/com/iconplus/smartproc/service/authentication/InitForgotPasswordService.java @@ -0,0 +1,46 @@ +package com.iconplus.smartproc.service.authentication; + +import com.iconplus.smartproc.exception.BusinessException; +import com.iconplus.smartproc.helper.service.BaseService; +import com.iconplus.smartproc.model.request.InitForgotPasswordRequest; +import com.iconplus.smartproc.model.response.InitForgotPasswordResponse; +import com.iconplus.smartproc.repository.UsersRepository; +import com.iconplus.smartproc.util.Constants; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import java.sql.Timestamp; +import java.time.Instant; +import java.util.UUID; + +@Service +public class InitForgotPasswordService implements BaseService { + + @Value("${config.forgot-password.expired-time:1440}") + private Integer expiredTime; + + private final UsersRepository usersRepository; + + public InitForgotPasswordService(UsersRepository usersRepository) { + this.usersRepository = usersRepository; + } + + @Override + public InitForgotPasswordResponse execute(InitForgotPasswordRequest input) { + + var users = usersRepository.findByEmailAndIsDeleteFalse(input.getEmail()) + .orElseThrow(() -> new BusinessException(Constants.ERR_CODE_10001, + Constants.ERR_TTL_10001, + String.format(Constants.ERR_MSG_10001, "User", input.getEmail()))); + + var expirationTime = Timestamp.from(Instant.now().plusMillis(expiredTime * (long) 60000)); + + users.setRememberId(UUID.randomUUID().toString()); + users.setExpiredTime(expirationTime); + usersRepository.save(users); + + return InitForgotPasswordResponse.builder() + .rememberId(users.getRememberId()) + .build(); + } +} diff --git a/src/main/java/com/iconplus/smartproc/service/drp/GetDrpService.java b/src/main/java/com/iconplus/smartproc/service/drp/GetDrpService.java index f7976d7..92bea46 100644 --- a/src/main/java/com/iconplus/smartproc/service/drp/GetDrpService.java +++ b/src/main/java/com/iconplus/smartproc/service/drp/GetDrpService.java @@ -3,10 +3,14 @@ package com.iconplus.smartproc.service.drp; import com.iconplus.smartproc.exception.BusinessException; import com.iconplus.smartproc.helper.service.BaseService; import com.iconplus.smartproc.model.entity.DrpDokumen; +import com.iconplus.smartproc.model.entity.DrpPengadaanDokumen; import com.iconplus.smartproc.model.request.DrpRequest; import com.iconplus.smartproc.model.response.DrpDokumenResponse; +import com.iconplus.smartproc.model.response.DrpPengadaanDokumenResponse; +import com.iconplus.smartproc.model.response.DrpPengadaanResponse; import com.iconplus.smartproc.model.response.DrpResponse; import com.iconplus.smartproc.repository.DrpDokumenRepository; +import com.iconplus.smartproc.repository.DrpPengadaanDokumenRepository; import com.iconplus.smartproc.repository.DrpRepository; import com.iconplus.smartproc.util.Constants; import org.springframework.stereotype.Service; @@ -19,11 +23,14 @@ public class GetDrpService implements BaseService { private final DrpRepository drpRepository; private final DrpDokumenRepository drpDokumenRepository; + private final DrpPengadaanDokumenRepository drpPengadaanDokumenRepository; public GetDrpService(DrpRepository drpRepository, - DrpDokumenRepository drpDokumenRepository) { + DrpDokumenRepository drpDokumenRepository, + DrpPengadaanDokumenRepository drpPengadaanDokumenRepository) { this.drpRepository = drpRepository; this.drpDokumenRepository = drpDokumenRepository; + this.drpPengadaanDokumenRepository = drpPengadaanDokumenRepository; } @Override @@ -33,8 +40,41 @@ public class GetDrpService implements BaseService { Constants.ERR_TTL_10001, String.format(Constants.ERR_MSG_10001, "DRP", input.getId()))); - var drpDokumenList = drpDokumenRepository.findByDrpIdAndIsDeleteFalse(input.getId()); List drpDokumenResponseList = new ArrayList<>(); + setDrpDokumen(input, drpDokumenResponseList); + + List drpPengadaanDokumenResponseList = new ArrayList<>(); + setDrpPengadaanDokumen(input, drpPengadaanDokumenResponseList); + + + return DrpResponse.builder() + .id(drp.getId()) + .tahun(drp.getTahun()) + .approveStatus(drp.getApproveStatus()) + .approveDate(drp.getApproveDate()) + .isActive(drp.getIsActive()) + .isDelete(drp.getIsDelete()) + .dataDrpDokumen(drpDokumenResponseList) + .dataDrpPengadaanDokumen(drpPengadaanDokumenResponseList) + .build(); + } + + private void setDrpPengadaanDokumen(DrpRequest input, List drpPengadaanDokumenResponseList) { + var drpPengadaanDokumenList = drpPengadaanDokumenRepository.findByDrpIdAndIsDeleteFalse(input.getId()); + + for (DrpPengadaanDokumen drpPengadaanDokumen : drpPengadaanDokumenList) { + DrpPengadaanDokumenResponse drpPengadaanDokumenResponse = DrpPengadaanDokumenResponse.builder() + .id(drpPengadaanDokumen.getId()) + .drpId(drpPengadaanDokumen.getDrpId()) + .jenisDokumenId(drpPengadaanDokumen.getJenisDokumenId()) + .filename(drpPengadaanDokumen.getFilename()) + .build(); + drpPengadaanDokumenResponseList.add(drpPengadaanDokumenResponse); + } + } + + private void setDrpDokumen(DrpRequest input, List drpDokumenResponseList) { + var drpDokumenList = drpDokumenRepository.findByDrpIdAndIsDeleteFalse(input.getId()); for (DrpDokumen drpDokumen : drpDokumenList) { DrpDokumenResponse drpDokumenResponse = DrpDokumenResponse.builder() @@ -45,15 +85,5 @@ public class GetDrpService implements BaseService { .build(); drpDokumenResponseList.add(drpDokumenResponse); } - - return DrpResponse.builder() - .id(drp.getId()) - .tahun(drp.getTahun()) - .approveStatus(drp.getApproveStatus()) - .approveDate(drp.getApproveDate()) - .isActive(drp.getIsActive()) - .isDelete(drp.getIsDelete()) - .data(drpDokumenResponseList) - .build(); } } diff --git a/src/main/java/com/iconplus/smartproc/service/drp/GetListDrpPengadaanService.java b/src/main/java/com/iconplus/smartproc/service/drp/GetListDrpPengadaanService.java new file mode 100644 index 0000000..f074027 --- /dev/null +++ b/src/main/java/com/iconplus/smartproc/service/drp/GetListDrpPengadaanService.java @@ -0,0 +1,23 @@ +package com.iconplus.smartproc.service.drp; + +import com.iconplus.smartproc.helper.service.BaseService; +import com.iconplus.smartproc.model.request.DrpPengadaanRequest; +import com.iconplus.smartproc.model.response.DrpPengadaanResponse; +import com.iconplus.smartproc.repository.DrpPengadaanRepository; +import org.springframework.stereotype.Service; + +@Service +public class GetListDrpPengadaanService implements BaseService { + + private final DrpPengadaanRepository drpPengadaanRepository; + + public GetListDrpPengadaanService(DrpPengadaanRepository drpPengadaanRepository) { + this.drpPengadaanRepository = drpPengadaanRepository; + } + + @Override + public DrpPengadaanResponse execute(DrpPengadaanRequest input) { + + return null; + } +} diff --git a/src/main/java/com/iconplus/smartproc/service/drp/PostCreateDrpService.java b/src/main/java/com/iconplus/smartproc/service/drp/PostCreateDrpService.java index cf64a50..c1851dd 100644 --- a/src/main/java/com/iconplus/smartproc/service/drp/PostCreateDrpService.java +++ b/src/main/java/com/iconplus/smartproc/service/drp/PostCreateDrpService.java @@ -38,12 +38,7 @@ public class PostCreateDrpService implements BaseService drpOptional = drpRepository.findByTahunAndIsDeleteFalse(input.getTahun()); - if (drpOptional.isPresent()) { - throw new BusinessException(Constants.ERR_CODE_10010, - Constants.ERR_TTL_10010, - Constants.ERR_MSG_10010); - } + validateTahunDrp(input); Drp drp = Drp.builder() .tahun(input.getTahun()) @@ -90,4 +85,13 @@ public class PostCreateDrpService implements BaseService drpOptional = drpRepository.findByTahunAndIsDeleteFalse(input.getTahun()); + if (drpOptional.isPresent()) { + throw new BusinessException(Constants.ERR_CODE_10010, + Constants.ERR_TTL_10010, + Constants.ERR_MSG_10010); + } + } } 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 51cd721..de3aa5e 100644 --- a/src/main/java/com/iconplus/smartproc/service/manajemenuser/GetListUserService.java +++ b/src/main/java/com/iconplus/smartproc/service/manajemenuser/GetListUserService.java @@ -44,6 +44,7 @@ public class GetListUserService implements BaseService { + @Value("${config.default-password:plgg123}") + private String defaultPassword; + private UsersRepository usersRepository; private CommonService commonService; @@ -39,7 +43,12 @@ public class PostCreateUserService implements BaseService