Ejemplo n.º 1
0
 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);
 }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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;
                        }
                        }
                    }
                }
            }
        }
Ejemplo n.º 4
0
 /// <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.");
 }