private void _deleteASignatureStep(object obj) { // Delete step SignatureSettingViewModel stepRemove = (SignatureSettingViewModel)obj; if (MessageBox.Show("Delete step " + stepRemove.StepCounter.ToString() + " in signature calculation: " + stepRemove.SignatureName + "?", "Warning!", MessageBoxButtons.OKCancel) == DialogResult.OK) { // Try to delete current step try { SignatureSettings.Remove(stepRemove); foreach (var step in SignatureSettings) { if (step.StepCounter > stepRemove.StepCounter) { step.StepCounter -= 1; } } Model.SignatureSettings.Remove(stepRemove.Model); } catch (Exception) { MessageBox.Show("Error deleting step"); } // Select a different step? if (SelectedStep != null) { SelectedStep.IsSelected = false; SelectedStep = null; } } }
public static IQueryable <ISignatureSetting> GetSignatureSettings(List <IBusinessUnit> businessUnits, List <IDocumentKind> kinds) { var today = Calendar.UserToday; return(SignatureSettings.GetAll() .Where(s => s.Status == CoreEntities.DatabookEntry.Status.Active) .Where(s => !s.BusinessUnits.Any() || !businessUnits.Any() || s.BusinessUnits.Any(k => businessUnits.Contains(k.BusinessUnit))) .Where(s => !s.DocumentKinds.Any() || !kinds.Any() || s.DocumentKinds.Any(k => kinds.Contains(k.DocumentKind))) .Where(s => (!s.ValidFrom.HasValue || s.ValidFrom.Value <= today) && (!s.ValidTill.HasValue || s.ValidTill.Value >= today))); }
private void _addASignatureStep(object obj) { var sig = ((SignatureCalMenu)obj).Signature; var newSig = new SignatureSettingViewModel(sig); newSig.WindowOverlapStr = WindowOverlapStr; newSig.WindowSizeStr = WindowSizeStr; newSig.StepCounter = SignatureSettings.Count + 1; newSig.ThisStepInputsGroupedByType = new SignalTree("Step " + newSig.StepCounter.ToString() + " _ " + newSig.SignatureName); newSig.ThisStepOutputsGroupedByPMU = new SignalTree("Step " + newSig.StepCounter.ToString() + " _ " + newSig.SignatureName); SampleDataMngr.GroupedSignalBySignatureStepsInput.Add(newSig.ThisStepInputsGroupedByType); SignatureSettings.Add(newSig); Model.SignatureSettings.Add(newSig.Model); _signatureStepSelected(newSig); }
public virtual void UpdateSigningRole(bool beforeDelete) { var role = Roles.GetAll(r => r.Sid == Constants.Module.RoleGuid.SigningRole).Single(); var closed = beforeDelete || _obj.Status == CoreEntities.DatabookEntry.Status.Closed; IRecipient oldMember = null; if (closed) { oldMember = _obj.Recipient; } if (!closed && !Equals(_obj.Recipient, _obj.State.Properties.Recipient.OriginalValue)) { oldMember = _obj.State.Properties.Recipient.OriginalValue; } if (!closed && _obj.ValidTill != null && _obj.ValidTill < Calendar.GetUserToday(_obj.Recipient)) { oldMember = _obj.Recipient; closed = true; } // Удалить подписывающего из роли, если у него больше нет активного права подписи. if (oldMember != null) { var recipientToday = Calendar.GetUserToday(oldMember); var activeSetting = SignatureSettings .GetAll(ss => !Equals(ss, _obj) && ss.Status == CoreEntities.DatabookEntry.Status.Active) .Where(ss => Equals(ss.Recipient, oldMember) && !Equals(ss, _obj)) .Where(ss => ss.ValidTill == null || ss.ValidTill >= recipientToday); if (!activeSetting.Any()) { foreach (var link in role.RecipientLinks.Where(l => Equals(l.Member, oldMember)).ToList()) { role.RecipientLinks.Remove(link); } } } // Добавить подписывающего в роль. if (!closed) { if (!role.RecipientLinks.Any(r => Equals(r.Member, _obj.Recipient))) { role.RecipientLinks.AddNew().Member = _obj.Recipient; } } }
public static void UpdateBusinessUnitSetting(Company.IBusinessUnit unit) { var settings = SignatureSettings.GetAll() .Where(s => s.IsSystem == true && s.Status == CoreEntities.DatabookEntry.Status.Active && s.BusinessUnits.Any(u => Equals(u.BusinessUnit, unit))) .ToList(); if (settings.Count > 2) { Logger.DebugFormat("UpdateBusinessUnitSetting: Has {0} SignatureSettings for BusinessUnit {1}. Must have max 2.", settings.Count, unit.Id); } var isCeoChanged = !Equals(unit.State.Properties.CEO.OriginalValue, unit.CEO); if (unit.CEO != null && unit.Status == CoreEntities.DatabookEntry.Status.Active && isCeoChanged && (!settings.Any() || !settings.Any(s => Equals(s.Recipient, unit.CEO)))) { var setting = SignatureSettings.Create(); setting.BusinessUnits.AddNew().BusinessUnit = unit; setting.Recipient = unit.CEO; setting.Reason = Docflow.SignatureSetting.Reason.Duties; setting.IsSystem = true; setting.Note = SignatureSettings.Resources.DefaultSignatureSettingNote; } if (settings.Any(s => Equals(s.Recipient, unit.CEO)) && unit.Status == CoreEntities.DatabookEntry.Status.Active) { foreach (var setting in settings.Where(s => Equals(s.Recipient, unit.CEO))) { Sungero.Docflow.PublicFunctions.SignatureSetting.UpdateSigningRole(setting, false); } } var oldSettings = settings; if (unit.Status == CoreEntities.DatabookEntry.Status.Active) { oldSettings = oldSettings.Where(s => !Equals(s.Recipient, unit.CEO)).ToList(); } foreach (var setting in oldSettings) { setting.Status = CoreEntities.DatabookEntry.Status.Closed; } }
public static IQueryable <ISignatureSetting> GetSignatureSettingsByDocumentKind(IDocumentKind documentKind) { return(SignatureSettings.GetAll(s => s.Status == Docflow.SignatureSetting.Status.Active) .Where(s => s.DocumentKinds.Any(k => k.DocumentKind.Id == documentKind.Id))); }