public List<TrialBlock> userBlocks(User current)
 {
     DataClasses1DataContext database = new DataClasses1DataContext();
     return (from t in database.TrialBlocks
             where (t.UserID == current.ID)
             select t).ToList();
 }
        public bool? allowTrial(User current)
        {
            //database.Refresh(refresh_mode, current);
            StudiesUser currentStudy = studiesUserFromUser(current);
            if (currentStudy.TrialType.Name == "Completed") return null;

            DateTime today = DateTime.Now.Date;

            List<TrialBlock> blocks = userBlocks(current);
            TrialBlock last = null;
            if (blocks.Count > 0) last = blocks[0];
            List<TrialBlock> todaysBlocks = new List<TrialBlock>();
            foreach (TrialBlock t in blocks)
            {
                if (today == t.StartTime.Date) todaysBlocks.Add(t);
                if (DateTime.Compare(t.StartTime, last.StartTime) > 0) last = t;
            }
            //none performed yet
            if (last == null) return true;
            //none today, and less than min wait since the last
            if ( (DateTime.Compare(today, last.StartTime.Date) > 0) && ((DateTime.Now - last.StartTime) > currentStudy.Study.getWaitTime())) return true;
            //fewer than 2 today
            if ( todaysBlocks.Count < 2) return true;
            //otherwise two have been performed today or not enough time since previous day
            return false;
        }
 public List<Word> testList(User requested)
 {
     //database.Refresh(refresh_mode, requested);
     StudiesUser current = studiesUserFromUser(requested);
     List<Word> list = getWordList(current.WordListID, current.WordSublistID, current.Mix);
     return list;
 }
 public String testType(User requested)
 {
     //database.Refresh(refresh_mode, requested);
     return studiesUserFromUser(requested).TrialType.Name;
 }
 public int studyIDFromUser(User requested)
 {
     DataClasses1DataContext database = new DataClasses1DataContext();
     return (from su in requested.StudiesUsers
             join st in database.Studies
             on su.StudyID equals st.ID
             select st.ID).Single();
 }
 public StudiesUser studiesUserFromUser(User requested)
 {
     DataClasses1DataContext database = new DataClasses1DataContext();
     return (from su in database.StudiesUsers
             join s in database.Studies
             on su.StudyID equals s.ID
             where (su.UserID == requested.ID)
             select su).SingleOrDefault();
 }
 public bool receiveSoundFeedback(User current)
 {
     //database.Refresh(refresh_mode, current);
     StudiesUser su = studiesUserFromUser(current);
     bool startControl = su.StudyUserGroup.StartControl;
     if (su.StudyUserGroup.FirstListID == su.WordListID)
         return startControl;
     else return !startControl;
 }
 public User createUser(string userName, bool userActive, string userPassword)
 {
     DataClasses1DataContext database = new DataClasses1DataContext();
     User newUser = new User();
     newUser.Username = userName;
     newUser.Salt = getSalt();
     newUser.PassHash = hashPass(userPassword, newUser.Salt);
     newUser.Active = userActive;
     database.Users.InsertOnSubmit(newUser);
     database.SubmitChanges();
     return newUser;
 }
        public async Task<ActionResult> Register(RegisterViewModel model)
        {
            if (ModelState.IsValid)
            {
                // Create a local login before signing in the user
                var user = new User(model.UserName);
                var result = await IdentityManager.Users.CreateLocalUserAsync(user, model.Password);
                if (result.Success)
                {
                    await IdentityManager.Authentication.SignInAsync(AuthenticationManager, user.Id, isPersistent: false);
                    return RedirectToAction("Index", "Home");
                }
                else
                {
                    AddErrors(result);
                }
            }

            // If we got this far, something failed, redisplay form
            return View(model);
        }