/// <summary>
        /// add users whome first sms was sent
        /// </summary>
        /// <param name="agents"></param>
        /// <returns></returns>
        public TimeSpan AddAgentsInSmsQueue(IEnumerable <AgentActivityDTO> agents)
        {
            TimeSpan time = new TimeSpan(0);

            if (!agents.IsNullOrEmpty())
            {
                HashSet <Guid> userIds           = new HashSet <Guid>(agents.Select(x => x.UserId));
                HashSet <Guid> allUserIdsInQueue = new HashSet <Guid>(context.SMSSendingQueue.Select(x => x.UserId).Distinct().ToArray());
                HashSet <Guid> userIdsNotInQueue = new HashSet <Guid>();
                if (userIds.Any(x => !allUserIdsInQueue.Contains(x)))
                {
                    userIdsNotInQueue = new HashSet <Guid>(userIds.Where(x => !allUserIdsInQueue.Contains(x)));
                }


                if (!userIdsNotInQueue.IsNullOrEmpty())
                {
                    time = DateTime.Now.TimeOfDay;

                    foreach (var userId in userIdsNotInQueue)
                    {
                        SMSSendingQueue dbEntry = new SMSSendingQueue()
                        {
                            UserId = userId
                        };
                        dbEntry.TimeFirstSmsSent = time;
                        SetEntityStateAdded <SMSSendingQueue>(dbEntry);
                    }
                }

                context.SaveChanges();
            }

            return(time);
        }
        /// <summary>
        /// udate users whome second sms was sent
        /// </summary>
        /// <param name="agents"></param>
        /// <returns></returns>
        public TimeSpan UpdateAgentsInSmsQueue(IEnumerable <AgentActivityDTO> agents)
        {
            TimeSpan time = new TimeSpan(0);

            var agentActivityDtos = agents as AgentActivityDTO[] ?? agents.ToArray();

            if (!agentActivityDtos.IsNullOrEmpty())
            {
                HashSet <Guid> userIds           = new HashSet <Guid>(agentActivityDtos.Select(x => x.UserId));
                HashSet <Guid> allUserIdsInQueue = new HashSet <Guid>(context.SMSSendingQueue.Select(x => x.UserId).Distinct());
                HashSet <Guid> userIdsInQueue    = new HashSet <Guid>();
                if (userIds.Any(x => allUserIdsInQueue.Contains(x)))
                {
                    userIdsInQueue = new HashSet <Guid>(userIds.Where(x => allUserIdsInQueue.Contains(x)));
                }

                time = DateTime.Now.TimeOfDay;

                if (!userIdsInQueue.IsNullOrEmpty())
                {
                    foreach (var userId in userIdsInQueue)
                    {
                        SMSSendingQueue dbEntry = context.SMSSendingQueue.FirstOrDefault(x => x.UserId == userId);
                        if (dbEntry != null)
                        {
                            dbEntry.TimeSecondSmsSent = time;
                            SetEntityStateModified <SMSSendingQueue>(dbEntry);
                        }
                    }
                }

                context.SaveChanges();
            }

            return(time);
        }