def retrieveChat(self, friendship: Models.Friendship): # PRIMEIRO É VERIFICADO SE O PEDIDO DE AMIZADE FOI ACEITO tableFriends = 'friends_' + str(friendship.senderUser.idd) sql = 'SELECT confirmation FROM ' + tableFriends + ' WHERE id_friend = ' + str( friendship.recipUser.idd) + ';' confirmation = self.__select_fetchone__(sql) if int(confirmation[0]) == 1: userId = friendship.senderUser.idd friendId = friendship.recipUser.idd # Método que busca a conversa de dois usuários dados # Como a tabela foi criada pelo método newChat(), o nome dela respeita a lógica seguinte: if int(userId) > int(friendId): tableName = 'chat_' + str(userId) + '_' + str(friendId) elif int(friendId) > int(userId): tableName = 'chat_' + str(friendId) + '_' + str(userId) user = UserMapper().retrieveUser(userId) friend = UserMapper().retrieveUser(friendId) sql = 'SELECT data_hora, conteudo, id_dest, id_remete FROM ' + tableName + ' ORDER BY data_hora;' tupl_lst = self.__execute_fetchall__(sql) if isinstance(tupl_lst, Exception): return tupl_lst elif tupl_lst is None: return Exception('Chat not found') lstMessage = Models.LstMessages() # A ROTINA ABAIXO VERIFICA SE NA MENSAGEM EM QUESTÃO, O USUÁRIO REQUISITANTE DA LISTA DE MENSAGENS FOI O DESTINATÁRIO # OU REMETENTE, PARA PREENCHER O NOME(STRING) DE FORMA CORRETA, JÁ QUE A RECUPERAÇÃO DO MESMO VIA INNER JOIN É INVIÁVEL # POIS AMBOS RESIDEM NA MESMA TABELA for elem_tupl in tupl_lst: if userId == int(elem_tupl[3]): message = Models.Message() message.dateTime = elem_tupl[0] message.content = elem_tupl[1] message.recipUser = friend message.senderUser = user # USUÁRIO REQUISITANTE DO MÉTODO FOI O REMETENTE lstMessage.append(message) if userId == int(elem_tupl[2]): message = Models.Message() message.dateTime = elem_tupl[0] message.content = elem_tupl[1] message.recipUser = user # USUÁRIO REQUISITANTE DO MÉTODO FOI O DESTINATÁRIO message.senderUser = friend lstMessage.append(message) return lstMessage else: #CASO O PEDIDO DE AMIZADE AINDA NÃO TENHA SIDO ACEITO PELO DESTINATÁRIO: lstMessage = Models.LstMessages() #O MÉTODO RETORNA UMA LISTA VAZIA: return lstMessage
def fromJson(self, dictObj: dict): super().fromJson(dictObj) self.lstMessages = Models.LstMessages().fromJson( dictObj['lstMessages']) return self
def __init__(self, lstMessages: Models.LstMessages = Models.LstMessages()): super().__init__() self.lstMessages = lstMessages