public bool Create(RepositoryModel model)
        {
            if (model == null) throw new ArgumentException("model");
            if (model.Name == null) throw new ArgumentException("name");

            using (var database = new DataEntities())
            {
                var repository = new Repository
                {
                    Name = model.Name,
                    Description = model.Description,
                    Anonymous = model.AnonymousAccess,
                };
                database.AddToRepository(repository);
                AddMembers(model.Users, model.Administrators, model.Teams, repository, database);
                try
                {
                    database.SaveChanges();
                }
                catch (UpdateException)
                {
                    return false;
                }
            }

            return true;
        }
        public bool Create(TeamModel model)
        {
            if (model == null) throw new ArgumentException("team");
            if (model.Name == null) throw new ArgumentException("name");

            using (var database = new DataEntities())
            {
                var team = new Team
                {
                    Name = model.Name,
                    Description = model.Description
                };
                database.AddToTeam(team);
                if (model.Members != null)
                {
                    AddMembers(model.Members, team, database);
                }
                try
                {
                    database.SaveChanges();
                }
                catch (UpdateException)
                {
                    return false;
                }
            }

            return true;
        }
        public bool CreateUser(string username, string password, string name, string surname, string email)
        {
            if (String.IsNullOrEmpty(username)) throw new ArgumentException("Value cannot be null or empty.", "userName");
            if (String.IsNullOrEmpty(password)) throw new ArgumentException("Value cannot be null or empty.", "password");
            if (String.IsNullOrEmpty(name)) throw new ArgumentException("Value cannot be null or empty.", "name");
            if (String.IsNullOrEmpty(surname)) throw new ArgumentException("Value cannot be null or empty.", "surname");
            if (String.IsNullOrEmpty(email)) throw new ArgumentException("Value cannot be null or empty.", "email");

            using (var database = new DataEntities())
            {
                var user = new User
                {
                    Username = username,
                    Password = EncryptPassword(password),
                    Name = name,
                    Surname = surname,
                    Email = email,
                };
                database.AddToUser(user);
                try
                {
                    database.SaveChanges();
                }
                catch (UpdateException)
                {
                    return false;
                }
            }

            return true;
        }
 public IList<UserModel> GetAllUsers()
 {
     using (var db = new DataEntities())
     {
         return db.User.Include("Roles")
             .Select(this.CreateViewModel)
             .ToList();
     }
 }
 public override void CreateRole(string roleName)
 {
     using (var database = new DataEntities())
     {
         database.AddToRole(new Role
         {
             Name = roleName,
         });
     }
 }
 public IList<TeamModel> GetAllTeams()
 {
     using (var db = new DataEntities())
     {
         return db.Team.Include("Members")
             .Include("Repositories")
             .Select(this.CreateViewModel)
             .ToList();
     }
 }
 public IList<Models.RepositoryModel> GetAllRepositories()
 {
     using (var db = new DataEntities())
     {
         return db.Repository.Include("Users")
             .Include("Administrators")
             .Include("Teams")
             .Select(this.ConvertToModel)
             .ToList();
     }
 }
        public UserModel GetUser(string username)
        {
            if (String.IsNullOrEmpty(username)) throw new ArgumentException("Value cannot be null or empty.", "userName");

            using (var db = new DataEntities())
            {
                return db.User.Include("Roles")
                    .Where(user => user.Username == username)
                    .Select(this.CreateViewModel)
                    .FirstOrDefault();
            }
        }
 public IList<Models.RepositoryModel> GetAllRepositories()
 {
     using (var db = new DataEntities())
     {
         var result = new List<RepositoryModel>();
         foreach (var item in db.Repository)
         {
             result.Add(ConvertToModel(item));
         }
         return result;
     }
 }
        public TeamModel GetTeam(string name)
        {
            if (name == null) throw new ArgumentException("name");

            using (var db = new DataEntities())
            {
                return db.Team.Include("Members")
                    .Include("Repositories")
                    .Where(team => team.Name == name)
                    .Select(this.CreateViewModel)
                    .FirstOrDefault();
            }
        }
        public IList<RepositoryModel> GetAdministratedRepositories(string username)
        {
            if (username == null) throw new ArgumentException("username");

            using (var db = new DataEntities())
            {
                return db.Repository.Include("Users")
                    .Include("Administrators")
                    .Include("Teams")
                    .Where(repo => repo.Administrators.Any(admin => admin.Name == username))
                    .Select(this.ConvertToModel)
                    .ToList();
            }
        }
        public TeamModel GetTeam(string name)
        {
            if (name == null) throw new ArgumentException("name");

            using (var db = new DataEntities())
            {
                var team = db.Team.FirstOrDefault(i => i.Name == name);
                return team == null ? null : new TeamModel
                {
                    Name = team.Name,
                    Description = team.Description,
                    Members = team.Members.Select(m => m.Username).ToArray(),
                    Repositories = team.Repositories.Select(m => m.Name).ToArray(),
                };
            }
        }
 public void DeleteUser(string username)
 {
     using (var database = new DataEntities())
     {
         var user = database.User.FirstOrDefault(i => i.Username == username);
         if (user != null)
         {
             user.AdministratedRepositories.Clear();
             user.Roles.Clear();
             user.Repositories.Clear();
             user.Teams.Clear();
             database.DeleteObject(user);
             database.SaveChanges();
         }
     }
 }
        public void Delete(string name)
        {
            if (name == null) throw new ArgumentException("name");

            using (var db = new DataEntities())
            {
                var team = db.Team.FirstOrDefault(i => i.Name == name);
                if (team != null)
                {
                    team.Repositories.Clear();
                    team.Members.Clear();
                    db.DeleteObject(team);
                    db.SaveChanges();
                }
            }
        }
        public void Delete(string name)
        {
            if (name == null) throw new ArgumentException("name");

            using (var db = new DataEntities())
            {
                var repo = db.Repository.FirstOrDefault(i => i.Name == name);
                if (repo != null)
                {
                    repo.Administrators.Clear();
                    repo.Users.Clear();
                    repo.Teams.Clear();
                    db.DeleteObject(repo);
                    db.SaveChanges();
                }
            }
        }
 public override string[] FindUsersInRole(string roleName, string usernameToMatch)
 {
     var result = new HashSet<string>();
     using (var database = new DataEntities())
     {
         var matchingRoles = database.Role.Where(i => i.Name == roleName && i.Users.Where(user => user.Username.Contains(usernameToMatch)).Count() > 0);
         var usernames = matchingRoles.Select(i => i.Users.Select(u => u.Username));
         foreach (var roleUsernames in usernames)
         {
             foreach (var username in roleUsernames)
             {
                 result.Add(username);
             }
         }
     }
     return result.ToArray();
 }
        public override void AddUsersToRoles(string[] usernames, string[] roleNames)
        {
            using (var database = new DataEntities())
            {
                var roles = database.Role.Where(i => roleNames.Contains(i.Name));
                var users = database.User.Where(i => usernames.Contains(i.Username));

                foreach (var role in roles)
                {
                    foreach (var user in users)
                    {
                        role.Users.Add(user);
                    }
                }

                database.SaveChanges();
            }
        }
 public IList<UserModel> GetAllUsers()
 {
     using (var db = new DataEntities())
     {
         var result = new List<UserModel>();
         foreach (var item in db.User)
         {
             result.Add(new UserModel
             {
                 Username = item.Username,
                 Name = item.Name,
                 Surname = item.Surname,
                 Email = item.Email,
                 Roles = item.Roles.Select(i => i.Name).ToArray(),
             });
         }
         return result;
     }
 }
        public IList<TeamModel> GetAllTeams()
        {
            using (var db = new DataEntities())
            {
                var result = new List<TeamModel>();
                foreach (var item in db.Team)
                {
                    result.Add(new TeamModel
                    {
                        Name = item.Name,
                        Description = item.Description,
                        Members = item.Members.Select(i => i.Username).ToArray(),
                        Repositories = item.Repositories.Select(m => m.Name).ToArray(),
                    });
                }

                return result;
            }
        }
Exemple #20
0
        public void Delete(string name)
        {
            if (name == null)
            {
                throw new ArgumentException("name");
            }

            using (var db = new DataEntities())
            {
                var repo = db.Repository.FirstOrDefault(i => i.Name == name);
                if (repo != null)
                {
                    repo.Administrators.Clear();
                    repo.Users.Clear();
                    repo.Teams.Clear();
                    db.DeleteObject(repo);
                    db.SaveChanges();
                }
            }
        }
        public override bool DeleteRole(string roleName, bool throwOnPopulatedRole)
        {
            using (var database = new DataEntities())
            {
                var role = database.Role.FirstOrDefault(i => i.Name == roleName);
                if (role != null)
                {
                    if (throwOnPopulatedRole)
                    {
                        if (role.Users.Count > 0)
                        {
                            throw new InvalidOperationException("Can't delete role with members.");
                        }
                    }

                    database.DeleteObject(role);
                    database.SaveChanges();
                    return true;
                }

                return false;
            }
        }
        private void AddMembers(string[] users, string[] admins, string[] teams, Repository repo, DataEntities database)
        {
            if (admins != null)
            {
                var administrators = database.User.Where(i => admins.Contains(i.Username));
                foreach (var item in administrators)
                {
                    repo.Administrators.Add(item);
                }
            }

            if (users != null)
            {
                var permittedUsers = database.User.Where(i => users.Contains(i.Username));
                foreach (var item in permittedUsers)
                {
                    repo.Users.Add(item);
                }
            }

            if (teams != null)
            {
                var permittedTeams = database.Team.Where(i => teams.Contains(i.Name));
                foreach (var item in permittedTeams)
                {
                    repo.Teams.Add(item);
                }
            }
        }
 private void AddMembers(string[] members, Team team, DataEntities database)
 {
     var users = database.User.Where(i => members.Contains(i.Username));
     foreach (var item in users)
     {
         team.Members.Add(item);
     }
 }
        public void Update(TeamModel model)
        {
            if (model == null) throw new ArgumentException("team");
            if (model.Name == null) throw new ArgumentException("name");

            using (var db = new DataEntities())
            {
                var team = db.Team.FirstOrDefault(i => i.Name == model.Name);
                if (team != null)
                {
                    team.Description = model.Description;
                    team.Members.Clear();
                    if (model.Members != null)
                    {
                        AddMembers(model.Members, team, db);
                    }
                    db.SaveChanges();
                }
            }
        }
        public IList<RepositoryModel> GetPermittedRepositories(string username, string[] teams)
        {
            if (username == null) throw new ArgumentException("username");

            using (var db = new DataEntities())
            {
                return db.Repository.Include("Users")
                    .Include("Administrators")
                    .Include("Teams")
                    .Where(repo => repo.Administrators.Any(admin => admin.Name == username)
                        || repo.Users.Any(user => user.Name == username)
                        || repo.Teams.Any(team => teams.Contains(team.Name))
                        || repo.Anonymous)
                    .Select(this.ConvertToModel)
                    .ToList();
            }
        }
 public override string[] GetAllRoles()
 {
     using (var database = new DataEntities())
     {
         return database.Role.Select(i => i.Name).ToArray();
     }
 }
        public void Update(RepositoryModel model)
        {
            if (model == null) throw new ArgumentException("model");
            if (model.Name == null) throw new ArgumentException("name");

            using (var db = new DataEntities())
            {
                var repo = db.Repository.FirstOrDefault(i => i.Name == model.Name);
                if (repo != null)
                {
                    repo.Description = model.Description;
                    repo.Anonymous = model.AnonymousAccess;

                    repo.Users.Clear();
                    repo.Teams.Clear();
                    repo.Administrators.Clear();

                    AddMembers(model.Users, model.Administrators, model.Teams, repo, db);

                    db.SaveChanges();
                }
            }
        }
        public RepositoryModel GetRepository(string name)
        {
            if (name == null) throw new ArgumentException("name");

            using (var db = new DataEntities())
            {
                return db.Repository.Include("Users")
                    .Include("Administrators")
                    .Include("Teams")
                    .Where(repo => repo.Name == name)
                    .Select(this.ConvertToModel)
                    .FirstOrDefault();
            }
        }
 public void UpdateUser(string username, string name, string surname, string email, string password)
 {
     using (var database = new DataEntities())
     {
         var user = database.User.FirstOrDefault(i => i.Username == username);
         if (user != null)
         {
             user.Name = name ?? user.Name;
             user.Surname = surname ?? user.Surname;
             user.Email = email ?? user.Email;
             user.Password = password != null ? EncryptPassword(password) : user.Password;
             database.SaveChanges();
         }
     }
 }
        public UserModel GetUser(string username)
        {
            if (String.IsNullOrEmpty(username)) throw new ArgumentException("Value cannot be null or empty.", "userName");

            using (var db = new DataEntities())
            {
                var user = db.User.FirstOrDefault(i => i.Username == username);
                return user == null ? null : new UserModel
                {
                    Username = user.Username,
                    Name = user.Name,
                    Surname = user.Surname,
                    Email = user.Email,
                    Roles = user.Roles.Select(i => i.Name).ToArray(),
                 };
            }
        }
Exemple #31
0
        private void AddMembers(string[] users, string[] admins, string[] teams, Repository repo, DataEntities database)
        {
            if (admins != null)
            {
                var administrators = database.User.Where(i => admins.Contains(i.Username));
                foreach (var item in administrators)
                {
                    repo.Administrators.Add(item);
                }
            }

            if (users != null)
            {
                var permittedUsers = database.User.Where(i => users.Contains(i.Username));
                foreach (var item in permittedUsers)
                {
                    repo.Users.Add(item);
                }
            }

            if (teams != null)
            {
                var permittedTeams = database.Team.Where(i => teams.Contains(i.Name));
                foreach (var item in permittedTeams)
                {
                    repo.Teams.Add(item);
                }
            }
        }
        public bool ValidateUser(string username, string password)
        {
            if (String.IsNullOrEmpty(username)) throw new ArgumentException("Value cannot be null or empty.", "userName");
            if (String.IsNullOrEmpty(password)) throw new ArgumentException("Value cannot be null or empty.", "password");

            using (var database = new DataEntities())
            {
                var user = database.User.FirstOrDefault(i => i.Username == username);
                return user != null && ComparePassword(password, user.Password);
            }
        }