public void Create(DalUser entity)
 {
     var user = entity.ToUser();
     user.Roles = user.Roles.Select(t => _dbContext.Set<Role>().Find(t.RoleId)).ToList();
     AttachRoles(user.Roles);
     _dbContext.Set<User>().Add(user);
 }
        public void Update(DalUser entity)
        {
            var updatedUser = entity.ToUser();
            var existedUser = _dbContext.Entry<User>(_dbContext.Set<User>().Find(updatedUser.UserId));
            if (existedUser == null)
            {
                return;
            }
            existedUser.State = EntityState.Modified;
            existedUser.Collection(u => u.Roles).Load();

            existedUser.Entity.Roles.Clear();

            foreach (Role role in updatedUser.Roles)
            {
                var loaded = _dbContext.Set<Role>().Find(role.RoleId);
                existedUser.Entity.Roles.Add(loaded);
            }

            existedUser.Entity.BlockReason = entity.BlockReason;
            existedUser.Entity.BlockTime = entity.BlockTime;
            existedUser.Entity.IsBlocked = entity.IsBlocked;
            existedUser.Entity.Photo = entity.Photo;
            existedUser.Entity.Login = entity.Login;
            existedUser.Entity.Email = entity.Email;
            existedUser.Entity.Password = entity.Password;
        }
        public void Delete(DalUser entity)
        {
            var user = entity.ToUser();
            user.Roles = _roleRepository.GetRolesByUserId(user.UserId).ToRoleCollection();
            user = _dbContext.Set<User>().Single(u => u.UserId == user.UserId);

            _dbContext.Set<User>().Remove(user);
        }