/// <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); }