
one.credify.sdk.model.UserOidcInfo Maven / Gradle / Ivy
package one.credify.sdk.model;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.*;
import lombok.experimental.FieldDefaults;
import one.credify.sdk.dto.UserInfoRes;
import one.credify.sdk.dto.VerifiedClaimsDto;
import one.credify.sdk.enumeration.ContentType;
import one.credify.sdk.enumeration.EkycDocumentType;
import org.apache.commons.lang3.StringUtils;
import java.util.Map;
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Getter
@Setter
@FieldDefaults(level = AccessLevel.PRIVATE)
public class UserOidcInfo {
private static final String EKYC_IMAGE_FACE_KEY = "img_face";
private static final String EKYC_IMAGE_BACK_KEY = "img_back";
private static final String EKYC_IMAGE_FRONT_KEY = "img_front";
String credifyId;
Openid openid;
Profile profile;
Phone phone;
Email email;
Address address;
// non basic standard claims
Address permanentAddress;
Employment employment;
BankAccount bankAccount;
ReferencePerson primaryReferencePerson;
ReferencePerson secondaryReferencePerson;
Spouse spouse;
Income income;
AdvanceProfile advanceProfile;
Ekyc ekyc;
Ekyc idcard;
Ekyc drivingPermit;
String idcardOldNumber;
Commitment commitment;
Map customClaims;
@NoArgsConstructor
@AllArgsConstructor
@Getter
@Setter
@FieldDefaults(level = AccessLevel.PRIVATE)
public static class Openid {
Ext ext;
String transactionId;
String signingPublicKey;
String txn;
}
@NoArgsConstructor
@AllArgsConstructor
@Getter
@Setter
@FieldDefaults(level = AccessLevel.PRIVATE)
public static class Ext {
Integer offerRank;
Map claimTokens;
}
@NoArgsConstructor
@AllArgsConstructor
@Getter
@Setter
@FieldDefaults(level = AccessLevel.PRIVATE)
public static class Profile {
String birthdate;
String familyName;
String gender;
String givenName;
String middleName;
String name;
}
@NoArgsConstructor
@AllArgsConstructor
@Getter
@Setter
@FieldDefaults(level = AccessLevel.PRIVATE)
public static class AdvanceProfile {
String currentHousingType;
String educationLevel;
String maritalStatus;
int numberOfDependents;
String currentHousingTypeOther;
String advancedProfileCommitment;
}
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Getter
@Setter
@FieldDefaults(level = AccessLevel.PRIVATE)
public static class Email {
String email;
boolean emailVerified;
}
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Getter
@Setter
@FieldDefaults(level = AccessLevel.PRIVATE)
public static class Phone {
String phoneNumber;
boolean phoneNumberVerified;
String phoneCommitment;
}
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Getter
@Setter
@FieldDefaults(level = AccessLevel.PRIVATE)
public static class Income {
String mainIncomeType;
String payrollDate;
String receivingSalaryMethod;
String otherIncomes;
Long monthlyFamilyIncome;
Long monthlyExpenses;
Long monthlyWageIncome;
}
@NoArgsConstructor
@AllArgsConstructor
@Getter
@Setter
@FieldDefaults(level = AccessLevel.PRIVATE)
public static class Address {
String country;
String locality;
String region;
String streetAddress;
String postalCode;
String formatted;
String streetNumber;
String street;
String sublocalityLevel3;
String sublocalityLevel2;
String sublocality;
String countryCode;
}
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Getter
@Setter
@FieldDefaults(level = AccessLevel.PRIVATE)
public static class Employment {
String occupation;
String otherOccupation;
String laborContractType;
String department;
Integer workingTime;
String position;
String companyName;
String companyPhoneNumber;
String companyTaxNumber;
String companyRegistrationType;
String companyIndustry;
String companyIndustryOther;
String companyRegistrationTypeOther;
Address workAddress;
Address companyAddress;
}
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Getter
@Setter
@FieldDefaults(level = AccessLevel.PRIVATE)
public static class BankAccount {
String accountOwner;
String accountNumber;
String bank;
String branch;
}
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Getter
@Setter
@FieldDefaults(level = AccessLevel.PRIVATE)
public static class ReferencePerson {
String name;
String phoneNumber;
String relationship;
}
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Getter
@Setter
@FieldDefaults(level = AccessLevel.PRIVATE)
@JsonIgnoreProperties(ignoreUnknown = true)
public static class Spouse {
String name;
String phoneNumber;
String idCardNumber;
}
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Getter
@Setter
@FieldDefaults(level = AccessLevel.PRIVATE)
public static class Commitment {
String phoneCommitment;
String emailCommitment;
String profileCommitment;
String addressCommitment;
String permanentAddressCommitment;
String advancedProfileCommitment;
String employmentCommitment;
String incomeCommitment;
String bankAccountCommitment;
String primaryReferencePersonCommitment;
String secondaryReferencePersonCommitment;
String spouseCommitment;
String ekycCommitment;
String idcardCommitment;
String drivingPermitCommitment;
Map customClaimCommitments;
}
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Getter
@Setter
@FieldDefaults(level = AccessLevel.PRIVATE)
public static class Ekyc {
String dateOfExpiry;
String dateOfIssuance;
String documentNumber;
String issuer;
String formatted;
String locality;
String region;
String birthdate;
String name;
String nationality;
EkycDocumentType type;
EkycAttachment imageFace;
EkycAttachment imageBack;
EkycAttachment imageFront;
public void updateEkycInfo(UserInfoRes.EkycInterface ekycDto) throws Exception {
VerifiedClaimsDto.Evidence evidence = ekycDto.getEvidence();
VerifiedClaimsDto.Claims ekycClaims = ekycDto.getClaims();
if (evidence != null) {
if (evidence.getAttachments() != null) {
evidence.getAttachments().forEach(attachment -> {
switch (attachment.getDesc()) {
case EKYC_IMAGE_FACE_KEY:
this.setImageFace(UserOidcInfo.EkycAttachment.builder()
.type(ContentType.getType(attachment.getContentType()))
.content(attachment.getContent())
.build());
break;
case EKYC_IMAGE_BACK_KEY:
this.setImageBack(UserOidcInfo.EkycAttachment.builder()
.type(ContentType.getType(attachment.getContentType()))
.content(attachment.getContent())
.build());
break;
case EKYC_IMAGE_FRONT_KEY:
this.setImageFront(UserOidcInfo.EkycAttachment.builder()
.type(ContentType.getType(attachment.getContentType()))
.content(attachment.getContent())
.build());
break;
}
});
VerifiedClaimsDto.DocumentDetail documentDetail = evidence.getDocumentDetails();
if (documentDetail != null) {
this.setType(EkycDocumentType.getType(documentDetail.getType()));
if (StringUtils.isEmpty(this.getDateOfExpiry())) {
this.setDateOfExpiry(documentDetail.getDateOfExpiry());
}
if (StringUtils.isEmpty(this.getDocumentNumber())) {
this.setDocumentNumber(documentDetail.getDocumentNumber());
}
if (StringUtils.isEmpty(this.getDateOfIssuance())) {
this.setDateOfIssuance(documentDetail.getDateOfIssuance());
}
if (StringUtils.isEmpty(this.getIssuer()) && documentDetail.getIssuer() != null) {
this.setIssuer(documentDetail.getIssuer().getName());
}
}
}
}
if (ekycClaims != null) {
this.setName(ekycClaims.getName());
this.setBirthdate(ekycClaims.getBirthdate());
if (ekycClaims.getAddress() != null) {
this.setFormatted(ekycClaims.getAddress().getFormatted());
this.setLocality(ekycClaims.getAddress().getLocality());
this.setRegion(ekycClaims.getAddress().getRegion());
}
if (ekycClaims.getNationalities() != null && ekycClaims.getNationalities().size() > 0) {
this.setNationality(ekycClaims.getNationalities().get(0));
}
}
}
}
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Getter
@Setter
@FieldDefaults(level = AccessLevel.PRIVATE)
public static class EkycAttachment {
String content;
ContentType type;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy