Пример #1
0
        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);
                }
            }
        }
Пример #2
0
        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);
                }
            }
        }
Пример #3
0
        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);
                }
            }
        }
Пример #4
0
        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);
                }
            }
        }
Пример #5
0
        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));
        }
Пример #6
0
        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);
        }