public void Create(DalUser e)
 {
     if (context.Database.Connection.State != ConnectionState.Open)
         context.Database.Connection.Open();
     Users user = new Users()
     {
         Login = e.Login,
         Email = e.Email,
         PasswordHash = e.PasswordHash,
         FirstName = e.FirstName,
         SecondName = e.SecondName,
         ThirdName = e.ThirdName
     };
     context.Set<Users>().Add(user);
 }
 public DalUsersTest GetLastResult(DalUser user)
 {
     if (context.Database.Connection.State != ConnectionState.Open)
         context.Database.Connection.Open();
     UsersTests result = context.Set<UsersTests>().Where(tests =>
         tests.UserId == user.Id).OrderByDescending(tests => tests.BeginningTime).FirstOrDefault();
     return new DalUsersTest()
     {
         BeginningTime = result.BeginningTime,
         EndingTime = result.EndingTime,
         Id = result.id,
         MarkForTest = result.MarkForTest,
         RightAnswersCount = result.RightAnswersCount,
         TestId = result.TestId,
         UserId = result.UserId
     };
 }
 public void FinishTest(DalUser user)
 {
     if (!IsUserTested(user))
         return;
     Users ormuser = context.Set<Users>().FirstOrDefault(users => users.id == user.Id);
     UsersTests ormutest = context.Set<UsersTests>().FirstOrDefault(tests => 
         tests.UserId == user.Id
         && tests.EndingTime == null);
     Tests ormtest = context.Set<Tests>().FirstOrDefault(tests => tests.id == ormutest.TestId);
     //marks and other stuff will be in bll
     ormutest.EndingTime = DateTime.Now;
     
 }
 public void StartTest(DalUser user, DalTest test)
 {
     if (IsUserTested(user))
         return;
     Users ormuser = context.Set<Users>().FirstOrDefault(users => users.id == user.Id);        
     Tests ormtest = context.Set<Tests>().FirstOrDefault(tests => tests.id == test.Id);
     UsersTests startingTest = new UsersTests()
     {
         TestId = ormtest.id,
         BeginningTime = DateTime.Now,
         EndingTime = null,
         MarkForTest = null,
         RightAnswersCount = null,
         UserId = ormuser.id
     };
     context.Set<UsersTests>().Add(startingTest);
 }
 public bool IsUserTested(DalUser user)
 {
     if (context.Database.Connection.State != ConnectionState.Open)
         context.Database.Connection.Open();
     return context.Set<UsersTests>().Any(tests =>
         tests.EndingTime == null
         && tests.UserId == user.Id);
 }
 public void SetCoauthor(DalUser user, DalTest test)
 {
     context.Database.Connection.Open();
     Users ormuser = context.Set<Users>().FirstOrDefault(users => users.id == user.Id);
     Tests ormtest = context.Set<Tests>().FirstOrDefault(tests => tests.id == test.Id);
     ormtest.CoAuthors.Add(ormuser);
 }
 public bool AllowedUser(DalTest test, DalUser user)
 {
     if (context.Database.Connection.State != ConnectionState.Open)
         context.Database.Connection.Open();
     Users ormuser = context.Set<Users>().FirstOrDefault(users => users.id == user.Id);
     Tests ormtest = context.Set<Tests>().FirstOrDefault(tests => tests.id == test.Id);
     return ormtest.AllowedUsers.Contains(ormuser);
 //    return context.Set<Tests>().Any(t => t.AllowedUsers.Contains(ormuser)) && t.id == test.Id);
 }
 public IEnumerable<DalTest> GetByAuthor(DalUser user)
 {
     if (context.Database.Connection.State != ConnectionState.Open)
         context.Database.Connection.Open();
     IEnumerable<Tests> tests = context.Set<Tests>().Where(t => t.AuthorId == user.Id).AsEnumerable();
     List<DalTest> result = new List<DalTest>();
     foreach (Tests test in tests)
     {
         result.Add(new DalTest()
         {
             Id = test.id,
             AuthorId = test.AuthorId,
             Name = test.Name,
             Description = test.Description,
             AllowedTime = test.AllowedTime,
             Anonymous = test.Anonymous,
             CreationDate = test.CreationDate,
             GlobalAvailability = test.GlobalAvailability,
             Interview = test.Interview,
             QuestionCount = test.QuestionCount
         });
     }
     return result;
 }
 public IEnumerable<DalRole> GetUsersRoles(DalUser user)
 {
     if (context.Database.Connection.State != ConnectionState.Open)
         context.Database.Connection.Open();
     return context.Set<Roles>().
         Where(role => role.Users.Any(users => users.id == user.Id))
         .AsEnumerable()
         .Select(roles => new DalRole() {Id = roles.id, Name = roles.Name});
 }
 public void Update(DalUser entity)
 {
     if (context.Database.Connection.State != ConnectionState.Open)
         context.Database.Connection.Open();
     Users user = context.Set<Users>().FirstOrDefault(users => users.id == entity.Id);
     //check existing
     user.Login = entity.Login;
     user.Email = entity.Email;
     user.FirstName = entity.FirstName;
     user.SecondName = entity.SecondName;
     user.ThirdName = entity.ThirdName;
     user.PasswordHash = entity.PasswordHash;
 }
 public void Delete(DalUser e)
 {
     if (context.Database.Connection.State != ConnectionState.Open)
         context.Database.Connection.Open();
     Users user = context.Set<Users>().FirstOrDefault(users => users.id == e.Id);
     context.Set<Users>().Remove(user);
 }
 public void SetRole(DalUser user, DalRole role)
 {
     if (context.Database.Connection.State != ConnectionState.Open)
         context.Database.Connection.Open();
     Users ormuser = context.Set<Users>().FirstOrDefault(users => users.id == user.Id);
     Roles ormrole = context.Set<Roles>().FirstOrDefault(roles => roles.id == role.Id);
     ormuser.Roles.Add(ormrole);
 }