private bool IsReadyForLevel(CascadeLevel nextLevel, CascadeLevel curentLevel) { if (curentLevel == null) { return(true); } if (curentLevel.TriggeredAt != null) { return(curentLevel.TriggeredAt.Value.Add(nextLevel.Delay) <= DateTime.Now); } return(false); }
private List <Workplace> GetResponsibles(CascadeLevel nextLevel, Assignment overdueAssignment) { var responsibles = new List <Workplace>(); if (nextLevel.HeadLevel == 0) { responsibles.Add(nextLevel.Responsible); } else { var overdueResponsibles = overdueAssignment.WayPoints.Where(x => !x.IsClosed).Select(x => x.ToWorkplace); foreach (var overdueResponsible in overdueResponsibles) { var head = _structuralUnitService.GetHeadOfLevel(_structuralUnitService.GetForWorkplace(overdueResponsible), nextLevel.HeadLevel); responsibles.Add(head); } } return(responsibles); }
private void SendNotification(CascadeLevel nextLevel, Assignment overdueAssignment) { if (nextLevel.NotificationTypes.HasFlag(NotificationTypes.None)) { return; } var responsibles = GetResponsibles(nextLevel, overdueAssignment); foreach (NotificationTypes value in Enum.GetValues(nextLevel.NotificationTypes.GetType())) { if (nextLevel.NotificationTypes.HasFlag(value)) { var text = $"Просрочено поручение { GetAssignmentUri(overdueAssignment) }"; foreach (var responsible in responsibles) { switch (value) { case NotificationTypes.Assignment: { _assignmentCascadeNotifier.Notify(text, responsible); break; } case NotificationTypes.Email: { _emailCascadeNotifier.Notify(text, responsible.Owner.Email); break; } case NotificationTypes.Sms: { _smsCascadeNotifier.Notify(text, responsible.Owner.Phone); break; } } } } } }
/// <summary> /// Executes the ISO 14443-3 SELECT command against the currently selected card. /// </summary> /// <returns>The Select AcKnowledge value.</returns> /// <remarks> /// This command requires that the SupportsLowLevelCommands value is true. /// </remarks> public virtual Sak DoSelect(CascadeLevel level, byte[] uid) { throw new ReaderException(@"Low-level ISO-14443-A command against the currently selected card not supported by this reader."); }