import tkinter as tk
from tkinter import filedialog
import csv
import os
class cvsmergeclass:
    

    def fusionner_fichiers_csv(self):
        fichier1=self.choisir_fichier()
        if not fichier1:
            return  # L'utilisateur a annulé la sélection

        fichier2 = self.choisir_fichier()
        if not fichier2:
            return  # L'utilisateur a annulé la sélection

        fichier_sortie = filedialog.asksaveasfilename(defaultextension=".csv", filetypes=[("Fichiers CSV", "*.csv")])

        
        if not fichier_sortie:
            return  # L'utilisateur a annulé la sélection
        
        try:
            # Ouvrir le premier fichier  en mode lecture
            with open(fichier1, mode='r') as f1:
                lecteur_csv1 = csv.reader(f1)
                lignes_fichier1 = list(lecteur_csv1)
            # Ouvrir le deuxième fichier mode lecture
            with open(fichier2, mode='r') as f2:
                lecteur_csv2 = csv.reader(f2)
                lignes_fichier2 = list(lecteur_csv2)

        except Exception as e:
            return f"Erreur lors de la lecture des fichiers : {e}"


        # Vérifier que les deux fichiers ont au moins une colonne
        if not lignes_fichier1 or not lignes_fichier2:
            return "Erreur: Les fichiers ne contiennent pas de données."

        # Vérifier si la première colonne est identique et fusionner les fichiers en conséquence
        if lignes_fichier1[0][0] == lignes_fichier2[0][0]:
            lignes_combinees = [ligne1 + ligne2[1:] for ligne1, ligne2 in zip(lignes_fichier1, lignes_fichier2)]
        else:
            lignes_combinees = [ligne1 + ligne2 for ligne1, ligne2 in zip(lignes_fichier1, lignes_fichier2)]

        # Écrire les lignes combinées dans un nouveau fichier CSV
        try:
            with open(fichier_sortie, mode='w', newline='') as fichier_sortie_csv:
                ecrivain_csv = csv.writer(fichier_sortie_csv)
                ecrivain_csv.writerows(lignes_combinees)
            return f"Les fichiers {fichier1} et {fichier2} ont été combinés avec succès dans {fichier_sortie}."

        except PermissionError:
            return "Erreur de permission d'écriture."
        except Exception as e:
            return f"Erreur lors de l'écriture du fichier de sortie : {e}"


    def choisir_fichier(self):
        return filedialog.askopenfilename(title="Choisir un fichier CSV", filetypes=[("Fichiers CSV", "*.csv")])
