public static void SetRightsOnDocument(IMeeting meeting, IElectronicDocument document) { if (meeting == null) { return; } var secretary = meeting.Secretary; if (secretary != null && !document.AccessRights.IsGrantedDirectly(DefaultAccessRightsTypes.Change, secretary)) { document.AccessRights.Grant(secretary, DefaultAccessRightsTypes.Change); } var president = meeting.President; if (president != null && !document.AccessRights.IsGrantedDirectly(DefaultAccessRightsTypes.Change, president)) { document.AccessRights.Grant(president, DefaultAccessRightsTypes.Change); } var members = meeting.Members.Select(m => m.Member).ToList(); foreach (var member in members) { if (!document.AccessRights.IsGrantedDirectly(DefaultAccessRightsTypes.Read, member)) { document.AccessRights.Grant(member, DefaultAccessRightsTypes.Read); } } }
/// <summary> /// Получить последнего утвердившего документ. /// </summary> /// <param name="document">Документ.</param> /// <returns>Подписавший.</returns> public static IEmployee GetDocumentLastApprover(IElectronicDocument document) { return(Employees.As(Signatures.Get(document.LastVersion) .Where(s => s.SignatureType == SignatureType.Approval) .OrderByDescending(s => s.SigningDate) .Select(s => s.Signatory) .FirstOrDefault())); }
/// <summary> /// Построить модель состояния процесса ознакомления. /// </summary> /// <param name="document">Документ.</param> /// <returns>Схема модели состояния.</returns> public Sungero.Core.StateView GetStateView(IElectronicDocument document) { if (_obj.DocumentGroup.OfficialDocuments.Any(d => Equals(document, d)) || _obj.AddendaGroup.OfficialDocuments.Any(d => Equals(document, d))) { return(this.GetStateView()); } else { return(StateView.Create()); } }
/// <summary> /// Сохранить номер версии и хеш документа в задаче. /// </summary> /// <param name="document">Документ.</param> /// <param name="isMainDocument">Признак главного документа.</param> public void StoreAcquaintanceVersion(IElectronicDocument document, bool isMainDocument) { var lastVersion = document.LastVersion; var mainDocumentVersion = _obj.AcquaintanceVersions.AddNew(); mainDocumentVersion.IsMainDocument = isMainDocument; mainDocumentVersion.DocumentId = document.Id; if (lastVersion != null) { mainDocumentVersion.Number = lastVersion.Number; mainDocumentVersion.Hash = lastVersion.Body.Hash; } else { mainDocumentVersion.Number = 0; mainDocumentVersion.Hash = null; } }
/// <summary> /// Сохранить номер версии и хеш документа в задании. /// </summary> /// <param name="document">Документ.</param> /// <param name="isMainDocument">Признак главного документа.</param> /// <param name="mainDocumentTaskVersionNumber">Номер версии основного документа в задаче.</param> public void StoreAcquaintanceVersion(IElectronicDocument document, bool isMainDocument, int?mainDocumentTaskVersionNumber) { var acqTaskVersion = document.LastVersion; if (mainDocumentTaskVersionNumber != null) { acqTaskVersion = document.Versions.FirstOrDefault(v => v.Number == mainDocumentTaskVersionNumber); } var mainDocumentVersion = _obj.AcquaintanceVersions.AddNew(); mainDocumentVersion.IsMainDocument = isMainDocument; mainDocumentVersion.DocumentId = document.Id; if (acqTaskVersion != null) { mainDocumentVersion.Number = acqTaskVersion.Number; mainDocumentVersion.Hash = acqTaskVersion.Body.Hash; } else { mainDocumentVersion.Number = 0; mainDocumentVersion.Hash = null; } }
public static void SynchronizeAddendaAndAttachmentsGroup(Sungero.Workflow.Interfaces.IWorkflowEntityAttachmentGroup group, IElectronicDocument document) { if (document == null) { foreach (var addendum in group.All) { group.All.Remove(addendum); } return; } var documentAddenda = document.Relations.GetRelated(Docflow.Constants.Module.AddendumRelationName); foreach (var addendum in group.All.Select(e => ElectronicDocuments.As(e)).Where(d => d != null && !documentAddenda.Contains(d))) { group.All.Remove(addendum); } var newAddenda = documentAddenda.Where(d => !group.All.Contains(d)).ToList(); foreach (var addendum in newAddenda) { group.All.Add(addendum); } }