/// <summary> /// Modifie les visites de la base centrale /// </summary> private void SynchronisationModification() { var repoVisiteCentrale = new VisiteRepositoryCentrale(); var repoVisiteLocale = new VisiteRepository(); var visitesCentrales = repoVisiteCentrale.GetAll(); var visitesLocales = repoVisiteLocale.GetWithAnUpdateDate(); foreach (var visite in visitesLocales) { var temp = visitesCentrales.FirstOrDefault(w => w.Guid == visite.Guid); if (temp != null) { //DateTime fromLocale = DateTime.Parse(); //DateTime fromCentrale = DateTime.Parse(); if (temp.DateUpdate.HasValue) { int result = DateTime.Compare(visite.DateUpdate.Value, temp.DateUpdate.Value); // Si la date locale est supérieur à la date centrale if (result > 0) { repoVisiteCentrale.Update(visite); } } else { repoVisiteCentrale.Update(visite); } } } }
/// <summary> /// Recopie toutes les visites de la base centrale dans la base locale /// </summary> private void RapatriementBaseCentrale() { var repoVisiteCentrale = new VisiteRepositoryCentrale(); var repoVisiteLocale = new VisiteRepository(); repoVisiteLocale.DeleteAll(); repoVisiteLocale.AddRange(repoVisiteCentrale.GetAll()); }
/// <summary> /// Supprime les visites de la base centrale /// </summary> private void SynchronisationSuppression() { var repoVisiteCentrale = new VisiteRepositoryCentrale(); var repoVisiteLocale = new VisiteRepository(); // Pour la suppresion, un champ de la ligne de visite est setter a true, il n'y as pas de vrai suppresion pour éviter // les conflits avec les possibles autres modifications, un système de purge est mis en place pour éviter ça var visitesLocales = repoVisiteLocale.GetDeleted(); repoVisiteCentrale.FakeDelete(visitesLocales); }
/// <summary> /// Ajoute les nouvelles visites à la base centrale /// </summary> private void SynchronisationAjout() { var visiteToAdd = new List <Visite>(); var repoVisiteCentrale = new VisiteRepositoryCentrale(); var repoVisiteLocale = new VisiteRepository(); var visitesCentrales = repoVisiteCentrale.GetAll(); var visitesLocales = repoVisiteLocale.GetAll(); foreach (var visiteLocale in visitesLocales) { var matchs = visitesCentrales.Where(w => w.Guid == visiteLocale.Guid).ToList(); if (matchs.IsNullOrEmpty()) { visiteToAdd.Add(visiteLocale); } } repoVisiteCentrale.AddRange(visiteToAdd); }
/// <summary> /// Supprime toutes les données qui ont IsDeleted a true si jamais leur nombre est supérieur à 500 /// </summary> public static void Purge() { var repoVisiteCentrale = new VisiteRepositoryCentrale(); var repoVisiteLocale = new VisiteRepository(); try { var deletedVisitesCentrale = repoVisiteCentrale.GetDeleted(); if (deletedVisitesCentrale.Count > 500) { repoVisiteCentrale.RemoveRange(deletedVisitesCentrale); } var deletedVisitesLocale = repoVisiteLocale.GetDeleted(); if (deletedVisitesLocale.Count > 500) { repoVisiteLocale.RemoveRange(deletedVisitesLocale); } } catch (Exception ex) { } }