init drp
This commit is contained in:
@ -1,12 +1,13 @@
|
|||||||
package com.iconplus.smartproc.controller;
|
package com.iconplus.smartproc.controller;
|
||||||
|
|
||||||
|
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.ChangePasswordRequest;
|
||||||
import com.iconplus.smartproc.model.request.ForgotPasswordRequest;
|
import com.iconplus.smartproc.model.request.ForgotPasswordRequest;
|
||||||
import com.iconplus.smartproc.model.request.LoginRequest;
|
import com.iconplus.smartproc.model.request.LoginRequest;
|
||||||
import com.iconplus.smartproc.model.request.RefreshTokenRequest;
|
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.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.*;
|
||||||
@ -35,8 +36,20 @@ public class AuthenticationController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/login")
|
@PostMapping("/login")
|
||||||
public LoginResponse getLoginResponse(@RequestBody LoginRequest loginRequest) {
|
public GlobalResponse getLoginResponse(@RequestBody LoginRequest loginRequest) {
|
||||||
return loginService.execute(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")
|
@PostMapping("/refresh-token")
|
||||||
|
@ -1,11 +1,59 @@
|
|||||||
package com.iconplus.smartproc.controller;
|
package com.iconplus.smartproc.controller;
|
||||||
|
|
||||||
import org.springframework.web.bind.annotation.CrossOrigin;
|
import com.iconplus.smartproc.model.request.DrpRequest;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import com.iconplus.smartproc.model.request.InstansiRequest;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
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
|
@RestController
|
||||||
@RequestMapping("/api/drp")
|
@RequestMapping("/api/drp")
|
||||||
public class DrpController {
|
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 org.springframework.data.domain.Pageable;
|
||||||
|
|
||||||
import java.sql.Timestamp;
|
import java.sql.Timestamp;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@Builder
|
@Builder
|
||||||
@ -19,5 +20,9 @@ public class DrpRequest extends BaseRequest {
|
|||||||
private Boolean isApprove;
|
private Boolean isApprove;
|
||||||
private Timestamp approveDate;
|
private Timestamp approveDate;
|
||||||
private Boolean isActive;
|
private Boolean isActive;
|
||||||
|
|
||||||
|
private List<DrpDokumenRequest> data;
|
||||||
|
|
||||||
|
private String search;
|
||||||
private transient Pageable pageable;
|
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 lombok.NoArgsConstructor;
|
||||||
|
|
||||||
import java.sql.Timestamp;
|
import java.sql.Timestamp;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@Builder
|
@Builder
|
||||||
@ -19,4 +20,6 @@ public class DrpResponse extends BaseResponse {
|
|||||||
private Timestamp approveDate;
|
private Timestamp approveDate;
|
||||||
private Boolean isActive;
|
private Boolean isActive;
|
||||||
private Boolean isDelete;
|
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> findByIdAndIsDeleteFalse(Long id);
|
||||||
|
|
||||||
|
Optional<Drp> findByTahunAndIsDeleteFalse(Integer tahun);
|
||||||
|
|
||||||
@Query(value = "SELECT d.id as id, " +
|
@Query(value = "SELECT d.id as id, " +
|
||||||
"d.tahun as tahun, " +
|
"d.tahun as tahun, " +
|
||||||
"d.isApprove as isApprove, " +
|
"d.isApprove as isApprove, " +
|
||||||
"d.approveDate as approveDate, " +
|
"d.approveDate as approveDate, " +
|
||||||
"d.isActive as isActive, " +
|
"d.isActive as isActive, " +
|
||||||
"d.isDelete as isDelete " +
|
"d.isDelete as isDelete " +
|
||||||
"FROM Drp d" +
|
"FROM Drp d " +
|
||||||
"WHERE d.isDelete = false " +
|
"WHERE d.isDelete = false " +
|
||||||
"AND (:approveDate = '' or DATE(d.approveDate) = DATE(approveDate)) " +
|
// "AND (:approveDate = '' or DATE(d.approveDate) = DATE(approveDate)) " +
|
||||||
"ORDER BY d.id")
|
"ORDER BY d.id")
|
||||||
Page<DrpView> findByIsDeleteFalse(Timestamp approveDate,
|
Page<DrpView> findByIsDeleteFalse(Timestamp approveDate,
|
||||||
Pageable pageable);
|
Pageable pageable);
|
||||||
|
@ -2,19 +2,28 @@ 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.request.DrpRequest;
|
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.model.response.DrpResponse;
|
||||||
|
import com.iconplus.smartproc.repository.DrpDokumenRepository;
|
||||||
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;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class GetDrpService implements BaseService<DrpRequest, DrpResponse> {
|
public class GetDrpService implements BaseService<DrpRequest, DrpResponse> {
|
||||||
|
|
||||||
private final DrpRepository drpRepository;
|
private final DrpRepository drpRepository;
|
||||||
|
private final DrpDokumenRepository drpDokumenRepository;
|
||||||
|
|
||||||
public GetDrpService(DrpRepository drpRepository) {
|
public GetDrpService(DrpRepository drpRepository,
|
||||||
|
DrpDokumenRepository drpDokumenRepository) {
|
||||||
this.drpRepository = drpRepository;
|
this.drpRepository = drpRepository;
|
||||||
|
this.drpDokumenRepository = drpDokumenRepository;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -24,6 +33,19 @@ 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<>();
|
||||||
|
|
||||||
|
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()
|
return DrpResponse.builder()
|
||||||
.id(drp.getId())
|
.id(drp.getId())
|
||||||
.tahun(drp.getTahun())
|
.tahun(drp.getTahun())
|
||||||
@ -31,6 +53,7 @@ public class GetDrpService implements BaseService<DrpRequest, DrpResponse> {
|
|||||||
.approveDate(drp.getApproveDate())
|
.approveDate(drp.getApproveDate())
|
||||||
.isActive(drp.getIsActive())
|
.isActive(drp.getIsActive())
|
||||||
.isDelete(drp.getIsDelete())
|
.isDelete(drp.getIsDelete())
|
||||||
|
.data(drpDokumenResponseList)
|
||||||
.build();
|
.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_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 = "Proses Gagal";
|
public static final String ERR_TTL_10010 = "Data tidak ditemukan";
|
||||||
public static final String ERR_MSG_10010 = "Gagal decrypt password, masukkan password yg ter-encrypt";
|
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_CODE_40041 = "40041";
|
||||||
public static final String ERR_TTL_40041 = "Terjadi Gangguan";
|
public static final String ERR_TTL_40041 = "Terjadi Gangguan";
|
||||||
|
Reference in New Issue
Block a user