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);
        }
예제 #2
0
        /// <summary>
        /// Inserisco un dizionario di documenti Biblos NON firmati sul tavolo.
        /// </summary>
        /// <param name="docCollection"></param>
        /// <param name="currentDesk"></param>
        /// <param name="currentDeskLocation"></param>
        /// <returns></returns>
        public Desk InsertDocumentNotSignedFromCollaboration(IDictionary <Guid, BiblosDocumentInfo> docCollection, Desk currentDesk, Location currentDeskLocation = null)
        {
            foreach (KeyValuePair <Guid, BiblosDocumentInfo> document in docCollection)
            {
                if (!document.Value.IsSigned)
                {
                    DeskDocument deskDocument = new DeskDocument(_userName);
                    Guid         chain        = Guid.Empty;
                    chain = DocumentInfoFactory.ArchiveDocumentsInBiblos(new List <DocumentInfo>()
                    {
                        document.Value
                    }, currentDeskLocation.ProtBiblosDSDB, chain);

                    deskDocument.DocumentType = DeskDocumentType.MainDocument;
                    deskDocument.IdDocument   = chain;
                    deskDocument.Desk         = currentDesk;

                    DeskDocumentVersion version = new DeskDocumentVersion(_userName);
                    version.DeskDocument = deskDocument;
                    version.Version      = 1;

                    deskDocument.DeskDocumentVersions.Add(version);

                    currentDesk.DeskDocuments.Add(deskDocument);
                }
            }
            return(currentDesk);
        }
예제 #3
0
        public DeskDocumentVersion GetLastVersionByIdDeskDocument(Guid idDeskDocument)
        {
            DeskDocument deskDocument = null;

            return(NHibernateSession.QueryOver <DeskDocumentVersion>()
                   .JoinAlias(x => x.DeskDocument, () => deskDocument)
                   .Where(() => deskDocument.Id == idDeskDocument)
                   .OrderBy(o => o.Version)
                   .Desc
                   .Take(1)
                   .SingleOrDefault <DeskDocumentVersion>());
        }
예제 #4
0
        protected override IQueryOver <DeskStoryBoard, DeskStoryBoard> MappingProjection(IQueryOver <DeskStoryBoard, DeskStoryBoard> queryOver)
        {
            DeskComment  deskComment  = null;
            DeskDocument deskDocument = null;

            queryOver
            .SelectList(list => list
                        .Select(x => x.Id).WithAlias(() => deskComment.DeskCommentId)
                        .Select(x => x.Comment).WithAlias(() => deskComment.Description)
                        .Select(x => x.Author).WithAlias(() => deskComment.Author)
                        .Select(x => x.DateBoard).WithAlias(() => deskComment.CreationDate)
                        .Select(x => x.BoardType).WithAlias(() => deskComment.CommentType)
                        .Select(x => x.Desk.Id).WithAlias(() => deskComment.DeskId)
                        .Select(() => deskDocument.IdDocument).WithAlias(() => deskComment.IdDocument));

            return(queryOver);
        }
예제 #5
0
        protected override IQueryOver <DeskDocumentEndorsement, DeskDocumentEndorsement> MappingProjection(IQueryOver <DeskDocumentEndorsement, DeskDocumentEndorsement> queryOver)
        {
            DeskEndorsement     deskEndorsment      = null;
            DeskRoleUser        deskRoleUser        = null;
            DeskDocumentVersion deskDocumentVersion = null;
            DeskDocument        deskDocument        = null;

            queryOver.JoinAlias(o => o.DeskRoleUser, () => deskRoleUser)
            .SelectList(list => list
                        // Mappatura degli oggetti DeskDocumentEndorsment
                        .Select(x => x.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(() => deskRoleUser.AccountName).WithAlias(() => deskEndorsment.AccountName));

            return(queryOver);
        }
예제 #6
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);
        }
        /// <summary>
        /// Inserisce una nuova approvazione o un nuovo rifiuto per il documento specificato
        /// </summary>
        /// <param name="idDeskDocument"></param>
        /// <param name="version"></param>
        /// <param name="user"></param>
        /// <param name="approve">Se true approva il documento, se false lo rifiuta</param>
        public void AddApproveOrRefuse(Guid idDeskDocument, decimal version, DeskRoleUser user, bool approve)
        {
            DeskDocument            doc        = CurrentDeskDocumentFacade.GetById(idDeskDocument);
            DeskDocumentEndorsement endorsment = new DeskDocumentEndorsement();

            if (!doc.DeskDocumentVersions.Any(x => x.Version.Equals(version)))
            {
                throw new Exception("Nessuna versione presente per quanto specificato");
            }

            DeskDocumentVersion docVersion = doc.DeskDocumentVersions.Single(x => x.Version.Equals(version));

            endorsment.DeskDocumentVersion = docVersion;
            endorsment.DeskRoleUser        = user;
            endorsment.Endorsement         = approve;

            //Aggiungo il commento relativo all'approvazione
            string   authorName  = CommonUtil.GetInstance().UserDescription;
            DateTime approveDate = DateTime.Now;
            string   comment     = string.Empty;

            if (approve)
            {
                comment = string.Format(APPROVE_COMMENT_FORMAT, authorName, approveDate);
            }
            else
            {
                comment = string.Format(REFUSE_COMMENT_FORMAT, authorName, approveDate);
            }

            Save(ref endorsment);

            CurrentDeskStoryBoardFacade.AddCommentToStoryBoard(comment, authorName, approveDate, doc.Desk, user, docVersion);
            //Inserisco il log di approvazione
            CurrentDeskLogFacade.InsertLog(DeskLogType.Approve, comment, doc.Desk, SeverityLog.Info);
        }
        /// <summary>
        /// Aggiunge una nuova versione del documento.
        /// Viene richiamata successivamente al checkin del file.
        /// </summary>
        /// <param name="idDeskDocument"></param>
        /// <param name="idBiblosDocument"></param>
        /// <param name="version"></param>
        public DeskDocumentVersion InsertDocumentVersion(Guid idBiblosDocument, decimal version, DeskDocument deskDocument)
        {
            DeskDocumentVersion documentVersion = new DeskDocumentVersion(_userName)
            {
                DeskDocument = deskDocument,
                Version      = version,
            };

            Save(ref documentVersion);
            return(documentVersion);
        }