Загрузка данных
public abstract class ListViewProfileEntityMapper {
protected void mapApproveStatus(ListViewProfileEntity source, @MappingTarget ListViewProfile target) {
switch (source.getProfileType()) {
case SMS:
target.setApproveStatus(mapSmsProfileStatus(source.getApproveStatus()));
break;
case VIBER:
target.setApproveStatus(mapViberProfileStatus(source.getApproveStatus()));
break;
case WHATSAPP:
if (StringUtils.hasLength(source.getCode())) {
target.setApproveStatus(mapWhatsAppClientProfileStatus(source.getApproveStatus()));
} else if (source.getSubjectId() == null &&
DRAFT != WhatsAppESProfileStatus.valueOf(source.getApproveStatus())) {
// for partners when subject is missing - they need to finish registration
target.setApproveStatus(NEEDS_ATTENTION);
} else {
target.setApproveStatus(mapEmbeddedSignupWaStatus(source.getApproveStatus()));
}
break;
case PUSH:
target.setApproveStatus(mapPushStatus(source.getApproveStatus()));
break;
case VK_NOTIFY:
target.setApproveStatus(mapVkNotifyProfileStatus(source.getApproveStatus()));
break;
case OK_NOTIFY:
target.setApproveStatus(mapOkNotifyProfileStatus(source.getApproveStatus()));
break;
case MAX_BOT:
target.setApproveStatus(mapMaxBotProfileStatus(source.getApproveStatus()));
break;
case MAX:
target.setApproveStatus(mapMaxProfileStatus(source));
break;
default:
throw new IllegalStateException("Unmapped profile type: " + source.getProfileType());
}
}
protected ListViewProfileStatus mapWhatsAppClientProfileStatus(String approveStatus) {
WhatsAppESClientProfileStatus status = WhatsAppESClientProfileStatus.valueOf(approveStatus);
return switch (status) {
case NEW -> ListViewProfileStatus.DRAFT;
case ACCEPTED -> ListViewProfileStatus.REGISTRATION;
case DELETED -> ListViewProfileStatus.DISABLED;
};
}
protected ListViewProfileStatus mapSmsProfileStatus(String statusName) {
SmsProfileStatus status = SmsProfileStatus.valueOf(statusName);
return switch (status) {
case DRAFT -> ListViewProfileStatus.DRAFT;
case IN_PROGRESS, CREATE_SUBJECT -> ListViewProfileStatus.REGISTRATION;
case REJECTED -> ListViewProfileStatus.DISABLED;
case CREATE_SUBJECT_ERROR -> ListViewProfileStatus.PROBLEM;
case DONE -> ListViewProfileStatus.ACTIVE;
default -> throw new IllegalStateException("Unmapped SMS profile status: " + status);
};
}
protected ListViewProfileStatus mapViberProfileStatus(String statusName) {
ViberProfileStatus status = ViberProfileStatus.valueOf(statusName);
return switch (status) {
case DRAFT -> ListViewProfileStatus.DRAFT;
case NOT_INITIALIZED, IN_PROGRESS, CREATE_SUBJECT -> ListViewProfileStatus.REGISTRATION;
case REJECTED -> ListViewProfileStatus.DISABLED;
case CREATE_SUBJECT_ERROR -> ListViewProfileStatus.PROBLEM;
case DONE -> ListViewProfileStatus.ACTIVE;
default -> throw new IllegalStateException("Unmapped Viber profile status: " + status);
};
}
protected ListViewProfileStatus mapEmbeddedSignupWaStatus(String statusName) {
var status = WhatsAppESProfileStatus.valueOf(statusName);
return switch (status) {
case DONE_BUSINESS_VERIFICATION, BUSINESS_VERIFICATION_EXPIRED, DONE_FINISH_REGISTER ->
ListViewProfileStatus.ACTIVE;
case DRAFT -> ListViewProfileStatus.DRAFT;
case SENT_TO_PLATFORM -> ListViewProfileStatus.REGISTRATION;
case CANCELLED, DISABLED -> ListViewProfileStatus.DISABLED;
default -> throw new IllegalStateException("Unmapped EmbeddedSignupWa profile status: " + status);
};
}
protected ListViewProfileStatus mapPushStatus(String statusName) {
PushProfileStatus status = PushProfileStatus.valueOf(statusName);
return switch (status) {
case NO_CONNECTED_APPS -> ListViewProfileStatus.REGISTRATION;
case ACTIVE -> ListViewProfileStatus.ACTIVE;
case NEED_ATTENTION -> NEEDS_ATTENTION;
case DISABLED -> ListViewProfileStatus.DISABLED;
default -> throw new IllegalStateException("Unmapped Push profile status: " + status);
};
}
protected ListViewProfileStatus mapVkNotifyProfileStatus(String statusName) {
var status = VkNotifyProfileStatus.valueOf(statusName);
return switch (status) {
case DRAFT -> ListViewProfileStatus.DRAFT;
case IN_PROGRESS, CREATE_SUBJECT -> ListViewProfileStatus.REGISTRATION;
case CREATE_SUBJECT_ERROR -> ListViewProfileStatus.PROBLEM;
case REJECTED, CANCELLED -> ListViewProfileStatus.DISABLED;
case DONE -> ListViewProfileStatus.ACTIVE;
default -> throw new IllegalStateException("Unmapped Vk Notify profile status: " + status);
};
}
protected ListViewProfileStatus mapMaxBotProfileStatus(String statusName) {
var status = MaxBotProfileStatus.valueOf(statusName);
return switch (status) {
case DRAFT -> ListViewProfileStatus.DRAFT;
case IN_PROGRESS, CREATE_SUBJECT -> ListViewProfileStatus.REGISTRATION;
case CREATE_SUBJECT_ERROR -> ListViewProfileStatus.PROBLEM;
case CANCELLED -> ListViewProfileStatus.DISABLED;
case DONE -> ListViewProfileStatus.ACTIVE;
default -> throw new IllegalStateException("Unmapped Max Bot profile status: " + status);
};
}
protected ListViewProfileStatus mapMaxProfileStatus(ListViewProfileEntity source) {
var statusName = source.getApproveStatus();
if (source.getCode() != null && source.getClientProfileId() == null) {
var status = MaxClientProfileStatus.valueOf(statusName);
return switch (status) {
case NEW -> ListViewProfileStatus.DRAFT;
case ACCEPTED -> ListViewProfileStatus.REGISTRATION;
case DELETED -> ListViewProfileStatus.DISABLED;
};
} else {
var status = MaxProfileStatus.valueOf(statusName);
return switch (status) {
case DRAFT -> ListViewProfileStatus.DRAFT;
case LOGIN_REQUIRED, TOKEN_EXPIRED -> NEEDS_ATTENTION;
case CREATE_SUBJECT -> ListViewProfileStatus.REGISTRATION;
case CREATE_SUBJECT_ERROR -> ListViewProfileStatus.PROBLEM;
case CANCELLED -> ListViewProfileStatus.DISABLED;
case DONE -> ListViewProfileStatus.ACTIVE;
};
}
}
protected ListViewProfileStatus mapOkNotifyProfileStatus(String statusName) {
var status = OkNotifyProfileStatus.valueOf(statusName);
return switch (status) {
case DRAFT -> ListViewProfileStatus.DRAFT;
case IN_PROGRESS, CREATE_SUBJECT -> ListViewProfileStatus.REGISTRATION;
case CREATE_SUBJECT_ERROR -> ListViewProfileStatus.PROBLEM;
case REJECTED, CANCELLED -> ListViewProfileStatus.DISABLED;
case DONE -> ListViewProfileStatus.ACTIVE;
default -> throw new IllegalStateException("Unmapped OK Notify profile status: " + status);
};
}
}