init drp
This commit is contained in:
		| @@ -1,12 +1,13 @@ | ||||
| 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.response.LoginResponse; | ||||
| import com.iconplus.smartproc.model.response.GlobalResponse; | ||||
| import com.iconplus.smartproc.model.response.RefreshTokenResponse; | ||||
| import com.iconplus.smartproc.service.authentication.*; | ||||
| import org.springframework.web.bind.annotation.*; | ||||
| @@ -35,8 +36,20 @@ public class AuthenticationController { | ||||
|     } | ||||
|  | ||||
|     @PostMapping("/login") | ||||
|     public LoginResponse getLoginResponse(@RequestBody LoginRequest loginRequest) { | ||||
|         return loginService.execute(loginRequest); | ||||
|     public GlobalResponse getLoginResponse(@RequestBody LoginRequest loginRequest) { | ||||
|         try { | ||||
|             var loginResponse = loginService.execute(loginRequest); | ||||
|             return GlobalResponse.builder() | ||||
|                     .isOk(true) | ||||
|                     .message("Succes") | ||||
|                     .data(loginResponse) | ||||
|                     .build(); | ||||
|         } catch (BusinessException exception) { | ||||
|             return GlobalResponse.builder() | ||||
|                     .isOk(false) | ||||
|                     .message(exception.getErrorMessage()) | ||||
|                     .build(); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @PostMapping("/refresh-token") | ||||
|   | ||||
| @@ -1,11 +1,59 @@ | ||||
| package com.iconplus.smartproc.controller; | ||||
|  | ||||
| import org.springframework.web.bind.annotation.CrossOrigin; | ||||
| import org.springframework.web.bind.annotation.RequestMapping; | ||||
| import org.springframework.web.bind.annotation.RestController; | ||||
| import com.iconplus.smartproc.model.request.DrpRequest; | ||||
| import com.iconplus.smartproc.model.request.InstansiRequest; | ||||
| import com.iconplus.smartproc.model.response.DrpResponse; | ||||
| import com.iconplus.smartproc.model.response.GetListDrpResponse; | ||||
| import com.iconplus.smartproc.model.response.InstansiResponse; | ||||
| import com.iconplus.smartproc.service.drp.GetDrpService; | ||||
| import com.iconplus.smartproc.service.drp.GetListDrpService; | ||||
| import com.iconplus.smartproc.service.drp.PostCreateDrpService; | ||||
| import org.springframework.data.domain.PageRequest; | ||||
| import org.springframework.data.domain.Pageable; | ||||
| import org.springframework.web.bind.annotation.*; | ||||
| import org.springframework.web.multipart.MultipartFile; | ||||
|  | ||||
| @CrossOrigin(origins = "http://localhost:8080", allowCredentials = "true") | ||||
| @CrossOrigin(origins = "${fe.server}", allowCredentials = "true") | ||||
| @RestController | ||||
| @RequestMapping("/api/drp") | ||||
| public class DrpController { | ||||
|  | ||||
|     private final GetDrpService getDrpService; | ||||
|     private final GetListDrpService getListDrpService; | ||||
|     private final PostCreateDrpService postCreateDrpService; | ||||
|  | ||||
|     public DrpController(GetDrpService getDrpService, | ||||
|                          GetListDrpService getListDrpService, | ||||
|                          PostCreateDrpService postCreateDrpService) { | ||||
|         this.getDrpService = getDrpService; | ||||
|         this.getListDrpService = getListDrpService; | ||||
|         this.postCreateDrpService = postCreateDrpService; | ||||
|     } | ||||
|  | ||||
|     @GetMapping | ||||
|     public GetListDrpResponse getListDrp(@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); | ||||
|         DrpRequest drpRequest = DrpRequest.builder() | ||||
|                 .search(search) | ||||
|                 .pageable(pageable) | ||||
|                 .build(); | ||||
|  | ||||
|         return getListDrpService.execute(drpRequest); | ||||
|     } | ||||
|  | ||||
|     @GetMapping("/{id}") | ||||
|     public DrpResponse getDrp(@PathVariable Long id) { | ||||
|         return getDrpService.execute(DrpRequest.builder() | ||||
|                 .id(id) | ||||
|                 .build()); | ||||
|     } | ||||
|  | ||||
|     @PostMapping | ||||
|     public DrpResponse createDrp(@RequestBody DrpRequest drpRequest) { | ||||
|         return postCreateDrpService.execute(drpRequest); | ||||
|     } | ||||
|  | ||||
| } | ||||
|   | ||||
| @@ -0,0 +1,47 @@ | ||||
| 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 = "drp_dokumen") | ||||
| public class DrpDokumen extends BaseEntity { | ||||
|  | ||||
|     @Id | ||||
|     @GeneratedValue(strategy = GenerationType.IDENTITY) | ||||
|     @Column(name = "id") | ||||
|     private Long id; | ||||
|  | ||||
|     @Column(name = "drp_id") | ||||
|     private Long drpId; | ||||
|  | ||||
|     @Column(name = "jenis_dokumen_id") | ||||
|     private Long jenisDokumenId; | ||||
|  | ||||
|     @Column(name = "filename") | ||||
|     private String filename; | ||||
|  | ||||
|     @Column(name = "keterangan") | ||||
|     private String keterangan; | ||||
|  | ||||
|     @Column(name = "file") | ||||
|     private byte[] file; | ||||
|  | ||||
|     @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; | ||||
| } | ||||
| @@ -0,0 +1,20 @@ | ||||
| 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 DrpDokumenRequest extends BaseRequest { | ||||
|  | ||||
|     private Long jenisDokumenId; | ||||
|     private String filename; | ||||
|     private byte[] file; | ||||
|     private String keterangan; | ||||
|     private Boolean isDelete; | ||||
| } | ||||
| @@ -8,6 +8,7 @@ import lombok.NoArgsConstructor; | ||||
| import org.springframework.data.domain.Pageable; | ||||
|  | ||||
| import java.sql.Timestamp; | ||||
| import java.util.List; | ||||
|  | ||||
| @Data | ||||
| @Builder | ||||
| @@ -19,5 +20,9 @@ public class DrpRequest extends BaseRequest { | ||||
|     private Boolean isApprove; | ||||
|     private Timestamp approveDate; | ||||
|     private Boolean isActive; | ||||
|  | ||||
|     private List<DrpDokumenRequest> data; | ||||
|  | ||||
|     private String search; | ||||
|     private transient Pageable pageable; | ||||
| } | ||||
|   | ||||
| @@ -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; | ||||
|  | ||||
| import java.sql.Timestamp; | ||||
|  | ||||
| @Data | ||||
| @Builder | ||||
| @AllArgsConstructor | ||||
| @NoArgsConstructor | ||||
| public class DrpDokumenResponse extends BaseResponse { | ||||
|  | ||||
|     private Long id; | ||||
|     private Long drpId; | ||||
|     private Long jenisDokumenId; | ||||
|     private String filename; | ||||
|     private String keterangan; | ||||
|  | ||||
| } | ||||
| @@ -7,6 +7,7 @@ import lombok.Data; | ||||
| import lombok.NoArgsConstructor; | ||||
|  | ||||
| import java.sql.Timestamp; | ||||
| import java.util.List; | ||||
|  | ||||
| @Data | ||||
| @Builder | ||||
| @@ -19,4 +20,6 @@ public class DrpResponse extends BaseResponse { | ||||
|     private Timestamp approveDate; | ||||
|     private Boolean isActive; | ||||
|     private Boolean isDelete; | ||||
|  | ||||
|     private List<DrpDokumenResponse> data; | ||||
| } | ||||
|   | ||||
| @@ -0,0 +1,19 @@ | ||||
| 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 GlobalResponse extends BaseResponse { | ||||
|  | ||||
|     private Boolean isOk; | ||||
|     private String message; | ||||
|     private transient Object data; | ||||
| } | ||||
| @@ -0,0 +1,13 @@ | ||||
| package com.iconplus.smartproc.repository; | ||||
|  | ||||
| import com.iconplus.smartproc.model.entity.DrpDokumen; | ||||
| import org.springframework.data.jpa.repository.JpaRepository; | ||||
| import org.springframework.stereotype.Repository; | ||||
|  | ||||
| import java.util.List; | ||||
|  | ||||
| @Repository | ||||
| public interface DrpDokumenRepository extends JpaRepository<DrpDokumen, Long> { | ||||
|  | ||||
|     List<DrpDokumen> findByDrpIdAndIsDeleteFalse(Long drpId); | ||||
| } | ||||
| @@ -17,15 +17,17 @@ public interface DrpRepository extends JpaRepository<Drp, Long> { | ||||
|  | ||||
|     Optional<Drp> findByIdAndIsDeleteFalse(Long id); | ||||
|  | ||||
|     Optional<Drp> findByTahunAndIsDeleteFalse(Integer tahun); | ||||
|  | ||||
|     @Query(value = "SELECT d.id as id, " + | ||||
|             "d.tahun as tahun, " + | ||||
|             "d.isApprove as isApprove, " + | ||||
|             "d.approveDate as approveDate, " + | ||||
|             "d.isActive as isActive, " + | ||||
|             "d.isDelete as isDelete " + | ||||
|             "FROM Drp d" + | ||||
|             "FROM Drp d " + | ||||
|             "WHERE d.isDelete = false " + | ||||
|             "AND (:approveDate = '' or DATE(d.approveDate) = DATE(approveDate)) " + | ||||
| //            "AND (:approveDate = '' or DATE(d.approveDate) = DATE(approveDate)) " + | ||||
|             "ORDER BY d.id") | ||||
|     Page<DrpView> findByIsDeleteFalse(Timestamp approveDate, | ||||
|                                       Pageable pageable); | ||||
|   | ||||
| @@ -2,19 +2,28 @@ 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.request.DrpRequest; | ||||
| import com.iconplus.smartproc.model.response.DrpDokumenResponse; | ||||
| import com.iconplus.smartproc.model.response.DrpResponse; | ||||
| import com.iconplus.smartproc.repository.DrpDokumenRepository; | ||||
| import com.iconplus.smartproc.repository.DrpRepository; | ||||
| import com.iconplus.smartproc.util.Constants; | ||||
| import org.springframework.stereotype.Service; | ||||
|  | ||||
| import java.util.ArrayList; | ||||
| import java.util.List; | ||||
|  | ||||
| @Service | ||||
| public class GetDrpService implements BaseService<DrpRequest, DrpResponse> { | ||||
|  | ||||
|     private final DrpRepository drpRepository; | ||||
|     private final DrpDokumenRepository drpDokumenRepository; | ||||
|  | ||||
|     public GetDrpService(DrpRepository drpRepository) { | ||||
|     public GetDrpService(DrpRepository drpRepository, | ||||
|                          DrpDokumenRepository drpDokumenRepository) { | ||||
|         this.drpRepository = drpRepository; | ||||
|         this.drpDokumenRepository = drpDokumenRepository; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
| @@ -24,6 +33,19 @@ public class GetDrpService implements BaseService<DrpRequest, DrpResponse> { | ||||
|                         Constants.ERR_TTL_10001, | ||||
|                         String.format(Constants.ERR_MSG_10001, "DRP", input.getId()))); | ||||
|  | ||||
|         var drpDokumenList = drpDokumenRepository.findByDrpIdAndIsDeleteFalse(input.getId()); | ||||
|         List<DrpDokumenResponse> drpDokumenResponseList = new ArrayList<>(); | ||||
|  | ||||
|         for (DrpDokumen drpDokumen : drpDokumenList) { | ||||
|             DrpDokumenResponse drpDokumenResponse = DrpDokumenResponse.builder() | ||||
|                     .id(drpDokumen.getId()) | ||||
|                     .drpId(drpDokumen.getDrpId()) | ||||
|                     .jenisDokumenId(drpDokumen.getJenisDokumenId()) | ||||
|                     .filename(drpDokumen.getFilename()) | ||||
|                     .build(); | ||||
|             drpDokumenResponseList.add(drpDokumenResponse); | ||||
|         } | ||||
|  | ||||
|         return DrpResponse.builder() | ||||
|                 .id(drp.getId()) | ||||
|                 .tahun(drp.getTahun()) | ||||
| @@ -31,6 +53,7 @@ public class GetDrpService implements BaseService<DrpRequest, DrpResponse> { | ||||
|                 .approveDate(drp.getApproveDate()) | ||||
|                 .isActive(drp.getIsActive()) | ||||
|                 .isDelete(drp.getIsDelete()) | ||||
|                 .data(drpDokumenResponseList) | ||||
|                 .build(); | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -0,0 +1,72 @@ | ||||
| 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.Drp; | ||||
| import com.iconplus.smartproc.model.entity.DrpDokumen; | ||||
| import com.iconplus.smartproc.model.request.DrpDokumenRequest; | ||||
| import com.iconplus.smartproc.model.request.DrpRequest; | ||||
| import com.iconplus.smartproc.model.response.DrpResponse; | ||||
| import com.iconplus.smartproc.repository.DrpDokumenRepository; | ||||
| import com.iconplus.smartproc.repository.DrpRepository; | ||||
| import com.iconplus.smartproc.util.Constants; | ||||
| import org.apache.commons.lang3.ObjectUtils; | ||||
| import org.springframework.stereotype.Service; | ||||
|  | ||||
| import java.util.ArrayList; | ||||
| import java.util.List; | ||||
| import java.util.Optional; | ||||
|  | ||||
| @Service | ||||
| public class PostCreateDrpService implements BaseService<DrpRequest, DrpResponse> { | ||||
|  | ||||
|     private final DrpRepository drpRepository; | ||||
|     private final DrpDokumenRepository drpDokumenRepository; | ||||
|  | ||||
|     public PostCreateDrpService (DrpRepository drpRepository, | ||||
|                                  DrpDokumenRepository drpDokumenRepository) { | ||||
|         this.drpRepository = drpRepository; | ||||
|         this.drpDokumenRepository = drpDokumenRepository; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public DrpResponse execute(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); | ||||
|         } | ||||
|  | ||||
|         Drp drp = Drp.builder() | ||||
|                 .tahun(input.getTahun()) | ||||
|                 .isApprove(false) | ||||
|                 .isActive(input.getIsActive()) | ||||
|                 .isDelete(false) | ||||
|                 .build(); | ||||
|  | ||||
|         var drpSaved = drpRepository.save(drp); | ||||
|  | ||||
|         List<DrpDokumen> drpDokumenList = new ArrayList<>(); | ||||
|         if (ObjectUtils.isNotEmpty(input.getData())) { | ||||
|             for (DrpDokumenRequest drpDokumenRequest : input.getData()) { | ||||
|                 DrpDokumen drpDokumen = DrpDokumen.builder() | ||||
|                         .drpId(drpSaved.getId()) | ||||
|                         .jenisDokumenId(drpDokumenRequest.getJenisDokumenId()) | ||||
|                         .filename(drpDokumenRequest.getFilename()) | ||||
|                         .file(drpDokumenRequest.getFile()) | ||||
|                         .keterangan(drpDokumenRequest.getKeterangan()) | ||||
|                         .isDelete(false) | ||||
|                         .build(); | ||||
|                 drpDokumenList.add(drpDokumen); | ||||
|             } | ||||
|  | ||||
|         } | ||||
|         drpDokumenRepository.saveAll(drpDokumenList); | ||||
|  | ||||
|         return DrpResponse.builder() | ||||
|                 .id(drpSaved.getId()) | ||||
|                 .build(); | ||||
|     } | ||||
| } | ||||
| @@ -41,8 +41,12 @@ public class Constants { | ||||
|     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_TTL_10010 = "Proses Gagal"; | ||||
|     public static final String ERR_MSG_10010 = "Gagal decrypt password, masukkan password yg ter-encrypt"; | ||||
|     public static final String ERR_TTL_10010 = "Data tidak ditemukan"; | ||||
|     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_TTL_10011 = "Proses Gagal"; | ||||
|     public static final String ERR_MSG_10011 = "Gagal decrypt password, masukkan password yg ter-encrypt"; | ||||
|  | ||||
|     public static final String ERR_CODE_40041 = "40041"; | ||||
|     public static final String ERR_TTL_40041 = "Terjadi Gangguan"; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user