Ejemplo n.º 1
0
        protected override int ExecuteWorkImplementation()
        {
            var author = new OriginalAuthor
            {
                FirstName = m_data.FirstName,
                LastName  = m_data.LastName
            };

            return((int)m_personRepository.Create(author));
        }
Ejemplo n.º 2
0
        public IList <OriginalAuthor> GetAuthorAutocomplete(string query, int count)
        {
            OriginalAuthor authorAlias = null;

            query = query.Replace(" ", $"{WildcardAny} ");

            return(GetSession().QueryOver(() => authorAlias)
                   .Where(Restrictions.Or(
                              Restrictions.Like(Projections.SqlFunction("concat", NHibernateUtil.String, Projections.Property(() => authorAlias.LastName),
                                                                        Projections.Constant(" "), Projections.Property(() => authorAlias.FirstName)), query, MatchMode.Start),
                              Restrictions.Like(Projections.Property(() => authorAlias.FirstName), query, MatchMode.Start)
                              ))
                   .OrderBy(x => x.LastName).Asc
                   .ThenBy(x => x.FirstName).Asc
                   .Take(count)
                   .List());
        }
Ejemplo n.º 3
0
        public Project GetAdditionalProjectMetadata(long projectId, bool includeAuthors, bool includeResponsibles, bool includeKind, bool includeGenre)
        {
            var session = GetSession();

            if (includeAuthors)
            {
                ProjectOriginalAuthor projectAuthorAlias = null;
                OriginalAuthor        authorAlias        = null;

                session.QueryOver <Project>()
                .JoinAlias(x => x.Authors, () => projectAuthorAlias, JoinType.LeftOuterJoin)
                .JoinAlias(() => projectAuthorAlias.OriginalAuthor, () => authorAlias, JoinType.LeftOuterJoin)
                .Where(x => x.Id == projectId)
                .OrderBy(() => projectAuthorAlias.Sequence).Asc
                .Fetch(x => x.Authors).Eager
                .FutureValue();
            }
            if (includeResponsibles)
            {
                session.QueryOver <Project>()
                .Where(x => x.Id == projectId)
                .Fetch(x => x.ResponsiblePersons).Eager
                .FutureValue();
            }
            if (includeKind)
            {
                session.QueryOver <Project>()
                .Where(x => x.Id == projectId)
                .Fetch(x => x.LiteraryKinds).Eager
                .FutureValue();
            }
            if (includeGenre)
            {
                session.QueryOver <Project>()
                .Where(x => x.Id == projectId)
                .Fetch(x => x.LiteraryGenres).Eager
                .FutureValue();
            }

            return(session.QueryOver <Project>()
                   .Where(x => x.Id == projectId)
                   .FutureValue().Value);
        }
Ejemplo n.º 4
0
        private OriginalAuthor GetOrCreateAuthor(string firstName, string lastName)
        {
            var dbAuthor = m_personRepository.GetAuthorByName(firstName, lastName);

            if (dbAuthor != null)
            {
                return(dbAuthor);
            }

            var newDbAuthor = new OriginalAuthor
            {
                FirstName = firstName,
                LastName  = lastName
            };

            m_projectRepository.Create(newDbAuthor);
            newDbAuthor = m_projectRepository.Load <OriginalAuthor>(newDbAuthor.Id);

            return(newDbAuthor);
        }
Ejemplo n.º 5
0
        public IList <OriginalAuthor> GetAuthorAutocomplete(string queryString, BookTypeEnum?bookTypeEnum, int count)
        {
            OriginalAuthor authorAlias = null;

            queryString = EscapeQuery(queryString);
            queryString = queryString.Replace(" ", $"{WildcardAny} ");

            var query = GetSession().QueryOver(() => authorAlias)
                        .Where(Restrictions.Or(
                                   Restrictions.Like(Projections.SqlFunction("concat", NHibernateUtil.String, Projections.Property(() => authorAlias.LastName),
                                                                             Projections.Constant(" "), Projections.Property(() => authorAlias.FirstName)), queryString, MatchMode.Start),
                                   Restrictions.Like(Projections.Property(() => authorAlias.FirstName), queryString, MatchMode.Start)
                                   ))
                        .OrderBy(x => x.LastName).Asc
                        .ThenBy(x => x.FirstName).Asc;


            if (bookTypeEnum != null)
            {
                ProjectOriginalAuthor projectOriginalAuthorAlias = null;
                Project  projectAlias  = null;
                Snapshot snapshotAlias = null;
                BookType bookTypeAlias = null;

                query.JoinAlias(x => x.Projects, () => projectOriginalAuthorAlias)
                .JoinAlias(() => projectOriginalAuthorAlias.Project, () => projectAlias)
                .JoinAlias(() => projectAlias.LatestPublishedSnapshot, () => snapshotAlias)
                .JoinAlias(() => snapshotAlias.BookTypes, () => bookTypeAlias)
                .Where(() => bookTypeAlias.Type == bookTypeEnum.Value && projectAlias.IsRemoved == false)
                .Select(Projections.Distinct(Projections.ProjectionList()
                                             .Add(Projections.Property <OriginalAuthor>(x => x.Id).WithAlias(() => authorAlias.Id))
                                             .Add(Projections.Property <OriginalAuthor>(x => x.FirstName).WithAlias(() => authorAlias.FirstName))
                                             .Add(Projections.Property <OriginalAuthor>(x => x.LastName).WithAlias(() => authorAlias.LastName))
                                             ))
                .TransformUsing(Transformers.AliasToBean <OriginalAuthor>());
            }

            return(query
                   .Take(count)
                   .List());
        }
Ejemplo n.º 6
0
        public virtual Project GetAdditionalProjectMetadata(long projectId, bool includeAuthors, bool includeResponsibles, bool includeKind, bool includeGenre, bool includeOriginal, bool includeKeyword, bool includeCategory)
        {
            var session = GetSession();

            if (includeAuthors)
            {
                ProjectOriginalAuthor projectAuthorAlias = null;
                OriginalAuthor        authorAlias        = null;

                session.QueryOver <Project>()
                .JoinAlias(x => x.Authors, () => projectAuthorAlias, JoinType.LeftOuterJoin)
                .JoinAlias(() => projectAuthorAlias.OriginalAuthor, () => authorAlias, JoinType.LeftOuterJoin)
                .Where(x => x.Id == projectId)
                .OrderBy(() => projectAuthorAlias.Sequence).Asc
                .Fetch(SelectMode.Fetch, x => x.Authors)
                .FutureValue();
            }
            if (includeResponsibles)
            {
                ProjectResponsiblePerson projectResponsiblePersonAlias = null;

                session.QueryOver <Project>()
                .JoinAlias(x => x.ResponsiblePersons, () => projectResponsiblePersonAlias, JoinType.LeftOuterJoin)
                .Where(x => x.Id == projectId)
                .Fetch(SelectMode.Fetch, x => x.ResponsiblePersons)
                .Fetch(SelectMode.Fetch, x => x.ResponsiblePersons[0].ResponsiblePerson)
                .Fetch(SelectMode.Fetch, x => x.ResponsiblePersons[0].ResponsibleType)
                .OrderBy(() => projectResponsiblePersonAlias.Sequence).Asc
                .FutureValue();
            }
            if (includeKind)
            {
                session.QueryOver <Project>()
                .Where(x => x.Id == projectId)
                .Fetch(SelectMode.Fetch, x => x.LiteraryKinds)
                .FutureValue();
            }
            if (includeGenre)
            {
                session.QueryOver <Project>()
                .Where(x => x.Id == projectId)
                .Fetch(SelectMode.Fetch, x => x.LiteraryGenres)
                .FutureValue();
            }
            if (includeOriginal)
            {
                session.QueryOver <Project>()
                .Where(x => x.Id == projectId)
                .Fetch(SelectMode.Fetch, x => x.LiteraryOriginals)
                .FutureValue();
            }
            if (includeKeyword)
            {
                session.QueryOver <Project>()
                .Where(x => x.Id == projectId)
                .Fetch(SelectMode.Fetch, x => x.Keywords)
                .FutureValue();
            }
            if (includeCategory)
            {
                session.QueryOver <Project>()
                .Where(x => x.Id == projectId)
                .Fetch(SelectMode.Fetch, x => x.Categories)
                .FutureValue();
            }
            return(session.QueryOver <Project>()
                   .Where(x => x.Id == projectId && x.IsRemoved == false)
                   .FutureValue().Value);
        }
Ejemplo n.º 7
0
        public virtual MetadataResource GetMetadataWithDetail(long projectId)
        {
            Resource resourceAlias = null;
            Project  projectAlias  = null;
            Snapshot snapshotAlias = null;
            BookType bookTypeAlias = null;
            ProjectOriginalAuthor    projectOriginalAuthorAlias    = null;
            OriginalAuthor           originalAuthorAlias           = null;
            ProjectResponsiblePerson projectResponsiblePersonAlias = null;
            ResponsiblePerson        responsiblePersonAlias        = null;
            ResponsibleType          responsibleTypeAlias          = null;

            var session = GetSession();

            var result = session.QueryOver <MetadataResource>()
                         .JoinAlias(x => x.Resource, () => resourceAlias)
                         .JoinAlias(() => resourceAlias.Project, () => projectAlias)
                         .JoinAlias(() => projectAlias.LatestPublishedSnapshot, () => snapshotAlias, JoinType.LeftOuterJoin)
                         .JoinAlias(() => snapshotAlias.DefaultBookType, () => bookTypeAlias, JoinType.LeftOuterJoin)
                         .Where(x => x.Id == resourceAlias.LatestVersion.Id && !resourceAlias.IsRemoved && resourceAlias.Project.Id == projectId && projectAlias.IsRemoved == false)
                         .FutureValue();

            session.QueryOver <Project>()
            .Where(x => x.Id == projectId)
            .Fetch(SelectMode.Fetch, x => x.Keywords)
            .Future();

            session.QueryOver <Project>()
            .Where(x => x.Id == projectId)
            .Fetch(SelectMode.Fetch, x => x.LiteraryGenres)
            .Future();

            session.QueryOver <Project>()
            .Where(x => x.Id == projectId)
            .Fetch(SelectMode.Fetch, x => x.LiteraryKinds)
            .Future();

            session.QueryOver <Project>()
            .Where(x => x.Id == projectId)
            .Fetch(SelectMode.Fetch, x => x.LiteraryOriginals)
            .Future();

            session.QueryOver <Project>()
            .Where(x => x.Id == projectId)
            .JoinAlias(x => x.Authors, () => projectOriginalAuthorAlias, JoinType.LeftOuterJoin)
            .JoinAlias(() => projectOriginalAuthorAlias.OriginalAuthor, () => originalAuthorAlias, JoinType.LeftOuterJoin)
            .Fetch(SelectMode.Fetch, x => x.Authors)
            .Fetch(SelectMode.Fetch, x => x.Authors[0].OriginalAuthor)
            .OrderBy(() => projectOriginalAuthorAlias.Sequence).Asc
            .Future();

            session.QueryOver <Project>()
            .Where(x => x.Id == projectId)
            .JoinAlias(x => x.ResponsiblePersons, () => projectResponsiblePersonAlias, JoinType.LeftOuterJoin)
            .JoinAlias(() => projectResponsiblePersonAlias.ResponsiblePerson, () => responsiblePersonAlias, JoinType.LeftOuterJoin)
            .JoinAlias(() => projectResponsiblePersonAlias.ResponsibleType, () => responsibleTypeAlias, JoinType.LeftOuterJoin)
            .Fetch(SelectMode.Fetch, x => x.ResponsiblePersons)
            .Fetch(SelectMode.Fetch, x => x.ResponsiblePersons[0].ResponsiblePerson)
            .Fetch(SelectMode.Fetch, x => x.ResponsiblePersons[0].ResponsibleType)
            .OrderBy(() => projectResponsiblePersonAlias.Sequence).Asc
            .Future();

            return(result.Value);
        }