/// <summary> /// Demande à l'utilisateur la façon de gérer les doublons d'articles. /// </summary> /// <param name="ArticleNameSakeCount">Le nombre d'articles en doublons.</param> /// <param name="ChosenNamesakeStrategy">La stratégie choisie.</param> /// <returns><c>true</c> si l'import est annulé, <c>false</c> sinon.</returns> private bool ChooseNameSakeStategy(int ArticleNameSakeCount, ref NamesakeStrategy ChosenNamesakeStrategy) { var Result = MessageBox.Show( $"{ArticleNameSakeCount} doublons d'articles ont été détéctés : \n" + "Voulez-vous ignorer ces doublons ? (sinon les valeurs dans la base seront mise à jour)", "Doublons détéctés", MessageBoxButtons.YesNoCancel); if (Result == DialogResult.Cancel) { StatusText.Text = "Import annulé."; DialogResult = DialogResult.Cancel; return(true); } if (Result == DialogResult.No) { ChosenNamesakeStrategy = NamesakeStrategy.Replace; } return(false); }
/// <summary> /// Enregistre les nouvelles données en bases. /// </summary> /// <param name="NewBrands">Les marques à enregistrer.</param> /// <param name="NewFamilies">Les familles à enregistrer.</param> /// <param name="NewSubFamilies">Les sous-familles à enregistrer.</param> /// <param name="NewArticles">Les articles à enregistrer.</param> /// <param name="ChosenNamesakeStrategy">La stratégie de dédoublonnage choisie.</param> /// <returns></returns> private async Task SaveImportedData(Dictionary <string, Marques> NewBrands, Dictionary <string, Family> NewFamilies, Dictionary <string, SubFamily> NewSubFamilies, Dictionary <string, Pair <Articles, Articles> > NewArticles, NamesakeStrategy ChosenNamesakeStrategy) { StatusText.Text = "Import des données..."; ImportProgress.Value = 0; ImportProgress.Maximum = NewBrands.Count; foreach (var Marques in NewBrands.Values) { ImportProgress.Value++; StatusText.Text = "Import des marques " + ImportProgress.Value + "/" + ImportProgress.Maximum; await Task.Run(() => BrandDao.Save(Marques)); } ImportProgress.Value = 0; ImportProgress.Maximum = NewFamilies.Count; foreach (var Familles in NewFamilies.Values) { ImportProgress.Value++; StatusText.Text = "Import des familles " + ImportProgress.Value + "/" + ImportProgress.Maximum; await Task.Run(() => FamilyDao.Save(Familles)); } ImportProgress.Value = 0; ImportProgress.Maximum = NewSubFamilies.Count; foreach (var SousFamille in NewSubFamilies.Values) { ImportProgress.Value++; StatusText.Text = "Import des sous-familles " + ImportProgress.Value + "/" + ImportProgress.Maximum; await Task.Run(() => SubFamilyDao.Save(SousFamille)); } ImportProgress.Value = 0; ImportProgress.Maximum = NewArticles.Count; foreach (var ArticlePair in NewArticles) { ImportProgress.Value++; StatusText.Text = "Import des articles " + ImportProgress.Value + "/" + ImportProgress.Maximum; //pas de doublons if (ArticlePair.Value.Second == null) { await Task.Run(() => ArticleDao.Create(ArticlePair.Value.First)); } else { if (ChosenNamesakeStrategy == NamesakeStrategy.Replace) { await Task.Run(() => ArticleDao.Update(ArticlePair.Value.First)); } } } }