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); }
/// <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); }
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>()); }
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); }
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); }
/// <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); }