public async Task <Tuple <AgentViewModel, bool> > GetBlockUnblock(IEntryAgentsUser user, string userName)
        {
            var agent = await _repository.AgentData.GetByUserName(userName);

            var isBlocked = await _repository.AgentIdentity.BlockUnblock(agent);

            return(new Tuple <AgentViewModel, bool>(agent, isBlocked));
        }
        public async Task <List <AgentViewModel> > List(IEntryAgentsUser user, string searchTerm, int agentPage)
        {
            var pagedResult = await _repository.AgentData
                              .GetAll()
                              .FilterByNameOrEmail(searchTerm)
                              .TakePageAsync(agentPage, EntryAgentsConfig.DefaultPageSize);

            var result = (await pagedResult.items.ToDetailsViewModel(_userManager))
                         .ToPagedListViewModel(agentPage, EntryAgentsConfig.DefaultPageSize, pagedResult.count);
        }
        public async Task <AgentDetailsViewModel> GetDetailsModel(IEntryAgentsUser user, string userName)
        {
            var agent = await _repository.AgentData.GetByUserName(userName);

            agent.Applications = await _repository.ApplicationData.GetAgentApplications(agent).ToListAsync();

            var result = await agent.ToDetailsViewModel(_userManager);

            return(result);
        }
        public async Task <List <StudentViewModel> > SearchStudents(IEntryAgentsUser user, string searchTerm, string applicationStatus, int studentPage)
        {
            var agent = await _userManager.GetUserAsync(user.Principle);

            var agentStudents = await _agentStudentService.GetAgentStudents(agent);

            var filteredStudents =
                await agentStudents.FilterByApplicationStatus(applicationStatus)
                .FilterByNameOrEmail(searchTerm)
                .GetLastTen()
                .ToListAsync();

            var result = filteredStudents.ToStudentDetailsViewModels(_environment);
        }
        public async Task SetupAccount(IEntryAgentsUser user, AgentSetupAccountViewModel agentSetupAccountViewModel)
        {
            var agent = await _agentManager.Edit(user.UserName, agentSetupAccountViewModel);

            // TODO: update email after verification
            // TODO: update username
            // https://stackoverflow.com/questions/36367140/aspnet-core-generate-and-change-email-address
            if (agent.Email != agentSetupAccountViewModel.Email)
            {
                agent.Email    = agentSetupAccountViewModel.Email;
                agent.UserName = agentSetupAccountViewModel.Email;
                await _userManager.UpdateAsync(agent);

                await _signInManager.RefreshSignInAsync(agent);

                //await _signInManager.SignInAsync(agent, true);
                //var token = await _userManager.GenerateChangeEmailTokenAsync(agent, agentSetupAccountViewModel.Email);
                //await _userManager.ChangeEmailAsync(agent, agentSetupAccountViewModel.Email, token);
            }
        }
        public async Task <AgentSetupAccountViewModel> GetSetupAccountViewModel(IEntryAgentsUser user)
        {
            var result = await _agentManager.GetSetupAccountViewModel(user.UserName);

            return(result);
        }
 public async Task Update(IEntryAgentsUser user, string userName, AgentSetupAccountViewModel agentSetupAccountViewModel)
 {
     await _agentManager.Edit(userName, agentSetupAccountViewModel);
 }