import mysql.connector
import os

###CE FICHIER SERT POUR LES EXPERIEMNTATIONS!!!!!!!!!!!!!!!! NE PAS L'UTILISER
###CE FICHIER SERT POUR LES EXPERIEMNTATIONS!!!!!!!!!!!!!!!! NE PAS L'UTILISER
###CE FICHIER SERT POUR LES EXPERIEMNTATIONS!!!!!!!!!!!!!!!! NE PAS L'UTILISER
###CE FICHIER SERT POUR LES EXPERIEMNTATIONS!!!!!!!!!!!!!!!! NE PAS L'UTILISER
###CE FICHIER SERT POUR LES EXPERIEMNTATIONS!!!!!!!!!!!!!!!! NE PAS L'UTILISER
###CE FICHIER SERT POUR LES EXPERIEMNTATIONS!!!!!!!!!!!!!!!! NE PAS L'UTILISER
###CE FICHIER SERT POUR LES EXPERIEMNTATIONS!!!!!!!!!!!!!!!! NE PAS L'UTILISER
###CE FICHIER SERT POUR LES EXPERIEMNTATIONS!!!!!!!!!!!!!!!! NE PAS L'UTILISER
###CE FICHIER SERT POUR LES EXPERIEMNTATIONS!!!!!!!!!!!!!!!! NE PAS L'UTILISER
###CE FICHIER SERT POUR LES EXPERIEMNTATIONS!!!!!!!!!!!!!!!! NE PAS L'UTILISER
###CE FICHIER SERT POUR LES EXPERIEMNTATIONS!!!!!!!!!!!!!!!! NE PAS L'UTILISER
###CE FICHIER SERT POUR LES EXPERIEMNTATIONS!!!!!!!!!!!!!!!! NE PAS L'UTILISER
###CE FICHIER SERT POUR LES EXPERIEMNTATIONS!!!!!!!!!!!!!!!! NE PAS L'UTILISER
###CE FICHIER SERT POUR LES EXPERIEMNTATIONS!!!!!!!!!!!!!!!! NE PAS L'UTILISER
###CE FICHIER SERT POUR LES EXPERIEMNTATIONS!!!!!!!!!!!!!!!! NE PAS L'UTILISER
#fonction pour des-serializer les listes
from autopdf_helper import *

#connection
mydb = mysql.connector.connect(
    host="10.40.155.30",
    user="atima_xplorer",
    password = "9G9rRf23MeuA8t",
    database="atima_xplorer"
)
#créer le curseur pour obtenir les valeurs
mycursor = mydb.cursor()
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Traiter les DICOMS normales ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#executer la requete
mycursor.execute("select * from fichier where autopdf=true")

#obtenir tout
listeRadiosSQL = mycursor.fetchall()

for radio in listeRadiosSQL:
    #recuperer les infos
    idRadio = radio[0]
    idClinique = radio[1]
    dateRadio = radio[2]
    heureRadio = radio[3]
    nomPacient = radio[4]
    modalite = radio[5]
    formatR = radio[6]
    listeFichiers = des_seliarizer(radio[7])#des-serializer la liste
    autopdf = radio[8]
    
    #DEBUG

    #Definir le nom de la radio
    
    nomFichierPDF = str(idRadio) + "_" + nomPacient.replace("/","_").replace(" ","-") + "_" + dateRadio.strftime("%d-%m-%Y") + "_" + heureRadio + ".pdf"
    cheminImages = "public/upload/"+str(idClinique)+"/"
    pathFichierPDF = "public/upload/"+str(idClinique)+"/"+nomFichierPDF
    #verifier le format
    
    #si le/les fichier/s est/sont dicom
    #print("Entrain de generer un pdf pour la radio : "+str(idRadio)+" - "+nomPacient)
    if formatR == "DICOM":
        try:
            if modalite == "SR":
                print(idRadio," :  Ceci est un SR - ne pas traiter tout de suite")
            else:
                #creer un nom base pour les images temporaires
                baseFileNameImages = str(idRadio) + "_" + nomPacient.replace("/","_").replace(" ","-")# + "_" + dateRadio.strftime("%d-%m-%Y") + "_" + heureRadio
                #creer une liste vide pour les images
                imagesConverties=[]
                #obtenir les fichiers dicoms et ajouter le path
                listeFichiers = ajouterCheminListe(listeFichiers,cheminImages)
                
                #parcourir chaque element de la liste
                #creer index
                indexDCMTOJPEG = 0
                #parcourir la liste 
                for fichier in listeFichiers:
                    #convertir et add dans une nouvelle liste
                    imagesConverties = imagesConverties + dcmToJpeg(fichier, cheminImages+"converted/", str(indexDCMTOJPEG)+"_"+baseFileNameImages)
                    #augmenter index de 1
                    indexDCMTOJPEG=indexDCMTOJPEG+1
                #créer le pdf
                fichierPDFConverti = creerPDF(modalite,imagesConverties,pathFichierPDF)
                #verifier si le fichier existe
                if os.path.exists(pathFichierPDF):#si oui
                    #creer une requete
                    mycursor.execute("UPDATE fichier SET autopdf = %s WHERE id = %s",(0,idRadio))
                    mycursor.execute("UPDATE fichier SET chemin_pdf = %s WHERE id = %s",(pathFichierPDF,idRadio))
                    #ligne pas utilisé pour l instant sur symfony, va remplacer chemin_pdf bientot
                    mycursor.execute("UPDATE fichier SET nom_pdf = %s WHERE id = %s",(nomFichierPDF,idRadio))
                    #suprimmer les fichiers - parcourir chaque fichier
                    for image in imagesConverties:
                        #suprimmer l'image
                        #os.remove(image)
                        #print(os.path.exists(image))
                        try:
                            os.remove(image)
                        except PermissionError:
                            pass 
                            #print(f"Erro de permissão ao tentar remover a imagem: {image}")
                        except FileNotFoundError:
                            pass 
                            #print(f"Arquivo não encontrado ao tentar remover a imagem: {image}")
                        except Exception as e:
                            pass 
                            #print(f"Outro erro ao tentar remover a imagem {image}: {e}")
                    print("ID : ",idRadio," - converti")
        except:
            print("ID : ",idRadio," - Erreur dans la conversion ou dans le pdf, continuer")

    
    #si le image est PNG ou JPG ou JPEG
    elif formatR == "JPG" or formatR == "JPEG" or formatR == "PNG":
        listeFichiers = ajouterCheminListe(listeFichiers,cheminImages)
        fichierPDFConverti = creerPDF(modalite,listeFichiers,pathFichierPDF)
        
        #verifier si le fichier existe
        if os.path.exists(pathFichierPDF):#si oui
            #creer une requete
            mycursor.execute("UPDATE fichier SET autopdf = %s WHERE id = %s",(0,idRadio))
            mycursor.execute("UPDATE fichier SET chemin_pdf = %s WHERE id = %s",(pathFichierPDF,idRadio))
            #ligne pas utilisé pour l instant sur symfony, va remplacer chemin_pdf bientot
            mycursor.execute("UPDATE fichier SET nom_pdf = %s WHERE id = %s",(nomFichierPDF,idRadio))
    #autres fichiers
    else:
        pass

mydb.commit()
mydb.close()


