diff --git a/admin/admin-service/pom.xml b/admin/admin-service/pom.xml
index d0c11f5aed8..3cab6c6204b 100644
--- a/admin/admin-service/pom.xml
+++ b/admin/admin-service/pom.xml
@@ -1,8 +1,8 @@
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
+ xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
4.0.0
io.mosip.admin
@@ -11,7 +11,7 @@
admin-service
admin-service
- 1.2.0.1
+ 1.2.0.1
http://maven.apache.org
jar
@@ -25,47 +25,60 @@
io.mosip.kernel
kernel-core
${kernel.version}
-
-
- org.apache.logging.log4j
- log4j-to-slf4j
-
-
- org.apache.logging.log4j
- log4j-api
-
-
+
+
+
+ com.fasterxml.jackson.core
+ jackson-databind
+ 2.17.1
+
+
org.projectlombok
lombok
${lombok.version}
compile
+
- io.mosip.kernel
- kernel-openid-bridge-api
- ${kernel.version}
+ org.hibernate
+ hibernate-validator
+ 6.0.13.Final
+
- commons-io
- commons-io
- 2.10.0
+ org.apache.poi
+ poi
+ 5.2.2
- org.apache.poi
- poi-ooxml
- 5.2.2
+ org.apache.poi
+ poi-ooxml
+ 5.2.2
-
- org.springframework.batch.extensions
- spring-batch-excel
- 0.1.0
+ commons-io
+ commons-io
+ 2.10.0
-
-
- io.mosip.kernel
+
+
+ org.springframework.batch.extensions
+ spring-batch-excel
+ 0.1.0
+
+
+
+
+
+ org.apache.logging.log4j
+ log4j-api
+ 2.17.2
+
+
+
+ io.mosip.kernel
kernel-authcodeflowproxy-api
${kernel.version}
@@ -73,6 +86,7 @@
io.mosip.kernel
kernel-core
+
@@ -86,25 +100,29 @@
${spring-cloud-config.version}
- org.springframework.boot
- spring-boot-starter-batch
- ${spring.boot.version}
-
+ org.springframework.boot
+ spring-boot-starter-batch
+ ${spring.boot.version}
+
org.postgresql
postgresql
${postgresql.version}
-
- javax.xml.bind
- jaxb-api
- 2.3.1
-
-
- com.google.code.gson
- gson
- 2.8.6
+ io.mosip.biometric.util
+ biometrics-util
+ 1.2.0.2
+
+
+ javax.xml.bind
+ jaxb-api
+ 2.3.1
+
+
+ com.google.code.gson
+ gson
+ 2.8.6
org.springframework.boot
@@ -126,7 +144,7 @@
io.mosip.kernel
kernel-idvalidator-rid
${kernel.version}
-
+
org.springdoc
springdoc-openapi-ui
@@ -138,11 +156,30 @@
+
+ io.mosip.kernel
+ kernel-auth-adapter
+ 1.2.0.1
+
+
+ org.springframework.boot
+ spring-boot-starter-webflux
+
+
+ org.slf4j
+ slf4j-log4j12
+
+
+ log4j
+ log4j
+
+
+
io.mosip.commons
commons-packet-manager
- 1.2.0.1-SNAPSHOT
+ ${kernel.version}
org.springframework.cloud
@@ -160,10 +197,6 @@
org.springframework.boot
spring-boot-starter-security
-
- io.vertx
- vertx-web
-
io.mosip.kernel
kernel-auth-adapter
@@ -172,6 +205,11 @@
io.mosip.kernel
kernel-logger-logback
+
+ io.vertx
+ vertx-web
+
+
@@ -209,86 +247,87 @@
-
-
-openapi-doc-generate-profile
-
-
- io.mosip.kernel
- kernel-auth-adapter
- ${project.version}
-
-
- io.netty
- netty-transport
- 4.1.72.Final
-
-
-
-
-
- org.springframework.boot
- spring-boot-maven-plugin
- ${spring.boot.version}
-
- true
- ZIP
-
-
-
- pre-integration-test
-
- start
-
-
-
- src/test/resources
-
-
- test
-
-
- --server.port=8090
- --server.servlet.context-path=/app/generic
-
+
+
+ openapi-doc-generate-profile
+
+
+ io.mosip.kernel
+ kernel-auth-adapter
+ ${project.version}
+
+
+ io.netty
+ netty-transport
+ 4.1.72.Final
+
-
-
-
- post-integration-test
-
- stop
-
-
-
-
- build-info
- repackage
-
-
-
-
-
- org.springdoc
- springdoc-openapi-maven-plugin
- 0.2
-
-
- integration-test
-
- generate
-
-
-
-
- http://localhost:8090/app/generic/v3/api-docs/Admin%20Service
- ${artifactId}-openapi.json
- ${project.build.directory}
- false
-
-
-
-
-
-
-
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ ${spring.boot.version}
+
+ true
+ ZIP
+
+
+
+ pre-integration-test
+
+ start
+
+
+
+ src/test/resources
+
+
+ test
+
+
+ --server.port=8090
+ --server.servlet.context-path=/app/generic
+
+
+
+
+
+ post-integration-test
+
+ stop
+
+
+
+
+ build-info
+ repackage
+
+
+
+
+
+ org.springdoc
+ springdoc-openapi-maven-plugin
+ 0.2
+
+
+ integration-test
+
+ generate
+
+
+
+
+ http://localhost:8090/app/generic/v3/api-docs/Admin%20Service
+ ${artifactId}-openapi.json
+ ${project.build.directory}
+ false
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/ApplicantUserDetailsEntity.java b/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/ApplicantUserDetailsEntity.java
new file mode 100644
index 00000000000..053ca5fb964
--- /dev/null
+++ b/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/ApplicantUserDetailsEntity.java
@@ -0,0 +1,29 @@
+package io.mosip.admin.bulkdataupload.entity;
+
+import lombok.Data;
+import org.hibernate.annotations.GenericGenerator;
+
+import javax.persistence.*;
+import java.io.Serializable;
+import java.time.LocalDate;
+
+@Data
+@Entity
+@Table(name = "applicant_login_detail", schema = "master")
+public class ApplicantUserDetailsEntity extends BaseEntity implements Serializable {
+
+ private static final long serialVersionUID = -8541947587557590379L;
+
+ @Id
+ @GeneratedValue(generator = "uuid")
+ @GenericGenerator(name = "uuid", strategy = "org.hibernate.id.UUIDGenerator")
+ @Column(name = "id", nullable = false, length = 64)
+ private String id;
+
+ @Column(name = "usr_id", nullable = false, length = 64)
+ private String userId;
+
+ @Column(name = "login_date")
+ private LocalDate loginDate;
+
+}
diff --git a/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/ApplicantUserDetailsRepository.java b/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/ApplicantUserDetailsRepository.java
new file mode 100644
index 00000000000..9621c88a943
--- /dev/null
+++ b/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/ApplicantUserDetailsRepository.java
@@ -0,0 +1,18 @@
+package io.mosip.admin.bulkdataupload.entity;
+
+import io.mosip.kernel.core.dataaccess.spi.repository.BaseRepository;
+import org.springframework.stereotype.Repository;
+
+import java.time.LocalDate;
+
+/**
+ * @author Dhanendra
+ *
+ */
+@Repository
+public interface ApplicantUserDetailsRepository extends BaseRepository {
+
+
+ long countByUserIdAndLoginDate(String userId, LocalDate loginDate);
+
+}
diff --git a/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/DigitalCardStatusResponseDto.java b/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/DigitalCardStatusResponseDto.java
new file mode 100644
index 00000000000..3d951223934
--- /dev/null
+++ b/admin/admin-service/src/main/java/io/mosip/admin/bulkdataupload/entity/DigitalCardStatusResponseDto.java
@@ -0,0 +1,17 @@
+package io.mosip.admin.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class DigitalCardStatusResponseDto {
+
+ private String id;
+
+ private String statusCode;
+
+ private String url;
+}
diff --git a/admin/admin-service/src/main/java/io/mosip/admin/constant/ApplicantDetailErrorCode.java b/admin/admin-service/src/main/java/io/mosip/admin/constant/ApplicantDetailErrorCode.java
new file mode 100644
index 00000000000..03fdf29a1c5
--- /dev/null
+++ b/admin/admin-service/src/main/java/io/mosip/admin/constant/ApplicantDetailErrorCode.java
@@ -0,0 +1,32 @@
+package io.mosip.admin.constant;
+
+public enum ApplicantDetailErrorCode {
+
+ UNABLE_TO_RETRIEVE_RID_DETAILS("ADM-AVD-001", "A technical error occurred while retrieving the data, please try again after some time."),
+ RID_INVALID("ADM-AVD-002","RID is invalid"),
+ RID_NOT_FOUND("ADM-AVD-003","The card for this request ID is not generated. Please check the status of the ID."),
+ DATA_NOT_FOUND("ADM-AVD-004","Applicant Photo Not Found"),
+ DIGITAL_CARD_RID_NOT_FOUND("ADM-AVD-005", "Digital card not found for the RID, please try after few days"),
+ DIGITAL_CARD_NOT_ACKNOWLEDGED("ADM-AVD-006", "Please acknowledge the details before downloading digital card"),
+ REQ_ID_NOT_FOUND("ADM-AVD-007","Request id not found"),
+
+ LIMIT_EXCEEDED("ADM-AVD-008","Your daily search limit has exceeded. Please try searching again tomorrow."),
+
+ DATA_SHARE_EXPIRED_EXCEPTION("ADM-AVD-008", "Data share usuage expired");
+
+ private final String errorCode;
+ private final String errorMessage;
+
+ private ApplicantDetailErrorCode(final String errorCode, final String errorMessage) {
+ this.errorCode = errorCode;
+ this.errorMessage = errorMessage;
+ }
+
+ public String getErrorCode() {
+ return errorCode;
+ }
+
+ public String getErrorMessage() {
+ return errorMessage;
+ }
+}
diff --git a/admin/admin-service/src/main/java/io/mosip/admin/constant/LostRidErrorCode.java b/admin/admin-service/src/main/java/io/mosip/admin/constant/LostRidErrorCode.java
index a4f66e1a0bb..70894d37397 100644
--- a/admin/admin-service/src/main/java/io/mosip/admin/constant/LostRidErrorCode.java
+++ b/admin/admin-service/src/main/java/io/mosip/admin/constant/LostRidErrorCode.java
@@ -2,7 +2,11 @@
public enum LostRidErrorCode {
- UNABLE_TO_RETRIEVE_LOSTRID("ADMN-LRID-001", "Unable ro find the lost rid..");
+ UNABLE_TO_RETRIEVE_LOSTRID("ADMN-LRID-001", "Unable to find the lost rid.."),
+ UNABLE_TO_RETRIEVE_LOSTRID_DATA("ADMN-LRID-002", "Unable to find the lost rid data"),
+
+ UNABLE_TO_RETRIEVE_APPLICANT_PHOTO("ADMN-LRID-003", "Unable to retrieve applicantPhoto");
+
private final String errorCode;
private final String errorMessage;
diff --git a/admin/admin-service/src/main/java/io/mosip/admin/controller/AdminController.java b/admin/admin-service/src/main/java/io/mosip/admin/controller/AdminController.java
index f473f74d01d..7c45c57c9fa 100644
--- a/admin/admin-service/src/main/java/io/mosip/admin/controller/AdminController.java
+++ b/admin/admin-service/src/main/java/io/mosip/admin/controller/AdminController.java
@@ -3,15 +3,11 @@
import java.util.ArrayList;
import java.util.List;
+import io.mosip.admin.dto.*;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RestController;
-
-import io.mosip.admin.dto.ErrorDTO;
-import io.mosip.admin.dto.LostRidExtnDto;
-import io.mosip.admin.dto.LostRidResponseDto;
-import io.mosip.admin.dto.SearchInfo;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
import io.mosip.admin.packetstatusupdater.util.AuditUtil;
import io.mosip.admin.packetstatusupdater.util.EventEnum;
import io.mosip.admin.service.AdminService;
@@ -24,18 +20,29 @@ public class AdminController {
@Autowired
AdminService adminService;
-
+
@Autowired
AuditUtil auditUtil;
+ @PreAuthorize("hasAnyRole(@authorizedRoles.getPostlostRid())")
@PostMapping("/lostRid")
- private ResponseWrapper lostRid(@RequestBody RequestWrapper searchInfo) {
+ public ResponseWrapper lostRid(@RequestBody RequestWrapper searchInfo) {
auditUtil.setAuditRequestDto(EventEnum.LOST_RID_API_CALLED,null);
LostRidResponseDto lostRidResponseDto = adminService.lostRid(searchInfo.getRequest());
auditUtil.setAuditRequestDto(EventEnum.LOST_RID_SUCCESS,null);
return buildLostRidResponse(lostRidResponseDto);
}
-
+
+// @PreAuthorize("hasAnyRole(@authorizedRoles.getGetlostRiddetailsrid())")
+ @GetMapping("/lostRid/details/{rid}")
+ public ResponseWrapper getLostRidDetails(@PathVariable("rid") String rid) {
+ auditUtil.setAuditRequestDto(EventEnum.LOST_RID_API_CALLED,null);
+ ResponseWrapper responseWrapper = new ResponseWrapper<>();
+ responseWrapper.setResponse(adminService.getLostRidDetails(rid));
+ auditUtil.setAuditRequestDto(EventEnum.LOST_RID_SUCCESS,null);
+ return responseWrapper;
+ }
+
private ResponseWrapper buildLostRidResponse(LostRidResponseDto lostRidResponseDto) {
ResponseWrapper responseWrapper = new ResponseWrapper<>();
LostRidExtnDto lostRidExtnDto = new LostRidExtnDto();
diff --git a/admin/admin-service/src/main/java/io/mosip/admin/controller/ApplicantDetailsController.java b/admin/admin-service/src/main/java/io/mosip/admin/controller/ApplicantDetailsController.java
new file mode 100644
index 00000000000..ec9c15f96ab
--- /dev/null
+++ b/admin/admin-service/src/main/java/io/mosip/admin/controller/ApplicantDetailsController.java
@@ -0,0 +1,67 @@
+package io.mosip.admin.controller;
+
+import io.mosip.admin.dto.ApplicantDetailsDto;
+import io.mosip.admin.dto.ApplicantUserDetailsDto;
+import io.mosip.admin.packetstatusupdater.util.AuditUtil;
+import io.mosip.admin.packetstatusupdater.util.EventEnum;
+import io.mosip.admin.service.ApplicantDetailService;
+import io.mosip.kernel.core.http.ResponseWrapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.io.InputStreamResource;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.io.ByteArrayInputStream;
+
+@RestController
+public class ApplicantDetailsController {
+
+ @Autowired
+ AuditUtil auditUtil;
+
+ @Autowired
+ ApplicantDetailService applicantDetailService;
+
+ //@PreAuthorize("hasRole('DIGITALCARD_ADMIN')")
+ @PreAuthorize("hasAnyRole(@authorizedRoles.getGetapplicantDetailsrid())")
+ @GetMapping("/applicantDetails/{rid}")
+ public ResponseWrapper getApplicantDetails(@PathVariable("rid") String rid) throws Exception {
+ auditUtil.setAuditRequestDto(EventEnum.APPLICANT_VERIFICATION_API_CALLED,null);
+ ResponseWrapper responseWrapper = new ResponseWrapper<>();
+ responseWrapper.setResponse(applicantDetailService.getApplicantDetails(rid));
+ auditUtil.setAuditRequestDto(EventEnum.APPLICANT_VERIFICATION_SUCCESS,null);
+ return responseWrapper;
+ }
+
+ // @PreAuthorize("hasRole('DIGITALCARD_ADMIN')")
+ @PreAuthorize("hasAnyRole(@authorizedRoles.getGetapplicantDetailsgetLoginDetails())")
+ @GetMapping("/applicantDetails/getLoginDetails")
+ public ResponseWrapper getApplicantUserDetails() throws Exception {
+ auditUtil.setAuditRequestDto(EventEnum.APPLICANT_LOGIN_DETAILS_API_CALLED,null);
+ ResponseWrapper responseWrapper = new ResponseWrapper<>();
+ responseWrapper.setResponse(applicantDetailService.getApplicantUserDetails());
+ auditUtil.setAuditRequestDto(EventEnum.APPLICANT_LOGIN_DETAILS_SUCCESS,null);
+ return responseWrapper;
+ }
+
+ // @PreAuthorize("hasRole('DIGITALCARD_ADMIN')")
+ @PreAuthorize("hasAnyRole(@authorizedRoles.getGetriddigitalcardrid())")
+ @GetMapping("/rid-digital-card/{rid}")
+ public ResponseEntity