private void UpdateLiteraryGenres(Project project) { if (project.LiteraryGenres == null) { project.LiteraryGenres = new List <LiteraryGenre>(); } else { project.LiteraryGenres.Clear(); } var dbGenreList = m_catalogValueRepository.GetLiteraryGenreList(); foreach (var newGenreName in m_importedRecord.ImportedProject.LiteraryGenres) { var dbGenre = dbGenreList.FirstOrDefault(x => x.Name == newGenreName); // Create new Literary Genre if (dbGenre == null) { dbGenre = new LiteraryGenre { Name = newGenreName }; m_catalogValueRepository.Create(dbGenre); dbGenreList.Add(dbGenre); } // Assign Literary Genre to project if (project.LiteraryGenres.All(x => x.Id != dbGenre.Id)) { project.LiteraryGenres.Add(dbGenre); } } }
private void UpdateLiteraryOriginals(Project project) { if (project.LiteraryOriginals == null) { project.LiteraryOriginals = new List <LiteraryOriginal>(); } else { project.LiteraryOriginals.Clear(); } var dbOriginalList = m_catalogValueRepository.GetLiteraryOriginalList(); foreach (var newOriginalName in m_importedRecord.ImportedProject.LiteraryOriginals) { var dbOriginal = dbOriginalList.FirstOrDefault(x => x.Name == newOriginalName); // Create new Literary Original if (dbOriginal == null) { dbOriginal = new LiteraryOriginal { Name = newOriginalName }; m_catalogValueRepository.Create(dbOriginal); dbOriginalList.Add(dbOriginal); } // Assign Literary Original to project if (project.LiteraryOriginals.All(x => x.Id != dbOriginal.Id)) { project.LiteraryOriginals.Add(dbOriginal); } } }
private void UpdateKeywords(Project project) { if (project.Keywords == null) { project.Keywords = new List <Keyword>(); } else { project.Keywords.Clear(); } foreach (var newKeywordName in m_importedRecord.ImportedProject.Keywords) { var dbKeyword = m_catalogValueRepository.GetKeywordByName(newKeywordName); // Create new Keyword if (dbKeyword == null) { dbKeyword = new Keyword { Text = newKeywordName }; m_catalogValueRepository.Create(dbKeyword); } // Assign existing Keyword to project if (project.Keywords.All(x => x.Id != dbKeyword.Id)) { project.Keywords.Add(dbKeyword); } } }
private void UpdateAuthors(Project project) { if (project.Authors == null) { project.Authors = new List <ProjectOriginalAuthor>(); } var dbAuthors = project.Authors.Select(x => x.OriginalAuthor).ToList(); var newAuthors = m_importedRecord.ImportedProject.Authors.Select(x => new OriginalAuthor { FirstName = x.FirstName, LastName = x.LastName }) .ToList(); var comparer = new AuthorNameEqualityComparer(); var authorsToAdd = newAuthors.Except(dbAuthors, comparer).ToList(); var authorsToRemove = dbAuthors.Except(newAuthors, comparer).ToList(); if (authorsToAdd.Count == 0 && authorsToRemove.Count == 0) { return; } foreach (var author in authorsToRemove) { var projectAuthor = project.Authors.Single(x => x.OriginalAuthor.Id == author.Id); m_projectRepository.Delete(projectAuthor); } for (var i = 0; i < newAuthors.Count; i++) { var newAuthor = newAuthors[i]; if (authorsToAdd.Contains(newAuthor, comparer)) { var dbAuthor = GetOrCreateAuthor(newAuthor.FirstName, newAuthor.LastName); var newProjectAuthor = new ProjectOriginalAuthor { OriginalAuthor = dbAuthor, Project = m_projectRepository.Load <Project>(m_projectId), Sequence = i + 1 }; m_projectRepository.Create(newProjectAuthor); } else { var projectAuthor = project.Authors.Single(x => x.OriginalAuthor.FirstName == newAuthor.FirstName && x.OriginalAuthor.LastName == newAuthor.LastName); projectAuthor.Sequence = i + 1; m_projectRepository.Update(projectAuthor); } } }
private long CreateProject() { var now = DateTime.UtcNow; var user = m_projectRepository.Load <User>(m_userId); var externalRepository = m_projectRepository.Load <ExternalRepository>(m_externalRepositoryId); var project = new Project { Name = m_importedRecord.ImportedProject.ProjectMetadata.Title, ProjectType = ProjectTypeEnum.Bibliography, TextType = TextTypeEnum.NoneOrOriginal, CreateTime = now, CreatedByUser = user, OriginalUrl = string.Format(externalRepository.UrlTemplate, m_importedRecord.ImportedProject.Id) }; return((long)m_projectRepository.Create(project)); }
private void UpdateMetadata(Project project) { var now = DateTime.UtcNow; var lastMetadata = m_metadataRepository.GetLatestMetadataResource(m_projectId); var firstManuscript = m_importedRecord.ImportedProject.ProjectMetadata.ManuscriptDescriptionData; var authorsString = m_importedRecord.ImportedProject.Authors != null ? string.Join(", ", m_importedRecord.ImportedProject.Authors.Select(x => $"{x.LastName} {x.FirstName}")) : null; var projectMetadata = m_importedRecord.ImportedProject.ProjectMetadata; var metadata = new MetadataResource { AuthorsLabel = authorsString, BiblText = projectMetadata.BiblText, Copyright = projectMetadata.Copyright, CreatedByUser = m_metadataRepository.Load <User>(m_userId), CreateTime = now, PublisherText = projectMetadata.PublisherText, PublisherEmail = projectMetadata.PublisherEmail, PublishDate = projectMetadata.PublishDate, PublishPlace = projectMetadata.PublishPlace, SourceAbbreviation = projectMetadata.SourceAbbreviation, RelicAbbreviation = projectMetadata.RelicAbbreviation, Title = projectMetadata.Title, SubTitle = projectMetadata.SubTitle }; if (lastMetadata == null) { var resource = new Resource { Project = project, ContentType = ContentTypeEnum.None, Name = "Metadata", ResourceType = ResourceTypeEnum.ProjectMetadata }; metadata.Resource = resource; metadata.VersionNumber = 1; } else { metadata.Resource = lastMetadata.Resource; metadata.VersionNumber = lastMetadata.VersionNumber + 1; } metadata.Resource.LatestVersion = metadata; if (firstManuscript != null) { metadata.ManuscriptSettlement = firstManuscript.Settlement; metadata.ManuscriptCountry = firstManuscript.Country; metadata.ManuscriptExtent = firstManuscript.Extent; metadata.ManuscriptIdno = firstManuscript.Idno; metadata.ManuscriptRepository = firstManuscript.Repository; metadata.ManuscriptTitle = firstManuscript.Title; metadata.NotBefore = firstManuscript.NotBefore; metadata.NotAfter = firstManuscript.NotAfter; metadata.OriginDate = firstManuscript.OriginDate; } m_metadataRepository.Create(metadata); }