fix telepon and init lupas

This commit is contained in:
dirgantarasiahaan 2023-05-29 19:19:25 +07:00
parent bab3a7a3d9
commit 431ad60bdb
32 changed files with 328 additions and 47 deletions

View File

@ -3,11 +3,9 @@ package com.iconplus.smartproc.controller;
import com.iconplus.smartproc.exception.BusinessException; import com.iconplus.smartproc.exception.BusinessException;
import com.iconplus.smartproc.helper.model.EmptyRequest; import com.iconplus.smartproc.helper.model.EmptyRequest;
import com.iconplus.smartproc.helper.model.EmptyResponse; import com.iconplus.smartproc.helper.model.EmptyResponse;
import com.iconplus.smartproc.model.request.ChangePasswordRequest; import com.iconplus.smartproc.model.request.*;
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.response.GlobalResponse; 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.model.response.RefreshTokenResponse;
import com.iconplus.smartproc.service.authentication.*; import com.iconplus.smartproc.service.authentication.*;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -22,17 +20,20 @@ public class AuthenticationController {
private final LogoutService logoutService; private final LogoutService logoutService;
private final ChangePasswordService changePasswordService; private final ChangePasswordService changePasswordService;
private final ForgotPasswordService forgotPasswordService; private final ForgotPasswordService forgotPasswordService;
private final InitForgotPasswordService initForgotPasswordService;
public AuthenticationController(LoginService loginService, public AuthenticationController(LoginService loginService,
TokenManagementService tokenManagementService, TokenManagementService tokenManagementService,
LogoutService logoutService, LogoutService logoutService,
ChangePasswordService changePasswordService, ChangePasswordService changePasswordService,
ForgotPasswordService forgotPasswordService) { ForgotPasswordService forgotPasswordService,
InitForgotPasswordService initForgotPasswordService) {
this.loginService = loginService; this.loginService = loginService;
this.tokenManagementService = tokenManagementService; this.tokenManagementService = tokenManagementService;
this.logoutService = logoutService; this.logoutService = logoutService;
this.changePasswordService = changePasswordService; this.changePasswordService = changePasswordService;
this.forgotPasswordService = forgotPasswordService; this.forgotPasswordService = forgotPasswordService;
this.initForgotPasswordService = initForgotPasswordService;
} }
@PostMapping("/login") @PostMapping("/login")
@ -73,4 +74,10 @@ public class AuthenticationController {
return forgotPasswordService.execute(forgotPasswordRequest); return forgotPasswordService.execute(forgotPasswordRequest);
} }
@PostMapping("/init/forgot-password")
public InitForgotPasswordResponse initForgotPassword(@RequestBody InitForgotPasswordRequest initForgotPasswordRequest) {
return initForgotPasswordService.execute(initForgotPasswordRequest);
}
} }

View File

@ -1,5 +1,6 @@
package com.iconplus.smartproc.controller; 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.DrpPengadaanRequest;
import com.iconplus.smartproc.model.request.DrpRequest; import com.iconplus.smartproc.model.request.DrpRequest;
import com.iconplus.smartproc.model.response.DrpPengadaanResponse; import com.iconplus.smartproc.model.response.DrpPengadaanResponse;
@ -54,6 +55,14 @@ public class DrpController {
.build()); .build());
} }
@GetMapping("/tahun/{id}")
public EmptyResponse getExistDrp(@PathVariable(name = "id") Integer tahun) {
postCreateDrpService.validateTahunDrp(DrpRequest.builder()
.tahun(tahun)
.build());
return new EmptyResponse();
}
@PostMapping @PostMapping
public DrpResponse createDrp(@RequestBody DrpRequest drpRequest) { public DrpResponse createDrp(@RequestBody DrpRequest drpRequest) {
return postCreateDrpService.execute(drpRequest); return postCreateDrpService.execute(drpRequest);

View File

@ -9,6 +9,7 @@ import org.hibernate.annotations.Type;
import javax.persistence.*; import javax.persistence.*;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.sql.Date;
import java.sql.Timestamp; import java.sql.Timestamp;
@Data @Data
@ -63,10 +64,10 @@ public class DrpPengadaan extends BaseEntity {
private Long strategiPengadaanId; private Long strategiPengadaanId;
@Column(name = "rencana_tanggal") @Column(name = "rencana_tanggal")
private Timestamp rencanaTanggal; private Date rencanaTanggal;
@Column(name = "target_tanggal") @Column(name = "target_tanggal")
private Timestamp targetTanggal; private Date targetTanggal;
@Column(name = "hpe") @Column(name = "hpe")
private BigDecimal hpe; private BigDecimal hpe;

View File

@ -8,6 +8,7 @@ import lombok.NoArgsConstructor;
import org.hibernate.annotations.Type; import org.hibernate.annotations.Type;
import javax.persistence.*; import javax.persistence.*;
import java.sql.Timestamp;
@Data @Data
@Builder @Builder
@ -30,6 +31,9 @@ public class Users extends BaseEntity {
@Column(name = "email") @Column(name = "email")
private String email; private String email;
@Column(name = "telepon")
private String telepon;
@Column(name = "password") @Column(name = "password")
private String password; private String password;
@ -45,6 +49,12 @@ public class Users extends BaseEntity {
@Column(name = "role_id") @Column(name = "role_id")
private Long roleId; private Long roleId;
@Column(name = "remember_id")
private String rememberId;
@Column(name = "expired_time")
private Timestamp expiredTime;
@Column(name = "is_active") @Column(name = "is_active")
@Type(type = "org.hibernate.type.NumericBooleanType") @Type(type = "org.hibernate.type.NumericBooleanType")
private Boolean isActive; private Boolean isActive;

View File

@ -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);
}

View File

@ -17,6 +17,7 @@ public interface UserRoleView {
Long getRoleId(); Long getRoleId();
String getRole(); String getRole();
Boolean getIsDelete(); Boolean getIsDelete();
String getTelepon();
void setId(Long id); void setId(Long id);
void setUsername(String username); void setUsername(String username);
@ -33,5 +34,6 @@ public interface UserRoleView {
void setRoleId(Long roleId); void setRoleId(Long roleId);
void setRole(String role); void setRole(String role);
void setIsDelete(Boolean isDelete); void setIsDelete(Boolean isDelete);
void setTelepon(String telepon);
} }

View File

@ -14,7 +14,6 @@ public class DrpDokumenRequest extends BaseRequest {
private Long jenisDokumenId; private Long jenisDokumenId;
private String filename; private String filename;
private byte[] file;
private String keterangan; private String keterangan;
private Boolean isDelete; private Boolean isDelete;
} }

View File

@ -19,7 +19,6 @@ public class DrpPengadaanDokumenRequest extends BaseRequest {
private Long drpId; private Long drpId;
private Long jenisDokumenId; private Long jenisDokumenId;
private String filename; private String filename;
private byte[] file;
private String keterangan; private String keterangan;
private Boolean isDelete; private Boolean isDelete;
} }

View File

@ -5,14 +5,10 @@ import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import org.hibernate.annotations.Type;
import org.springframework.data.domain.Pageable; 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.math.BigDecimal;
import java.sql.Date;
import java.sql.Timestamp; import java.sql.Timestamp;
import java.util.List; import java.util.List;
@ -36,8 +32,8 @@ public class DrpPengadaanRequest extends BaseRequest {
private Long metodePenyampaianId; private Long metodePenyampaianId;
private Long jenisKontrakId; private Long jenisKontrakId;
private Long strategiPengadaanId; private Long strategiPengadaanId;
private Timestamp rencanaTanggal; private Date rencanaTanggal;
private Timestamp targetTanggal; private Date targetTanggal;
private BigDecimal hpe; private BigDecimal hpe;
private Boolean isActive; private Boolean isActive;
private Boolean isDelete; private Boolean isDelete;

View File

@ -11,7 +11,7 @@ import lombok.NoArgsConstructor;
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
public class ForgotPasswordRequest extends BaseRequest { public class ForgotPasswordRequest extends BaseRequest {
private String email; private String rememberId;
private String newPassword; private String newPassword;
private String confirmationPassword; private String confirmationPassword;
} }

View File

@ -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;
}

View File

@ -26,6 +26,7 @@ public class UsersRequest extends BaseRequest {
private Long roleId; private Long roleId;
private String role; private String role;
private String email; private String email;
private String telepon;
private Boolean isActive; private Boolean isActive;
private String search; private String search;
private transient Pageable pageable; private transient Pageable pageable;

View File

@ -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;
}

View File

@ -7,6 +7,7 @@ import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.sql.Date;
import java.sql.Timestamp; import java.sql.Timestamp;
@Data @Data
@ -29,8 +30,8 @@ public class DrpPengadaanResponse extends BaseResponse {
private Long metodePenyampaianId; private Long metodePenyampaianId;
private Long jenisKontrakId; private Long jenisKontrakId;
private Long strategiPengadaanId; private Long strategiPengadaanId;
private Timestamp rencanaTanggal; private Date rencanaTanggal;
private Timestamp targetTanggal; private Date targetTanggal;
private BigDecimal hpe; private BigDecimal hpe;
private Boolean isActive; private Boolean isActive;
private Boolean isDelete; private Boolean isDelete;

View File

@ -21,5 +21,7 @@ public class DrpResponse extends BaseResponse {
private Boolean isActive; private Boolean isActive;
private Boolean isDelete; private Boolean isDelete;
private List<DrpDokumenResponse> data; private List<DrpDokumenResponse> dataDrpDokumen;
private List<DrpPengadaanDokumenResponse> dataDrpPengadaanDokumen;
} }

View File

@ -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;
}

View File

@ -28,6 +28,7 @@ public class UsersResponse extends BaseResponse {
private String role; private String role;
private String email; private String email;
private String telepon;
private Boolean isActive; private Boolean isActive;
private Boolean isDelete; private Boolean isDelete;
} }

View File

@ -4,6 +4,11 @@ import com.iconplus.smartproc.model.entity.DrpPengadaanDokumen;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.util.List;
@Repository @Repository
public interface DrpPengadaanDokumenRepository extends JpaRepository<DrpPengadaanDokumen, Long> { public interface DrpPengadaanDokumenRepository extends JpaRepository<DrpPengadaanDokumen, Long> {
List<DrpPengadaanDokumen> findByDrpIdAndIsDeleteFalse(Long drpId);
} }

View File

@ -1,9 +1,13 @@
package com.iconplus.smartproc.repository; package com.iconplus.smartproc.repository;
import com.iconplus.smartproc.model.entity.DrpPengadaan; 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.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
@Repository @Repository
public interface DrpPengadaanRepository extends JpaRepository<DrpPengadaan, Long> { public interface DrpPengadaanRepository extends JpaRepository<DrpPengadaan, Long> {
} }

View File

@ -25,6 +25,7 @@ public interface UsersRepository extends JpaRepository<Users, Long> {
"u.instansiId as instansiId, " + "u.instansiId as instansiId, " +
"i.instansi as instansi, " + "i.instansi as instansi, " +
"u.email as email, " + "u.email as email, " +
"u.telepon as telepon, " +
"u.isActive as isActive, " + "u.isActive as isActive, " +
"u.isDelete as isDelete " + "u.isDelete as isDelete " +
"FROM Users u " + "FROM Users u " +
@ -95,4 +96,10 @@ public interface UsersRepository extends JpaRepository<Users, Long> {
"AND u.id = :id") "AND u.id = :id")
Optional<UserRoleView> getUserByIdAndDeletedFase(Long id); Optional<UserRoleView> getUserByIdAndDeletedFase(Long id);
@Query(value = "SELECT * FROM users " +
"WHERE remember_id = :rememberId " +
"AND is_delete = 0 " +
"AND expired_time >= CURRENT_TIMESTAMP", nativeQuery = true)
Optional<Users> getUsersByEmailAndExpiredTime(String rememberId);
} }

View File

@ -42,7 +42,7 @@ public class CommonService {
throw new BusinessException(HttpStatus.CONFLICT, throw new BusinessException(HttpStatus.CONFLICT,
Constants.ERR_CODE_10001, Constants.ERR_CODE_10001,
Constants.ERR_TTL_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()); var bidang= bidangRepository.findByIdAndIsDeleteFalse(input.getBidangId());
@ -50,7 +50,7 @@ public class CommonService {
throw new BusinessException(HttpStatus.CONFLICT, throw new BusinessException(HttpStatus.CONFLICT,
Constants.ERR_CODE_10001, Constants.ERR_CODE_10001,
Constants.ERR_TTL_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()); var instansi= instansiRepository.findByIdAndIsDeleteFalse(input.getInstansiId());
@ -58,7 +58,7 @@ public class CommonService {
throw new BusinessException(HttpStatus.CONFLICT, throw new BusinessException(HttpStatus.CONFLICT,
Constants.ERR_CODE_10001, Constants.ERR_CODE_10001,
Constants.ERR_TTL_10001, Constants.ERR_TTL_10001,
String.format(Constants.ERR_MSG_10001, "Instansi", input.getId())); String.format(Constants.ERR_MSG_10001, "Instansi", input.getInstansiId()));
} }
} }

View File

@ -26,15 +26,14 @@ public class ForgotPasswordService implements BaseService<ForgotPasswordRequest,
@Override @Override
public EmptyResponse execute(ForgotPasswordRequest input) { public EmptyResponse execute(ForgotPasswordRequest input) {
var users = usersRepository.findByEmailAndIsDeleteFalse(input.getEmail()) var users = usersRepository.getUsersByEmailAndExpiredTime(input.getRememberId())
.orElseThrow(() -> new BusinessException(Constants.ERR_CODE_10001, .orElseThrow(() -> new BusinessException(Constants.ERR_CODE_10001,
Constants.ERR_TTL_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 newPassword = commonService.getPassword(input.getNewPassword());
String confirmationPassword = commonService.getPassword(input.getConfirmationPassword()); String confirmationPassword = commonService.getPassword(input.getConfirmationPassword());
if (!StringUtils.equalsIgnoreCase(newPassword, confirmationPassword)) { if (!StringUtils.equalsIgnoreCase(newPassword, confirmationPassword)) {
throw new BusinessException(HttpStatus.CONFLICT, throw new BusinessException(HttpStatus.CONFLICT,
Constants.ERR_CODE_10007, Constants.ERR_CODE_10007,

View File

@ -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<InitForgotPasswordRequest, InitForgotPasswordResponse> {
@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();
}
}

View File

@ -3,10 +3,14 @@ package com.iconplus.smartproc.service.drp;
import com.iconplus.smartproc.exception.BusinessException; import com.iconplus.smartproc.exception.BusinessException;
import com.iconplus.smartproc.helper.service.BaseService; import com.iconplus.smartproc.helper.service.BaseService;
import com.iconplus.smartproc.model.entity.DrpDokumen; 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.request.DrpRequest;
import com.iconplus.smartproc.model.response.DrpDokumenResponse; 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.model.response.DrpResponse;
import com.iconplus.smartproc.repository.DrpDokumenRepository; import com.iconplus.smartproc.repository.DrpDokumenRepository;
import com.iconplus.smartproc.repository.DrpPengadaanDokumenRepository;
import com.iconplus.smartproc.repository.DrpRepository; import com.iconplus.smartproc.repository.DrpRepository;
import com.iconplus.smartproc.util.Constants; import com.iconplus.smartproc.util.Constants;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -19,11 +23,14 @@ public class GetDrpService implements BaseService<DrpRequest, DrpResponse> {
private final DrpRepository drpRepository; private final DrpRepository drpRepository;
private final DrpDokumenRepository drpDokumenRepository; private final DrpDokumenRepository drpDokumenRepository;
private final DrpPengadaanDokumenRepository drpPengadaanDokumenRepository;
public GetDrpService(DrpRepository drpRepository, public GetDrpService(DrpRepository drpRepository,
DrpDokumenRepository drpDokumenRepository) { DrpDokumenRepository drpDokumenRepository,
DrpPengadaanDokumenRepository drpPengadaanDokumenRepository) {
this.drpRepository = drpRepository; this.drpRepository = drpRepository;
this.drpDokumenRepository = drpDokumenRepository; this.drpDokumenRepository = drpDokumenRepository;
this.drpPengadaanDokumenRepository = drpPengadaanDokumenRepository;
} }
@Override @Override
@ -33,8 +40,41 @@ public class GetDrpService implements BaseService<DrpRequest, DrpResponse> {
Constants.ERR_TTL_10001, Constants.ERR_TTL_10001,
String.format(Constants.ERR_MSG_10001, "DRP", input.getId()))); String.format(Constants.ERR_MSG_10001, "DRP", input.getId())));
var drpDokumenList = drpDokumenRepository.findByDrpIdAndIsDeleteFalse(input.getId());
List<DrpDokumenResponse> drpDokumenResponseList = new ArrayList<>(); List<DrpDokumenResponse> drpDokumenResponseList = new ArrayList<>();
setDrpDokumen(input, drpDokumenResponseList);
List<DrpPengadaanDokumenResponse> 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<DrpPengadaanDokumenResponse> 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<DrpDokumenResponse> drpDokumenResponseList) {
var drpDokumenList = drpDokumenRepository.findByDrpIdAndIsDeleteFalse(input.getId());
for (DrpDokumen drpDokumen : drpDokumenList) { for (DrpDokumen drpDokumen : drpDokumenList) {
DrpDokumenResponse drpDokumenResponse = DrpDokumenResponse.builder() DrpDokumenResponse drpDokumenResponse = DrpDokumenResponse.builder()
@ -45,15 +85,5 @@ public class GetDrpService implements BaseService<DrpRequest, DrpResponse> {
.build(); .build();
drpDokumenResponseList.add(drpDokumenResponse); 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();
} }
} }

View File

@ -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<DrpPengadaanRequest, DrpPengadaanResponse> {
private final DrpPengadaanRepository drpPengadaanRepository;
public GetListDrpPengadaanService(DrpPengadaanRepository drpPengadaanRepository) {
this.drpPengadaanRepository = drpPengadaanRepository;
}
@Override
public DrpPengadaanResponse execute(DrpPengadaanRequest input) {
return null;
}
}

View File

@ -38,12 +38,7 @@ public class PostCreateDrpService implements BaseService<DrpRequest, DrpResponse
@Override @Override
public DrpResponse execute(DrpRequest input) { public DrpResponse execute(DrpRequest input) {
Optional<Drp> drpOptional = drpRepository.findByTahunAndIsDeleteFalse(input.getTahun()); validateTahunDrp(input);
if (drpOptional.isPresent()) {
throw new BusinessException(Constants.ERR_CODE_10010,
Constants.ERR_TTL_10010,
Constants.ERR_MSG_10010);
}
Drp drp = Drp.builder() Drp drp = Drp.builder()
.tahun(input.getTahun()) .tahun(input.getTahun())
@ -90,4 +85,13 @@ public class PostCreateDrpService implements BaseService<DrpRequest, DrpResponse
.id(drpSaved.getId()) .id(drpSaved.getId())
.build(); .build();
} }
public void validateTahunDrp(DrpRequest input) {
Optional<Drp> drpOptional = drpRepository.findByTahunAndIsDeleteFalse(input.getTahun());
if (drpOptional.isPresent()) {
throw new BusinessException(Constants.ERR_CODE_10010,
Constants.ERR_TTL_10010,
Constants.ERR_MSG_10010);
}
}
} }

View File

@ -44,6 +44,7 @@ public class GetListUserService implements BaseService<UsersRequest, GetUsersRes
.instansiId(userRoleView.getInstansiId()) .instansiId(userRoleView.getInstansiId())
.instansi(userRoleView.getInstansi()) .instansi(userRoleView.getInstansi())
.email(userRoleView.getEmail()) .email(userRoleView.getEmail())
.telepon(userRoleView.getTelepon())
.isActive(userRoleView.getIsActive()) .isActive(userRoleView.getIsActive())
.build(); .build();
usersResponses.add(usersResponse); usersResponses.add(usersResponse);

View File

@ -40,6 +40,7 @@ public class GetUserByIdService implements BaseService<UsersRequest, UsersRespon
.instansiId(userRoleView.getInstansiId()) .instansiId(userRoleView.getInstansiId())
.instansi(userRoleView.getInstansi()) .instansi(userRoleView.getInstansi())
.email(userRoleView.getEmail()) .email(userRoleView.getEmail())
.telepon(userRoleView.getTelepon())
.isActive(userRoleView.getIsActive()) .isActive(userRoleView.getIsActive())
.build(); .build();
} }

View File

@ -9,7 +9,8 @@ import com.iconplus.smartproc.model.response.UsersResponse;
import com.iconplus.smartproc.repository.UsersRepository; import com.iconplus.smartproc.repository.UsersRepository;
import com.iconplus.smartproc.service.CommonService; import com.iconplus.smartproc.service.CommonService;
import com.iconplus.smartproc.util.Constants; import com.iconplus.smartproc.util.Constants;
import com.iconplus.smartproc.util.EncryptDecryptUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -17,6 +18,9 @@ import org.springframework.stereotype.Service;
@Service @Service
public class PostCreateUserService implements BaseService<UsersRequest, UsersResponse> { public class PostCreateUserService implements BaseService<UsersRequest, UsersResponse> {
@Value("${config.default-password:plgg123}")
private String defaultPassword;
private UsersRepository usersRepository; private UsersRepository usersRepository;
private CommonService commonService; private CommonService commonService;
@ -39,7 +43,12 @@ public class PostCreateUserService implements BaseService<UsersRequest, UsersRes
commonService.validateUserRequst(input); commonService.validateUserRequst(input);
String password = commonService.getPassword(input.getPassword()); String password = null;
if (StringUtils.isNotBlank(input.getPassword())) {
password = commonService.getPassword(input.getPassword());
} else {
password = defaultPassword;
}
BCryptPasswordEncoder encoder = new BCryptPasswordEncoder(); BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();
String encryptedPassword = encoder.encode(password); String encryptedPassword = encoder.encode(password);
@ -53,6 +62,7 @@ public class PostCreateUserService implements BaseService<UsersRequest, UsersRes
.jabatanId(input.getJabatanId()) .jabatanId(input.getJabatanId())
.roleId(input.getRoleId()) .roleId(input.getRoleId())
.email(input.getEmail()) .email(input.getEmail())
.telepon(input.getTelepon())
.password(input.getPassword()) .password(input.getPassword())
.isActive(input.getIsActive()) .isActive(input.getIsActive())
.isDelete(false) .isDelete(false)

View File

@ -39,6 +39,7 @@ public class PutUpdateUserService implements BaseService<UsersRequest, UsersResp
users.setJabatanId(input.getJabatanId()); users.setJabatanId(input.getJabatanId());
users.setRoleId(input.getRoleId()); users.setRoleId(input.getRoleId());
users.setEmail(input.getEmail()); users.setEmail(input.getEmail());
users.setTelepon(input.getTelepon());
users.setPassword(input.getPassword()); users.setPassword(input.getPassword());
users.setIsActive(input.getIsActive()); users.setIsActive(input.getIsActive());
users.setIsDelete(false); users.setIsDelete(false);

View File

@ -41,7 +41,7 @@ public class Constants {
public static final String ERR_MSG_10009 = "Periksa kembali password sekrang anda"; public static final String ERR_MSG_10009 = "Periksa kembali password sekrang anda";
public static final String ERR_CODE_10010 = "10010"; public static final String ERR_CODE_10010 = "10010";
public static final String ERR_TTL_10010 = "Data tidak ditemukan"; public static final String ERR_TTL_10010 = "Data tersedia";
public static final String ERR_MSG_10010 = "Maaf, Tahun DRP yang anda pilih sudah ada sebelumnya. silahkan pilih Tahun DRP lain untuk menambah DRP baru."; public static final String ERR_MSG_10010 = "Maaf, Tahun DRP yang anda pilih sudah ada sebelumnya. silahkan pilih Tahun DRP lain untuk menambah DRP baru.";
public static final String ERR_CODE_10011 = "10011"; public static final String ERR_CODE_10011 = "10011";

View File

@ -10,6 +10,8 @@ config:
password: password:
private-key: MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCRyUePQWkg+IH5dAvQ/+YlVR1htFdhL2+NJtWWXNW15mBUOEr+yvJsOYAzY9KfxmVqRRr1uQEAaaKjNpxwNEnHkMn8LzSEhRxCd4Mqpa5jquCdPfMqGO3cwdkrQjZVfm3tCBYd2HkOeL8PTwlbBORucf6qHPxZvjGVXQeiRAHTlgHTR1647T1+vlDDcaOBJIrwcD566hqOCKMxtE+5F4DieSYEuHJMyvJf/WH2+LxbP2t4Z6IV0tksQKtwyZstEXd3yIL8chKoFh2p3KO8aFfMa7X0aiDVC3z+o2Hh8+YHQt7cSl+NGRxasuqLbY3twZEC9qAIkkDOpBUp7lLZ9NVHAgMBAAECggEACd0GXGjehf6KPKhfTEqj9Y6mqD+dUdP1xiUEemHZi68EgW41lLuCX1Qcml18mJbBscjvJATaTn7XJBfDycuf2kKvh8Jh2T1wRgbz9uSywceD3t+cHhMFtNPgr46RQoOFSG4toONOfW4p7w034tKX6ekIg9XmNOQrUqGyrIXRYdFADB68HaLxlgS0zKrkhp14+wH/krihfS3H7Z+wBVozWSgyHCVbov68l764w3UWZYEEe2mFl31HqhD5KEo8QXODWuemUTROaXKF/iOsPEMC8Qz4Jdqme+iAlV4b2LNaSTEP/NG/kFIE443RlyFo9YfVNw7/osgAksXAPdOZd8qt8QKBgQDYHLX2HVaGj9zvAlqSKjf6VuuxgdRUYW4rqQjm97YmAJNp4udjKLUgD7yDuImYh/E/IWjDxf1Hf3fTjcc98iPMsvP3lkXxdOxMLLlnMv0Ewxof8gATQndU/w+/XuuAZ9cy3vtheo59i4rFpik8XFAH6kPk/gWI9DAE/IbXuOSNUwKBgQCssaxMwfrB9nwQ9eDXv2z+Ce4sZbtZEJYD3a29OGshLw8AH//z/BxPzZRTFy63IfmmIyYSGaC7ZdkrakLhlBXrhi/P0wafp7xEsONb8uNYWDDWoDewH75GX/SPhx7bX0GSeiX6X5XAUg97j0xlfYllIieMLCw4rLU+97ge5xalvQKBgQDXJjYtEGYczsqYFBLRI0DZdIFvFZ6qZtkElGMtdf0b9kTMDL5pZJR1l9UImcY6WVRekkc3aDvQW2GS9rodvJvRZXMm0K9PRCUfbQMjb4qfnBC9LvLOOcSNlOQ7lCcGjdqbZYyELjv/VtXQEa1Jz2lJh/sR1abzAo9v12vzBbpbywKBgQCkdEZKimeLknivhhbqHgdjHH3NlcuFk3/oipBLI5ERdsjoK5EI/crQTEu1nNwF1brx9YLptbIVA3Z+G6E5RFZjhdO+K42hOJDXMUQyaekKVmGb4dNmS7RdPD+e9uPxsJK3NM850RDApuTLm7j65UOUJaRXnjE2f3HSVwDlnNc6WQKBgQCccgyIJx5HnxdkYYFJBnuwo1aDNo2TOqiy9wPXHzxuR8TsvqmbbYoxT0kJkqOjkbQII08nLyHJ3KL7XK3dCEGmdRArHjo0PCLMzKqBZdhtfxN413HxmwXIF5zM6mhS4g8XrDyNW7EhLp/putnpmE6XI9VnEFx/LxAd8nJ9tUd39A== private-key: MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCRyUePQWkg+IH5dAvQ/+YlVR1htFdhL2+NJtWWXNW15mBUOEr+yvJsOYAzY9KfxmVqRRr1uQEAaaKjNpxwNEnHkMn8LzSEhRxCd4Mqpa5jquCdPfMqGO3cwdkrQjZVfm3tCBYd2HkOeL8PTwlbBORucf6qHPxZvjGVXQeiRAHTlgHTR1647T1+vlDDcaOBJIrwcD566hqOCKMxtE+5F4DieSYEuHJMyvJf/WH2+LxbP2t4Z6IV0tksQKtwyZstEXd3yIL8chKoFh2p3KO8aFfMa7X0aiDVC3z+o2Hh8+YHQt7cSl+NGRxasuqLbY3twZEC9qAIkkDOpBUp7lLZ9NVHAgMBAAECggEACd0GXGjehf6KPKhfTEqj9Y6mqD+dUdP1xiUEemHZi68EgW41lLuCX1Qcml18mJbBscjvJATaTn7XJBfDycuf2kKvh8Jh2T1wRgbz9uSywceD3t+cHhMFtNPgr46RQoOFSG4toONOfW4p7w034tKX6ekIg9XmNOQrUqGyrIXRYdFADB68HaLxlgS0zKrkhp14+wH/krihfS3H7Z+wBVozWSgyHCVbov68l764w3UWZYEEe2mFl31HqhD5KEo8QXODWuemUTROaXKF/iOsPEMC8Qz4Jdqme+iAlV4b2LNaSTEP/NG/kFIE443RlyFo9YfVNw7/osgAksXAPdOZd8qt8QKBgQDYHLX2HVaGj9zvAlqSKjf6VuuxgdRUYW4rqQjm97YmAJNp4udjKLUgD7yDuImYh/E/IWjDxf1Hf3fTjcc98iPMsvP3lkXxdOxMLLlnMv0Ewxof8gATQndU/w+/XuuAZ9cy3vtheo59i4rFpik8XFAH6kPk/gWI9DAE/IbXuOSNUwKBgQCssaxMwfrB9nwQ9eDXv2z+Ce4sZbtZEJYD3a29OGshLw8AH//z/BxPzZRTFy63IfmmIyYSGaC7ZdkrakLhlBXrhi/P0wafp7xEsONb8uNYWDDWoDewH75GX/SPhx7bX0GSeiX6X5XAUg97j0xlfYllIieMLCw4rLU+97ge5xalvQKBgQDXJjYtEGYczsqYFBLRI0DZdIFvFZ6qZtkElGMtdf0b9kTMDL5pZJR1l9UImcY6WVRekkc3aDvQW2GS9rodvJvRZXMm0K9PRCUfbQMjb4qfnBC9LvLOOcSNlOQ7lCcGjdqbZYyELjv/VtXQEa1Jz2lJh/sR1abzAo9v12vzBbpbywKBgQCkdEZKimeLknivhhbqHgdjHH3NlcuFk3/oipBLI5ERdsjoK5EI/crQTEu1nNwF1brx9YLptbIVA3Z+G6E5RFZjhdO+K42hOJDXMUQyaekKVmGb4dNmS7RdPD+e9uPxsJK3NM850RDApuTLm7j65UOUJaRXnjE2f3HSVwDlnNc6WQKBgQCccgyIJx5HnxdkYYFJBnuwo1aDNo2TOqiy9wPXHzxuR8TsvqmbbYoxT0kJkqOjkbQII08nLyHJ3KL7XK3dCEGmdRArHjo0PCLMzKqBZdhtfxN413HxmwXIF5zM6mhS4g8XrDyNW7EhLp/putnpmE6XI9VnEFx/LxAd8nJ9tUd39A==
public-key: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAkclHj0FpIPiB+XQL0P/mJVUdYbRXYS9vjSbVllzVteZgVDhK/srybDmAM2PSn8ZlakUa9bkBAGmiozaccDRJx5DJ/C80hIUcQneDKqWuY6rgnT3zKhjt3MHZK0I2VX5t7QgWHdh5Dni/D08JWwTkbnH+qhz8Wb4xlV0HokQB05YB00deuO09fr5Qw3GjgSSK8HA+euoajgijMbRPuReA4nkmBLhyTMryX/1h9vi8Wz9reGeiFdLZLECrcMmbLRF3d8iC/HISqBYdqdyjvGhXzGu19Gog1Qt8/qNh4fPmB0Le3EpfjRkcWrLqi22N7cGRAvagCJJAzqQVKe5S2fTVRwIDAQAB public-key: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAkclHj0FpIPiB+XQL0P/mJVUdYbRXYS9vjSbVllzVteZgVDhK/srybDmAM2PSn8ZlakUa9bkBAGmiozaccDRJx5DJ/C80hIUcQneDKqWuY6rgnT3zKhjt3MHZK0I2VX5t7QgWHdh5Dni/D08JWwTkbnH+qhz8Wb4xlV0HokQB05YB00deuO09fr5Qw3GjgSSK8HA+euoajgijMbRPuReA4nkmBLhyTMryX/1h9vi8Wz9reGeiFdLZLECrcMmbLRF3d8iC/HISqBYdqdyjvGhXzGu19Gog1Qt8/qNh4fPmB0Le3EpfjRkcWrLqi22N7cGRAvagCJJAzqQVKe5S2fTVRwIDAQAB
forgot-password:
expired-time: 1440
spring: spring:
datasource: datasource: