Beispiel #1
0
    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
Beispiel #2
0
 def fromJson(self, dictObj: dict):
     super().fromJson(dictObj)
     self.lstMessages = Models.LstMessages().fromJson(
         dictObj['lstMessages'])
     return self
Beispiel #3
0
 def __init__(self, lstMessages: Models.LstMessages = Models.LstMessages()):
     super().__init__()
     self.lstMessages = lstMessages