//todo change method name and return type

        /* public async Task<List<User>> GetAllAdUsers()
         * {
         *   var token = await AppAuthenticationAsync();
         *   //var token = await HttpAppAuthenticationAsync();
         *
         *   using (var client = new HttpClient())
         *   {
         *       client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
         *       var allUsers = await client.GetStringAsync("https://graph.microsoft.com/v1.0/users?&$filter=accountEnabled eq true");
         *       var result = JsonConvert.DeserializeObject<RootObject>(allUsers);
         *       return result.Users;
         *   }
         * }*/

        public async Task StoreAdUSersInTable()
        {
            var token = await AppAuthenticationAsync();

            //var token = await HttpAppAuthenticationAsync();
            using (var client = new HttpClient())
            {
                client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
                var allUsers =
                    await client.GetStringAsync(
                        "https://graph.microsoft.com/v1.0/users?&$filter=accountEnabled eq true");

                var result = JsonConvert.DeserializeObject <RootObject>(allUsers);
                foreach (var user in result.Users)
                {
                    var activeDirectoryUserManager = await GetActiveDirectoryUserManager(user.userPrincipalName);

                    if (result.Users.Any(p => p.id == activeDirectoryUserManager.id))
                    {
                        user.Manager = activeDirectoryUserManager;
                    }
                }
                var activeDirectoryUserViewModels = new List <ActiveDirectoryUser>();
                activeDirectoryUserViewModels.AddRange(result.Users.Select(p =>
                                                                           AutoMapper.Mapper.Map <ActiveDirectoryUser>(p)));
                var activeDirectoryUserDa = new ActiveDirectoryUserDa();
                activeDirectoryUserViewModels.ForEach(p => p.ManagerId = null);
                //remove previous all ad users from table
                activeDirectoryUserDa.RemoveAllActiveDirectoryUsers();
                activeDirectoryUserDa.AddActiveDirectoryUsers(activeDirectoryUserViewModels);
            }
        }
 public AppraisalSeasonController()
 {
     _appraisalSeasonDa     = new AppraisalSeasonDA();
     _pcAssociateDa         = new PCAssociatesDA();
     _activeDirectory       = new ActiveDirectory();
     _notificationService   = new NotificationService();
     _activeDirectoryUserDa = new ActiveDirectoryUserDa();
 }