예제 #1
0
        public void DeleteMarque(Marques Marque)
        {
            Query = "DELETE FROM Marques WHERE Nom = '" + Marque.MarqueName + "' ; DELETE FROM Articles WHERE RefMarque = '" + Marque.RefMarque + "'";
            SQLiteCommand Command = new SQLiteCommand(Query, Connection);

            Command.ExecuteNonQuery();
        }
예제 #2
0
        public override string FindName <T>(ref T data)
        {
            if (data.GetType().Name == "Marques")
            {
                Marques marque = (Marques)Convert.ChangeType(data, typeof(Marques));
                string  nameFound;
                try
                {
                    string           sql              = "SELECT * FROM Marques WHERE nom = '" + marque.marqueName + "'";
                    SQLiteCommand    commande         = new SQLiteCommand(sql, database.connection);
                    SQLiteDataReader sQLiteDataReader = commande.ExecuteReader();

                    if (sQLiteDataReader.HasRows)
                    {
                        sQLiteDataReader.Read();
                        nameFound = sQLiteDataReader.GetString(0);
                        sQLiteDataReader.Close();
                        return(nameFound);
                    }
                }catch (SQLiteException e) {
                    MessageBox.Show("L'erreur suivante a été rencontrée :" + e.Message);
                    Console.WriteLine("L'erreur suivante a été rencontrée :" + e.Message);
                    return("");
                }
            }
            return("");
        }
예제 #3
0
        public void AddMarque(String MarqueName, AddMarque AddMarque)
        {
            if (FamillesDao.FindFamilleByFamilleName(MarqueName))
            {
                MessageBox.Show("This name has already been used by a Famille!", "ERROR");
                AddMarque.textBox_MarqueName.Text = "";
                return;
            }

            if (SousFamillesDao.FindSousFamilleBySousFamilleName(MarqueName))
            {
                MessageBox.Show("This name has already been used by a SousFamille!", "ERROR");
                AddMarque.textBox_MarqueName.Text = "";
                return;
            }

            if (MarquesDao.FindMarqueByMarqueName(MarqueName))
            {
                MessageBox.Show("Marque Already exsited!", "ERROR");
                AddMarque.textBox_MarqueName.Text = "";
                return;
            }
            else
            {
                Marques Marque = new Marques(MarqueName);
                Marque.RefMarque = MarquesDao.GetMaxRefMarque() + 1;
                MarquesDao.AddMarque(Marque);
                if (MarquesDao.FindMarqueByMarqueName(MarqueName))
                {
                    MessageBox.Show("Add Marque succeed!");
                    AddMarque.Close();
                }
            }
        }
예제 #4
0
 /// <summary>
 /// Sauvegarde la marque dans la base (si elle existe déjà, alors elle est mise à jour).
 /// </summary>
 /// <param name="Marques">La marque à sauvegarder.</param>
 public void Save(Marques Marques)
 {
     using (var Connection = new SQLiteConnection(CONNECTION_STRING))
     {
         Connection.Open();
         using (var Command = new SQLiteCommand(Connection))
         {
             if (Marques.Id == null)
             {
                 Command.CommandText = "INSERT INTO Marques(Nom) VALUES (@name)";
             }
             else
             {
                 Command.CommandText = @"UPDATE Marques SET Nom=@name WHERE RefMarque = @refMarque";
                 Command.Parameters.AddWithValue("@refMarque", Marques.Id);
             }
             Command.Parameters.AddWithValue("@name", Marques.Nom);
             Command.ExecuteNonQuery();
             if (Marques.Id == null)
             {
                 Marques.Id = (int)Connection.LastInsertRowId;
             }
         }
     }
 }
예제 #5
0
        /// <summary>
        /// DAO pour récupérer toutes les marques dans la base de donnees
        /// </summary>
        /// <returns> la liste de tous les noms </returns>
        public List <Marques> GetAllMarques()
        {
            List <Marques> AllMarques = new List <Marques>();

            SQLiteConnection M_dbConnection = new SQLiteConnection("Data Source=" + DatabasePath);

            M_dbConnection.Open();
            String Sql = "select RefMarque, Nom from Marques";

            using (SQLiteCommand Command = new SQLiteCommand(Sql, M_dbConnection))
            {
                using (SQLiteDataReader Reader = Command.ExecuteReader())
                {
                    while (Reader.Read())
                    {
                        Marques m = new Marques(Reader.GetInt32(0), Reader.GetString(1));
                        AllMarques.Add(m);
                    }
                }
            }

            M_dbConnection.Close();

            return(AllMarques);
        }
예제 #6
0
        public void ModifyMarque(Marques Marque)
        {
            Query = "UPDATE Marques SET Nom = '" + Marque.MarqueName + "' WHERE RefMarque = '" + Marque.RefMarque + "'";
            SQLiteCommand Command = new SQLiteCommand(Query, Connection);

            Command.ExecuteNonQuery();
        }
예제 #7
0
        public void AddMarque(Marques Marque)
        {
            Query = "INSERT INTO Marques (Nom) values('" + Marque.MarqueName + "')";
            SQLiteCommand Command = new SQLiteCommand(Query, Connection);

            Command.ExecuteNonQuery();
            Marque.RefMarque = GetRefMarque(Marque.MarqueName);
        }
예제 #8
0
 /// <summary>
 /// Crée un article avec les valeurs passées en paramètres.
 /// </summary>
 /// <param name="RefArticle">Une référence unique (entre 3 et 8 caractères).</param>
 /// <param name="Description">Une description de l'article (entre 1 et 150 caractères).</param>
 /// <param name="SubFamily">Une sous-famille.</param>
 /// <param name="Marque">La marque de l'article.</param>
 /// <param name="Price">Le prix de l'article (float >= 0).</param>
 /// <param name="Quantity">Le prix de l'article (float >= 0).</param>
 public Articles(string RefArticle, string Description, SubFamily SubFamily, Marques Marque, float Price,
                 int Quantity)
 {
     this.RefArticle  = RefArticle;
     this.Description = Description;
     this.SubFamily   = SubFamily;
     this.Marque      = Marque;
     this.Price       = Price;
     this.Quantity    = Quantity;
 }
 /// <summary>
 /// Verify if two marques are same.
 /// </summary>
 /// <param name="Marque"></param>
 /// <param name="NewMarque"></param>
 /// <returns>True if they are same. Flase if not.</returns>
 public Boolean CompareMarques(Marques Marque, Marques NewMarque)
 {
     if (Marque.MarqueName != NewMarque.MarqueName)
     {
         return(false);
     }
     else
     {
         return(true);
     }
 }
예제 #10
0
        /// <summary>
        /// Recupere tous les articles d'une marque et les affiche dans la ListView
        /// </summary>
        /// <param name="Marque"></param>
        public void LoadArticlesOfMarque(Marques Marque)
        {
            List.BeginUpdate();

            InitializeColumnArticle();

            ArticlesDAO     aDAO        = new ArticlesDAO(PathBdd);
            List <Articles> AllArticles = aDAO.GetArticlesOfMarque(Marque.GetRefMarque());

            FillListView(AllArticles);

            List.EndUpdate();
        }
예제 #11
0
        private void modificationMarque()
        {
            int i = listView.SelectedIndices[0];

            Console.WriteLine("Modification de la marque " + listView.Items[i].Text);
            Marques marque = new Marques();

            marque.RefMarque = Convert.ToInt32(listView.Items[i].Text);
            marque.loadFromDB();
            AddOrModifyMarque addMarque = new AddOrModifyMarque(marque);

            addMarque.ShowDialog();
        }
예제 #12
0
        /// <summary>
        /// Initialise les valeurs des champs de la fenêtre de modification.
        /// </summary>
        private void Initialize(string Title)
        {
            Text = Title;
            switch (Type)
            {
            case ActiveList.Brand:
            {
                // Si l'id a une valeur, on récupère la marque correspondante.
                if (Id.HasValue)
                {
                    Brand        = DaoRegistry.GetInstance.BrandDao.GetMarqueById(Id.Value);
                    NameBox.Text = Brand.Nom;
                }

                break;
            }

            case ActiveList.Family:
            {
                // Si l'id a une valeur, on récupère la famille correspondante.
                if (Id.HasValue)
                {
                    Family       = DaoRegistry.GetInstance.FamilyDao.GetFamilleById(Id.Value);
                    NameBox.Text = Family.Name;
                }

                break;
            }

            case ActiveList.Subfamily:
            {
                // On récupère toutes les familles pour les metttre dans la ComboBox des familles.
                foreach (var AFamily in DaoRegistry.GetInstance.FamilyDao.GetAllFamilles())
                {
                    FamillyComboBox.Items.Add(new ComboBoxItem(AFamily.Name, AFamily));
                }
                // Si l'id a une valeur, on récupère la sous-famille correspondante.
                if (Id.HasValue)
                {
                    SubFamily            = DaoRegistry.GetInstance.SubFamilyDao.GetSousFamilleById(Id.Value);
                    NameBox.Text         = SubFamily.Name;
                    FamillyComboBox.Text = SubFamily.Family.Name;
                }
                // On affiche la ComboBox des familles.
                FamillyComboBox.Visible = true;
                NameLabel.Visible       = true;
                break;
            }
            }
        }
예제 #13
0
        public AddOrModifyMarque(Marques Marque = null)
        {
            InitializeComponent();
            marque = Marque;

            if (marque != null)
            {
                Text            = "Modification d'une marque";
                textBoxNom.Text = marque.Nom;
            }
            else
            {
                Text = "Ajout d'un article";
            }
        }
예제 #14
0
        private void suppressionMarque()
        {
            Marques marque = new Marques();

            marque.RefMarque = Convert.ToInt32(listView.Items[listView.SelectedIndices[0]].Text);

            DialogResult dr = MessageBox.Show("Voulez vous supprimer la marque " + marque.RefMarque + " ? ", "Suppression marque", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);

            if (dr == DialogResult.Yes)
            {
                marque.deleteFromDB();
                listView.Items.Remove(listView.Items[listView.SelectedIndices[0]]);
                listView.Refresh();
            }
        }
예제 #15
0
        /// <summary>
        /// DAO pour ajouter une marque dans la base de données
        /// </summary>
        /// <param name="Marque"> Objet Marque à ajouter </param>
        public void AjouterMarque(Marques Marque)
        {
            //ouverture de la connexion avec la bdd & creation de la requete

            SQLiteConnection M_dbConnection = new SQLiteConnection("Data Source=" + DatabasePath);

            M_dbConnection.Open();
            String Sql = "insert into marques (Nom) values ('" + Marque.GetNom() + "')";

            using (SQLiteCommand Command = new SQLiteCommand(Sql, M_dbConnection))
            {
                //ajout de la marque
                Command.ExecuteNonQuery();
            }

            //fermeture de la connexion
            M_dbConnection.Close();
        }
예제 #16
0
        public Marques FindMarquesByMarqueName(string MarqueName)
        {
            Query = "SELECT * FROM Marques WHERE Nom = '" + MarqueName + "'";
            SQLiteCommand Command = new SQLiteCommand(Query, Connection);
            var           Reader  = Command.ExecuteReader();

            if (Reader.Read())
            {
                var     RefMarque = Reader.GetInt32(0);
                Marques Marque    = new Marques(RefMarque, MarqueName);
                Reader.Close();
                return(Marque);
            }
            else
            {
                return(null);
            }
        }
예제 #17
0
        private void ButtonVal_Click(object sender, EventArgs e)
        {
            if (CheckValidData())
            {
                if (marque != null)
                {
                    DialogResult result;
                    result = MessageBox.Show("Etes vous sur de vouloir modifier cette marque ?", "Attention : modification d'une marque existante", MessageBoxButtons.YesNo);
                    if (result == System.Windows.Forms.DialogResult.Yes)
                    {
                        marque.Nom = textBoxNom.Text;

                        marque.updateInDB();
                        this.DialogResult = DialogResult.OK;
                        this.Close();
                    }
                }
                else
                {
                    DialogResult result;
                    result = MessageBox.Show("Etes vous sur de vouloir ajouter cette marque ?", "Attention : ajout d'une nouvelle marque", MessageBoxButtons.YesNo);
                    if (result == System.Windows.Forms.DialogResult.Yes)
                    {
                        marque     = new Marques();
                        marque.Nom = textBoxNom.Text;

                        if (Marques.getRefMarqueFromName(marque.Nom) == -1)
                        {
                            marque.saveInDB();
                            this.DialogResult = DialogResult.OK;
                            this.Close();
                        }
                        else
                        {
                            MessageBox.Show("Impossible d'ajouter cette marque", "Attention : ajout d'une marque existante");
                        }
                    }
                }
            }
            else
            {
                MessageBox.Show("Veuillez remplir correctement les champs", "Erreur");
            }
        }
예제 #18
0
 /**
  * Méthod Create
  * @param obj Marques marque
  * @return boolean
  */
 public override Boolean CreateDAO <T>(ref T data)
 {
     if (data.GetType().Name == "Marques")
     {
         Marques marque = (Marques)Convert.ChangeType(data, typeof(Marques));
         try
         {
             string        sql      = "insert into marques (refMarque,nom) values (null, '" + marque.marqueName + "')";
             SQLiteCommand commande = new SQLiteCommand(sql, database.connection);
             commande.ExecuteNonQuery();
             return(true);
         }catch (SQLiteException e) {
             MessageBox.Show("L'erreur suivante a été rencontrée :" + e.Message);
             Console.WriteLine("L'erreur suivante a été rencontrée :" + e.Message);
             return(false);
         }
     }
     return(false);
 }
예제 #19
0
        public List <Marques> FindMarquesBySousFamilleName(string SousFamilleName)
        {
            Query = "SELECT * FROM Marques WHERE RefMarque IN (SELECT RefMarque FROM Articles WHERE RefSousFamille = (SELECT RefSousFamille FROM SousFamilles WHERE Nom = '" + SousFamilleName + "'))";
            SQLiteCommand Command = new SQLiteCommand(Query, Connection);
            var           Reader  = Command.ExecuteReader();

            List <Marques> Marques = new List <Marques>();

            while (Reader.Read())
            {
                var RefMarque  = Reader.GetInt32(0);
                var MarqueName = Reader.GetString(1);

                Marques Marque = new Marques(RefMarque, MarqueName);
                Marques.Add(Marque);
            }
            Reader.Close();
            return(Marques);
        }
예제 #20
0
 /**
  * Méthod Update
  * @param obj Marques marque
  * @return boolean
  */
 public override Boolean Update <T>(ref T data)
 {
     if (data.GetType().Name == "Marques")
     {
         Marques marque = (Marques)Convert.ChangeType(data, typeof(Marques));
         try
         {
             string        sql      = "update marques SET nom = " + marque.marqueName + " WHERE refMarques=" + marque.refMarque;
             SQLiteCommand commande = new SQLiteCommand(sql, database.connection);
             commande.ExecuteNonQuery();
             return(true);
         }catch (SQLiteException e) {
             MessageBox.Show("L'erreur suivante a été rencontrée :" + e.Message);
             Console.WriteLine("L'erreur suivante a été rencontrée :" + e.Message);
             return(false);
         }
     }
     return(false);
 }
예제 #21
0
        public List <Marques> GetAll()
        {
            List <Marques>   Resultats    = new List <Marques>();
            SQLiteConnection ConnectionBD = GererBD.Get_Connection();
            string           Sql          = "select * from Marques";
            SQLiteCommand    Commande     = new SQLiteCommand(Sql, ConnectionBD);
            SQLiteDataReader Reader       = Commande.ExecuteReader();

            if (Reader.HasRows)
            {
                while (Reader.Read())
                {
                    Marques Marque = new Marques();
                    Marque.Ref_Marque_Operation = (int)Reader["RefMarque"];
                    Marque.Nom_Operation        = Reader["Nom"].ToString();
                    Resultats.Add(Marque);
                }
            }
            return(Resultats);
        }
예제 #22
0
        public Marques FindMarqueByRefMarque(int RefMarque)
        {
            Query = "SELECT * FROM Marques WHERE RefMarque = '" + RefMarque + "'";
            SQLiteCommand Command = new SQLiteCommand(Query, Connection);

            Command.ExecuteNonQuery();

            var Reader = Command.ExecuteReader();

            if (Reader.Read())
            {
                var     MarqueName = Reader.GetString(1);
                Marques Marque     = new Marques(RefMarque, MarqueName);
                Reader.Close();
                return(Marque);
            }
            else
            {
                return(null);
            }
        }
예제 #23
0
        public void ModifyMarque(String MarqueName, ModifyMarque ModifyMarque, String LabelMarqueName)
        {
            if (FamillesDao.FindFamilleByFamilleName(MarqueName))
            {
                MessageBox.Show("This name has already been used by a Famille!", "ERROR");
                ModifyMarque.textBox_NewMarqueName.Text = "";
                return;
            }

            else if (SousFamillesDao.FindSousFamilleBySousFamilleName(MarqueName))
            {
                MessageBox.Show("This name has already been used by a SousFamille!", "ERROR");
                ModifyMarque.textBox_NewMarqueName.Text = "";
                return;
            }

            else if (MarquesDao.FindMarqueByMarqueName(MarqueName))
            {
                MessageBox.Show("Marque Already exsited!", "ERROR");
                ModifyMarque.textBox_NewMarqueName.Text = "";
                return;
            }
            else
            {
                Marques Marque = FindMarquesByMarqueName(LabelMarqueName);
                Marque.MarqueName = MarqueName;
                MarquesDao.ModifyMarque(Marque);

                if (MarquesDao.FindMarqueByMarqueName(Marque.MarqueName))
                {
                    MessageBox.Show("Modify succeed!");
                    ModifyMarque.Close();
                }
                else
                {
                    MessageBox.Show("Modify Failed!");
                }
            }
        }
예제 #24
0
        private void refreshListView()
        {
            int            countRows = Marques.countRows();
            List <Marques> marques   = Marques.getListMarques();

            listView.Clear();

            listView.View          = View.Details;
            listView.GridLines     = true;
            listView.FullRowSelect = true;

            listView.Columns.Add("Référence");
            listView.Columns.Add("Nom");
            foreach (Marques marque in marques)
            {
                String[] array = new String[2];
                array[0] = marque.RefMarque.ToString();
                array[1] = marque.Nom;

                listView.Items.Add(new ListViewItem(array));
            }
        }
예제 #25
0
        public List <Marques> GetMarques(int Id)
        {
            List <Marques>   Resultats    = new List <Marques>();
            SQLiteConnection ConnectionBD = GererBD.Get_Connection();
            string           Sql          = "select * from Marques where Marques.RefMarque= @Id";
            SQLiteCommand    Commande     = new SQLiteCommand(Sql, ConnectionBD);
            SQLiteParameter  Parametre    = new SQLiteParameter("@Id", System.Data.DbType.Int16);

            Parametre.Value = Id;
            Commande.Parameters.Add(Parametre);
            SQLiteDataReader Reader = Commande.ExecuteReader();

            if (Reader.HasRows)
            {
                while (Reader.Read())
                {
                    Marques Marque = new Marques();
                    Marque.Ref_Marque_Operation = (int)Reader["RefMarque"];
                    Marque.Nom_Operation        = Reader["Nom"].ToString();
                    Resultats.Add(Marque);
                }
            }
            return(Resultats);
        }
예제 #26
0
        /// <summary>
        /// Cherche une marque par son id et la retourne.
        /// </summary>
        /// <param name="Id">id de la marque recherchée.</param>
        public Marques GetMarqueById(int Id)
        {
            Marques Marque = null;

            using (var Connection = new SQLiteConnection(CONNECTION_STRING))
            {
                Connection.Open();
                using (var Command = new SQLiteCommand(
                           "SELECT * FROM Marques WHERE RefMarque = @refMarque", Connection))
                {
                    Command.Parameters.AddWithValue("@refMarque", Id);
                    using (var Reader = Command.ExecuteReader())
                    {
                        if (Reader.HasRows)
                        {
                            Reader.Read();
                            Marque = new Marques(Reader.GetInt32(0), Reader.GetString(1));
                        }
                    }
                }
            }

            return(Marque);
        }
예제 #27
0
        /// <summary>
        /// Import de la base de données
        /// </summary>
        public void ImporterBDD()
        {
            Modale.SetProgressBarValue(10);
            MarquesDAO      MarquesD      = new MarquesDAO(Modale.GetPathToSave());
            FamillesDAO     FamillesD     = new FamillesDAO(Modale.GetPathToSave());
            SousFamillesDAO SousFamillesD = new SousFamillesDAO(Modale.GetPathToSave());
            ArticlesDAO     ArticlesD     = new ArticlesDAO(Modale.GetPathToSave());

            List <string> AllMarques              = new List <string>();
            List <string> AllFamilles             = new List <string>();
            List <string> AllSousFamilles         = new List <string>();
            List <string> AllSousFamillesFamilles = new List <string>();          //Pour récupérer la famille des sous familles

            //Pour les articles, on est obligé de tout stocker dans une liste à part car on doit récupérer les Ref des autres objets (donc ils doivent être créés avant)
            List <string> AllArticlesRefArticle     = new List <string>();
            List <string> AllArticlesDescription    = new List <string>();
            List <string> AllArticlesSousFamilleNom = new List <string>();
            List <string> AllArticlesMarqueNom      = new List <string>();
            List <float>  AllArticlesPrixHT         = new List <float>();

            Modale.SetProgressBarValue(25);
            using (var reader = new StreamReader(Modale.GetPathToImport(), Encoding.Default))
            {
                reader.ReadLine();                      //On passe la première ligne (les headers du fichier)
                //On stocke tous dans des listes en parcourant notre fichier, on créera après (on ne stocke qu'une occurence de chaque item)
                while (!reader.EndOfStream)
                {
                    var line   = reader.ReadLine();
                    var values = line.Split(';');

                    if (!AllMarques.Exists(e => e.EndsWith(values[2])))
                    {
                        AllMarques.Add(values[2]);
                    }
                    if (!AllFamilles.Exists(e => e.EndsWith(values[3])))
                    {
                        AllFamilles.Add(values[3]);
                    }
                    if (!AllSousFamilles.Exists(e => e.EndsWith(values[4])))
                    {
                        AllSousFamilles.Add(values[4]);
                        AllSousFamillesFamilles.Add(values[3]);
                    }

                    AllArticlesRefArticle.Add(values[1]);
                    AllArticlesDescription.Add(values[0]);
                    AllArticlesMarqueNom.Add(values[2]);
                    AllArticlesSousFamilleNom.Add(values[4]);
                    AllArticlesPrixHT.Add(float.Parse(values[5]));
                }
            }
            //Maintenant on crée tout en base
            Modale.SetProgressBarValue(50);
            for (int Index = 0; Index < AllMarques.Count; Index++)
            {
                Marques Marque = new Marques(AllMarques[Index]);
                MarquesD.AjouterMarque(Marque);
            }
            Modale.SetProgressBarValue(60);
            for (int Index = 0; Index < AllFamilles.Count; Index++)
            {
                Familles Famille = new Familles(AllFamilles[Index]);
                FamillesD.AjouterFamille(Famille);
            }
            Modale.SetProgressBarValue(70);
            for (int Index = 0; Index < AllSousFamilles.Count; Index++)
            {
                SousFamilles SousFamille = new SousFamilles(FamillesD.GetRefByName(AllSousFamillesFamilles[Index]), AllSousFamilles[Index]);
                SousFamillesD.AjouterSousFamille(SousFamille);
            }
            Modale.SetProgressBarValue(80);
            for (int Index = 0; Index < AllArticlesRefArticle.Count; Index++)
            {
                int      RefSousFamille = SousFamillesD.GetRefByName(AllArticlesSousFamilleNom[Index]);
                int      RefMarque      = MarquesD.GetRefByName(AllArticlesMarqueNom[Index]);
                Articles Article        = new Articles(AllArticlesRefArticle[Index], AllArticlesDescription[Index], RefSousFamille, RefMarque, AllArticlesPrixHT[Index], 0);
                ArticlesD.AjouterArticle(Article);
            }

            Modale.SetProgressBarValue(100);
            Modale.GetLabelImport().Text = "Importation en mode Ecrasement terminé !";

            string       message = ArticlesD.GetNbArticle() + " articles ont été ajoutés à la base de données.";
            const string caption = "Intégration en mode Ecrasement terminé !";
            var          result  = MessageBox.Show(message, caption,
                                                   MessageBoxButtons.OK,
                                                   MessageBoxIcon.Information);
        }
예제 #28
0
 /// <summary>
 /// Suppression d'une marque
 /// </summary>
 /// <param name="m"></param>
 public static void supprimerMarque(Marque m)
 {
     Marques.Remove(m);
 }
예제 #29
0
 /// <summary>
 /// Ajout d'une marque
 /// </summary>
 /// <param name="m"></param>
 public static void AjouterMarque(Marque m)
 {
     Marques.Add(m);
 }
예제 #30
0
        public void CsvImport(bool Flag, string ParamFilePath, FormImport FormImport)
        {
            ModelList           ModelList           = new ModelList();
            ModelListController ModelListController = new ModelListController();

            ModelList = ModelListController.GetAllModelList();
            ArticlesDao     ArticleDao     = new ArticlesDao();
            FamillesDao     FamilleDao     = new FamillesDao();
            MarquesDao      MarqueDao      = new MarquesDao();
            SousFamillesDao SousFamilleDao = new SousFamillesDao();
            Articles        Article        = new Articles();
            Marques         Marque         = new Marques();
            SousFamilles    SousFamille    = new SousFamilles();
            Familles        Famille        = new Familles();

            try
            {
                int AddedArticles    = 0;
                int ExistingArticles = 0;

                if (Flag == true)
                {
                    ModelList.Articles.Clear();
                    ModelList.Familles.Clear();
                    ModelList.Marques.Clear();
                    ModelList.SousFamilles.Clear();

                    ArticleDao.EmptyArticles();
                    SousFamilleDao.EmptySousFamilles();
                    MarqueDao.EmptyMarques();
                    FamilleDao.EmptyFamilles();
                }

                if (ParamFilePath == "")
                {
                    if (MessageBox.Show("Please choose a file!", "ERROR") == DialogResult.OK)
                    {
                        FormImport.label_FichierImporte.Text = "FileName: " + System.IO.Path.GetFileName(ChooseFile());
                    }
                }

                using (var StreamReader = new StreamReader(ParamFilePath, Encoding.Default))
                {
                    var NbLines = File.ReadAllLines(ParamFilePath).Length;

                    FormImport.progressBar.Maximum = NbLines;
                    FormImport.progressBar.Value   = 1;

                    StreamReader.ReadLine();

                    string Line;
                    while ((Line = StreamReader.ReadLine()) != null)
                    {
                        var Values          = Line.Split(';');
                        var Description     = Values[0].Trim();
                        var RefArticle      = Values[1].Trim();
                        var MarqueName      = Values[2].Trim();
                        var FamilleName     = Values[3].Trim();
                        var SousFamilleName = Values[4].Trim();
                        var Prix            = Values[5].Trim();

                        if (Prix.IndexOf("\"") >= 0)
                        {
                            Prix = Prix.Replace("\"", "");
                        }

                        if (Prix.EndsWith(","))
                        {
                            Prix = Prix.Remove(Prix.Length - 1, 1);
                        }

                        if (Prix.IndexOf(",") != -1)
                        {
                            int StartIndex = 0;
                            int Count      = 0;
                            while (true)
                            {
                                int Index = Prix.IndexOf(",", StartIndex);
                                if (Index != -1)
                                {
                                    Count++;
                                    StartIndex = Index + 1;
                                }
                                else
                                {
                                    break;
                                }
                            }

                            StartIndex = 0;
                            for (int i = 0; i < Count - 1; i++)
                            {
                                int Index = Prix.IndexOf(",", StartIndex);
                                StartIndex = Index + 1;
                                Prix       = Prix.Remove(Index, Index);
                            }

                            Prix = Prix.Replace(",", ".");
                        }

                        var PrixHT = double.Parse(Prix, new CultureInfo("en-US"));

                        if (ArticleDao.FindArticleByRefArticle(RefArticle))
                        {
                            ExistingArticles += 1;
                            if (Flag == false)
                            {
                                Article = ArticleDao.FindArticlesByRefArticle(RefArticle);
                                if (Article.Description != Description)
                                {
                                    Article.Description = Description;
                                }
                                if (Article.PrixHT != PrixHT)
                                {
                                    Article.PrixHT = PrixHT;
                                }
                                if (Article.Quantite != 1)
                                {
                                    Article.Quantite = 1;
                                }
                                if (!MarqueDao.FindMarqueByMarqueName(MarqueName))
                                {
                                    Marque = new Marques(MarqueName);
                                    ModelList.Marques.Add(Marque);
                                    MarqueDao.AddMarque(Marque);
                                    Article.Marque = Marque;
                                }
                                if (!SousFamilleDao.FindSousFamilleBySousFamilleName(SousFamilleName))
                                {
                                    SousFamille = new SousFamilles(SousFamilleName);
                                    ModelList.SousFamilles.Add(SousFamille);
                                    SousFamilleDao.AddSousFamille(SousFamille, Famille);
                                    Article.SousFamille = SousFamille;
                                }
                            }
                            continue;
                        }
                        else
                        {
                            AddedArticles += 1;
                        }

                        if (!MarqueDao.FindMarqueByMarqueName(MarqueName))
                        {
                            Marque = new Marques(MarqueName);
                            ModelList.Marques.Add(Marque);
                            MarqueDao.AddMarque(Marque);
                        }

                        if (!ArticleDao.FindArticleByFamilleName(FamilleName))
                        {
                            Famille = new Familles(FamilleName);
                            ModelList.Familles.Add(Famille);
                            FamilleDao.AddFamille(Famille);
                        }

                        if (!SousFamilleDao.FindSousFamilleBySousFamilleName(SousFamilleName))
                        {
                            SousFamille = new SousFamilles(SousFamilleName);
                            ModelList.SousFamilles.Add(SousFamille);
                            SousFamilleDao.AddSousFamille(SousFamille, Famille);
                        }

                        Article = new Articles(RefArticle, Description, FamilleDao.FindFamillesByRefSousFamille(SousFamille.RefSousFamille), SousFamille, Marque, PrixHT, 1);
                        ModelList.Articles.Add(Article);
                        ArticleDao.AddArticle(Article);

                        FormImport.progressBar.Value++;
                    }
                    StreamReader.Close();
                }

                string Message = "Nombre d'articles ajoutés " + AddedArticles + "\n" +
                                 "Nombre d'articles anomalies " + ExistingArticles;

                MessageBox.Show(" Import success!\n" + Message, System.IO.Path.GetFileName(ParamFilePath));

                String FileDirectory = Path.GetDirectoryName(ParamFilePath);
                //if (FileDirectory != null)
                //FormMain_FileSystemWatcher();
            }
            catch (System.IO.IOException)
            {
                MessageBox.Show("Please close the selected file!");
            }
        }