protected override IQueryOver <Desk, Desk> DecorateCriteria(IQueryOver <Desk, Desk> queryOver)
        {
            DeskDocumentEndorsement deskDocumentEndorsement = null;
            DeskRoleUser            deskRoleUser            = null;
            DeskDocumentVersion     deskDocumentVersion     = null;
            DeskDocument            deskDocument            = null;

            queryOver.JoinAlias(o => o.DeskDocuments, () => deskDocument)
            .JoinAlias(() => deskDocument.DeskDocumentVersions, () => deskDocumentVersion)
            .JoinAlias(o => o.DeskRoleUsers, () => deskRoleUser)
            .Left.JoinAlias(() => deskRoleUser.DeskDocumentEndorsements, () => deskDocumentEndorsement, () => deskDocumentEndorsement.DeskDocumentVersion.Id == deskDocumentVersion.Id);


            if (DeskId.HasValue)
            {
                queryOver.Where(desk => desk.Id == DeskId.Value);
            }

            FilterByUserPermission(queryOver);

            queryOver.SelectList(select => select.SelectGroup(() => deskDocument.Id).SelectMax(() => deskDocumentVersion.Version));

            if (!VersionFilters.Any())
            {
                return(queryOver);
            }

            foreach (KeyValuePair <Guid, decimal> versionFilter in VersionFilters)
            {
                queryOver.Where(() => deskDocument.Id == versionFilter.Key)
                .And(() => deskDocumentVersion.Version == versionFilter.Value);
            }
            return(queryOver);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Mappo gli oggetti di DeskDocumentEndorsement su DeskEndorsement.
        /// <see cref="IsApprove">IsApprove viene settato intero poichè in una PivotGrid ho la necessità di aggregare questa informazione</see>
        /// </summary>
        /// <param name="queryOver"></param>
        /// <returns></returns>
        protected override IQueryOver <Desk, Desk> MappingProjection(IQueryOver <Desk, Desk> queryOver)
        {
            DeskEndorsement         deskEndorsment          = null;
            DeskDocumentEndorsement deskDocumentEndorsement = null;
            DeskRoleUser            deskRoleUser            = null;
            DeskDocumentVersion     deskDocumentVersion     = null;
            DeskDocument            deskDocument            = null;

            queryOver
            .SelectList(list => list
                        // Mappatura degli oggetti DeskDocumentEndorsmen
                        //.Select(Projections.Cast(NHibernateUtil.Int32, Projections.Property(() => deskDocumentEndorsement.Endorsement))).WithAlias(() => deskEndorsment.IsApprove)
                        .Select(() => deskDocumentEndorsement.Endorsement).WithAlias(() => deskEndorsment.IsApprove)
                        // Mappatura degli oggetti DeskDocumentVersion
                        .Select(() => deskDocumentVersion.Version).WithAlias(() => deskEndorsment.Version)
                        // Mappatura degli oggetti DeskDocument
                        .Select(() => deskDocument.Id).WithAlias(() => deskEndorsment.DeskDocumentId)
                        .Select(() => deskDocument.IdDocument).WithAlias(() => deskEndorsment.IdChainBiblos)
                        .Select(() => deskRoleUser.AccountName).WithAlias(() => deskEndorsment.AccountName));

            return(queryOver);
        }