use of com.fanap.podchat.chat.user.profile.ChatProfileVO in project pod-chat-android-sdk by FanapSoft.
the class MessageDatabaseHelper method getCallHistory.
public void getCallHistory(GetCallHistoryRequest request, FunctionalListener callback) throws RoomIntegrityException {
if (!canUseDatabase())
throw new RoomIntegrityException();
worker(() -> {
request.setCount(request.getCount() > 0 ? request.getCount() : 50);
List<CacheCall> cacheCalls = new ArrayList<>();
long contentCount = 0;
if (request.getCreatorCoreUserId() > 0) {
cacheCalls = messageDao.getCachedCallByUserId(request.getCount(), request.getOffset(), request.getCreatorCoreUserId(), request.getType());
contentCount = messageDao.getCountOfCachedCallByUserId(request.getCreatorCoreUserId(), request.getType());
} else if (!Util.isNullOrEmpty(request.getCallIds())) {
if (request.getCallIds().size() > 1) {
String ids = "";
for (Long callId : request.getCallIds()) {
ids = ids.concat("" + callId + ", ");
}
ids = ids.substring(0, ids.lastIndexOf(","));
cacheCalls = messageDao.getCachedCallByIds(request.getCount(), request.getOffset(), ids);
contentCount = messageDao.getCountOfCachedCallByIds(ids);
} else {
CacheCall cacheCall = messageDao.getCachedCallById(request.getCallIds().get(0));
contentCount = 1;
cacheCalls.add(cacheCall);
}
} else if (request.getThreadId() != null && request.getThreadId() > 0) {
cacheCalls = messageDao.getCachedCallByTypeAndThreadId(request.getCount(), request.getOffset(), request.getType(), request.getThreadId());
contentCount = messageDao.getCountOfCachedCallByTypeAndThreadId(request.getType(), request.getThreadId());
} else {
cacheCalls = messageDao.getCachedCallByType(request.getCount(), request.getOffset(), request.getType());
contentCount = messageDao.getCountOfCachedCallByType(request.getType());
}
ArrayList<CallVO> callVOList = new ArrayList<>();
for (CacheCall cacheCall : cacheCalls) {
@Nullable CacheCallParticipant callPartnerParticipant = messageDao.getCachedCallParticipant(cacheCall.getPartnerParticipantId());
if (callPartnerParticipant != null) {
Participant partnerParticipant = callPartnerParticipant.toParticipant();
ChatProfileVO chatProfileVO = messageDao.getChatProfileVOById(partnerParticipant.getId());
partnerParticipant.setChatProfileVO(chatProfileVO);
cacheCall.setPartnerParticipantVO(partnerParticipant);
}
if (cacheCall.isGroup()) {
List<CacheCallParticipant> cacheCallParticipants = messageDao.getCachedCallParticipants(cacheCall.getId());
if (!Util.isNullOrEmpty(cacheCallParticipants)) {
List<Participant> callParticipantsList = new ArrayList<>();
for (CacheCallParticipant cacheCll : cacheCallParticipants) {
Participant callParticipant = cacheCll.toParticipant();
ChatProfileVO profileVO = messageDao.getChatProfileVOById(callParticipant.getId());
callParticipant.setChatProfileVO(profileVO);
callParticipantsList.add(callParticipant);
}
cacheCall.setCallParticipants(callParticipantsList);
}
}
CallVO call = cacheCall.toCallVo();
if (cacheCall.getThreadId() > 0) {
ThreadVo threadVo = messageDao.getThreadById(cacheCall.getThreadId());
Thread thread;
if (threadVo != null) {
thread = threadVoToThreadMapper(threadVo, null);
} else {
thread = new Thread();
thread.setId(cacheCall.getThreadId());
}
call.setConversationVO(thread);
}
callVOList.add(call);
}
callback.onWorkDone(contentCount, callVOList);
});
}
use of com.fanap.podchat.chat.user.profile.ChatProfileVO in project pod-chat-android-sdk by FanapSoft.
the class MessageDatabaseHelper method getThreadAdmins.
public void getThreadAdmins(long offset, long count, long threadId, FunctionalListener listener) throws RoomIntegrityException {
if (!canUseDatabase())
throw new RoomIntegrityException();
worker(() -> {
List<Participant> participants = new ArrayList<>();
List<CacheThreadParticipant> listCtp = messageDao.getAllThreadParticipants(offset, count, threadId);
long participantCount = messageDao.getParticipantCount(threadId);
if (listCtp == null) {
listener.onWorkDone(participantCount, participants);
} else {
SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss", Locale.getDefault());
Calendar c = Calendar.getInstance();
c.setTime(new Date());
Date nowDate = c.getTime();
for (CacheThreadParticipant threadParticipant : listCtp) {
try {
Date expireDate = format.parse(threadParticipant.getExpireDate());
long participantId = threadParticipant.getParticipantId();
if (expireDate != null) {
if (expireDate.compareTo(nowDate) < 0) {
messageDao.deleteCacheThreadParticipant(participantId);
} else {
CacheParticipant cParticipant = messageDao.getParticipant(participantId);
ChatProfileVO chatProfileVO = messageDao.getChatProfileVOById(cParticipant.getId());
if (chatProfileVO != null) {
cParticipant.setChatProfileVO(chatProfileVO);
}
List<String> roles = new ArrayList<>();
CacheParticipantRoles cachedRoles = messageDao.getParticipantRoles(participantId, threadId);
if (cachedRoles != null) {
if (cachedRoles.getRoles().size() > 0)
roles = cachedRoles.getRoles();
}
if (roles.size() > 0) {
Participant participant = cacheToParticipantMapper(cParticipant, true, roles);
participants.add(participant);
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
listener.onWorkDone(participantCount, participants);
});
}
use of com.fanap.podchat.chat.user.profile.ChatProfileVO in project pod-chat-android-sdk by FanapSoft.
the class MessageDatabaseHelper method getCacheAssistantVos.
public void getCacheAssistantVos(GetAssistantRequest request, FunctionalListener callback) throws RoomIntegrityException {
if (!canUseDatabase())
throw new RoomIntegrityException();
worker(() -> {
List<CacheAssistantVo> list = messageDao.getCacheAssistantVos(request.getCount() > 0 ? request.getCount() : 25, request.getOffset());
List<AssistantVo> cachResponseList = new ArrayList<>();
for (CacheAssistantVo item : list) {
AssistantVo assistantVo = new AssistantVo();
assistantVo.setRoles((ArrayList<String>) item.getRoles());
assistantVo.setBlock(item.isBlock());
assistantVo.setContactType(item.getContactType());
Participant participant = cacheToParticipantMapper(messageDao.getParticipant(item.getParticipantVOId()), false, null);
ChatProfileVO profileVO = messageDao.getChatProfileVOById(participant.getId());
participant.setChatProfileVO(profileVO);
assistantVo.setParticipantVO(participant);
cachResponseList.add(assistantVo);
}
callback.onWorkDone(list.size(), cachResponseList);
});
}
use of com.fanap.podchat.chat.user.profile.ChatProfileVO in project pod-chat-android-sdk by FanapSoft.
the class MessageDatabaseHelper method getCacheBlockedAssistantVos.
public void getCacheBlockedAssistantVos(GetBlockedAssistantsRequest request, FunctionalListener callback) throws RoomIntegrityException {
if (!canUseDatabase())
throw new RoomIntegrityException();
worker(() -> {
List<CacheAssistantVo> list = messageDao.getCacheBlockedAssistantVos(request.getCount() > 0 ? request.getCount() : 25, request.getOffset());
List<AssistantVo> cacheResponseList = new ArrayList<>();
for (CacheAssistantVo item : list) {
AssistantVo assistantVo = new AssistantVo();
assistantVo.setRoles((ArrayList<String>) item.getRoles());
assistantVo.setBlock(item.isBlock());
assistantVo.setContactType(item.getContactType());
Participant participant = cacheToParticipantMapper(messageDao.getParticipant(item.getParticipantVOId()), false, null);
ChatProfileVO profileVO = messageDao.getChatProfileVOById(participant.getId());
participant.setChatProfileVO(profileVO);
assistantVo.setParticipantVO(participant);
cacheResponseList.add(assistantVo);
}
callback.onWorkDone(list.size(), cacheResponseList);
});
}
use of com.fanap.podchat.chat.user.profile.ChatProfileVO in project pod-chat-android-sdk by FanapSoft.
the class MessageDatabaseHelper method getThreadParticipant.
public void getThreadParticipant(long offset, long count, long threadId, FunctionalListener listener) throws RoomIntegrityException {
if (!canUseDatabase())
throw new RoomIntegrityException();
worker(() -> {
List<Participant> participants = new ArrayList<>();
List<CacheThreadParticipant> listCtp = messageDao.getAllThreadParticipants(offset, count, threadId);
long participantCount = messageDao.getParticipantCount(threadId);
if (listCtp == null) {
listener.onWorkDone(participantCount, participants);
} else {
SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss", Locale.getDefault());
Calendar c = Calendar.getInstance();
c.setTime(new Date());
Date nowDate = c.getTime();
for (CacheThreadParticipant threadParticipant : listCtp) {
try {
Date expireDate = format.parse(threadParticipant.getExpireDate());
long participantId = threadParticipant.getParticipantId();
if (expireDate != null) {
if (expireDate.compareTo(nowDate) < 0) {
messageDao.deleteCacheThreadParticipant(participantId);
} else {
CacheParticipant cParticipant = messageDao.getParticipant(participantId);
ChatProfileVO chatProfileVO = messageDao.getChatProfileVOById(cParticipant.getId());
if (chatProfileVO != null) {
cParticipant.setChatProfileVO(chatProfileVO);
}
List<String> roles = new ArrayList<>();
Participant participant = cacheToParticipantMapper(cParticipant, false, roles);
participants.add(participant);
}
}
} catch (ParseException e) {
e.printStackTrace();
}
}
}
listener.onWorkDone(participantCount, participants);
});
}
Aggregations