Exemplo n.º 1
0
 private void ButtonSelectDataBase_Click(object sender, EventArgs e)
 {
     if (openFileDialogForXml.ShowDialog() != DialogResult.OK)
     {
         return;
     }
     labelProjectNumber.Text = "";
     labelMegingInfo.Text    = "";
     try
     {
         var databaseFilePath = openFileDialogForXml.FileName;
         textBoxDatabaseFilePath.Text = databaseFilePath;
         var mergingService       = new MergingService(databaseFilePath);
         var projects             = ProjectService.SelectAll();
         var theSameProjectsCount = mergingService.GetTheSameProjectsCount(projects);
         var newProjectsCount     = mergingService.GetNewProjectsCount(projects);
         labelMegingInfo.Text = $@"Found {theSameProjectsCount} project(s) with the same name And {newProjectsCount} new project(s)";
         if (theSameProjectsCount <= 0 && newProjectsCount <= 0)
         {
             labelMegingInfo.Text += $"{Environment.NewLine}There are nothing to merge";
         }
         buttonMerge.Visible = theSameProjectsCount > 0 || newProjectsCount > 0;
     }
     catch (Exception exception)
     {
         ShowErrorMessage($"Selected Database is invalid {Environment.NewLine} {exception.Message}");
     }
 }
Exemplo n.º 2
0
        private void ButtonMerge_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show(this, @"Are you sure to want merge?", @"Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) != DialogResult.Yes)
            {
                return;
            }
            try
            {
                var databaseFilePath          = textBoxDatabaseFilePath.Text.Trim();
                var mergingService            = new MergingService(databaseFilePath);
                var projectsOfCurrentDataBase = ProjectService.SelectAll();

                var theSameProjects  = mergingService.GetTheSameProjects(projectsOfCurrentDataBase);
                var timeModelsToSave = new List <TimeModel>();
                Parallel.ForEach(theSameProjects, theSameProject =>
                {
                    var projectOfCurrentDatabase = projectsOfCurrentDataBase.Find(q => q.Title.Equals(theSameProject.Title, StringComparison.InvariantCultureIgnoreCase));
                    if (projectOfCurrentDatabase == null)
                    {
                        return;
                    }
                    foreach (var timeModel in theSameProject.Times)
                    {
                        timeModel.ProjectId = projectOfCurrentDatabase.Id;
                        timeModelsToSave.Add(timeModel);
                    }
                });
                TimeService.Save(timeModelsToSave);
                timeModelsToSave = new List <TimeModel>();
                if (checkBoxAddNewProjects.Checked)
                {
                    var newProjects = mergingService.GetNewProjects(projectsOfCurrentDataBase);
                    Parallel.ForEach(newProjects, newProject =>
                    {
                        var project = ProjectService.Insert(newProject);
                        foreach (var timeModel in newProject.Times)
                        {
                            timeModel.ProjectId = project.Id;
                            timeModelsToSave.Add(timeModel);
                        }
                    });
                }
                TimeService.Save(timeModelsToSave);
                ShowSuccessMessage("The databases merged successfully");
            }
            catch (Exception exception)
            {
                ShowErrorMessage(exception.Message);
            }
        }