Beispiel #1
0
        public void UpdateAll(List <Project> projectsFetched)
        {
            var projects = _repository.GetAll();

            // Delete should be cascade if it's necessary
            // foreach (var project in projects)
            // {
            //     if (!projectsFetched.Select(v => v.Id).Contains(project.Id))
            //         _repository.Delete(project);
            // }
            foreach (var projectFetched in projectsFetched.Where(v => v.Name != null && v.BaseSeries != null))
            {
                var foundProject = projects.SingleOrDefault(v => v.Id == projectFetched.Id);
                if (foundProject == null)
                {
                    var uniqueKeyViolation = _repository.GetByUniqueKey(projectFetched.BaseSeries);
                    if (uniqueKeyViolation == null)
                    {
                        _repository.Add(projectFetched);
                    }
                }
                else
                {
                    var wasChanged = false;
                    var name       = projectFetched.Name.Trim();
                    if (foundProject.Name != name)
                    {
                        foundProject.Name = name;
                        wasChanged        = true;
                    }
                    var baseSeries = projectFetched.BaseSeries.Trim();
                    if (foundProject.Name != name)
                    {
                        foundProject.Name = name;
                        wasChanged        = true;
                    }
                    if (wasChanged)
                    {
                        _repository.Update(foundProject);
                    }
                }
            }
        }