public void SendEmail(List <UserProfile> users)
        {
            using (var context = new emailSchedulerEntities())
            {
                foreach (var item in users)
                {
                    var userProfile = context.UserProfiles.Where(x => x.id == item.id).FirstOrDefault();

                    if (userProfile.Status == Status.Active.ToString("G") &&
                        (DateTime.Now.Date - userProfile.LastEmailSent.Value).TotalDays >= activeDaysLimit)
                    {
                        email.Send();
                        userProfile.LastEmailSent = DateTime.Now.Date;
                    }

                    if (userProfile.Status == Status.NotResponsive.ToString("G") &&
                        (DateTime.Now.Date - userProfile.LastEmailSent.Value).TotalDays > notResponsiveDaysLimit)
                    {
                        email.Send();
                        userProfile.LastEmailSent = DateTime.Now.Date;
                    }
                }
                context.SaveChanges();
            }
        }
        public void UpdateUserState()
        {
            using (var context = new emailSchedulerEntities())
            {
                var usersList = context.UserProfiles.Select(x => x).ToList();

                UpdatedUserStates(usersList, context);
            }
        }
 public List <UserProfile> GetUsers()
 {
     using (var context = new emailSchedulerEntities())
     {
         var result = (from p in context.UserProfiles
                       select p).ToList();
         return(result);
     }
 }
        private void UpdatedUserStates(List <UserProfile> users, emailSchedulerEntities context)
        {
            foreach (var item in users)
            {
                if (item.Status == Status.Active.ToString("G") &&
                    (DateTime.Now.Date - item.LastLogin.Value.Date).TotalDays > activeToNotResponsive)
                {
                    item.Status = Status.NotResponsive.ToString("G");
                }

                if (item.Status == Status.NotResponsive.ToString("G") &&
                    (DateTime.Now.Date - item.LastLogin.Value.Date).TotalDays > notResponsiveToInavtive)
                {
                    item.Status = Status.InAvtive.ToString("G");
                }

                if (item.Status == Status.NotResponsive.ToString("G") &&
                    (DateTime.Now.Date - item.LastLogin.Value.Date).TotalDays < notResponsiveToActivate)
                {
                    item.Status = Status.Active.ToString("G");
                }
            }
            context.SaveChanges();
        }