private void AddMembers(IEnumerable<string> users, IEnumerable<string> admins, IEnumerable<string> teams, Repository repo, BonoboGitServerContext database) { if (admins != null) { var administrators = database.Users.Where(i => admins.Contains(i.Username)); foreach (var item in administrators) { repo.Administrators.Add(item); } } if (users != null) { var permittedUsers = database.Users.Where(i => users.Contains(i.Username)); foreach (var item in permittedUsers) { repo.Users.Add(item); } } if (teams != null) { var permittedTeams = database.Teams.Where(i => teams.Contains(i.Name)); foreach (var item in permittedTeams) { repo.Teams.Add(item); } } }
public bool Create(RepositoryModel model) { if (model == null) throw new ArgumentException("model"); if (model.Name == null) throw new ArgumentException("name"); using (var database = new BonoboGitServerContext()) { var repository = new Repository { Name = model.Name, Logo = model.Logo, Group = model.Group, Description = model.Description, Anonymous = model.AnonymousAccess, AuditPushUser = model.AuditPushUser, }; database.Repositories.Add(repository); AddMembers(model.Users, model.Administrators, model.Teams, repository, database); try { database.SaveChanges(); } catch (UpdateException) { return false; } } return true; }
private RepositoryModel ConvertToModel(Repository item) { if (item == null) { return null; } return new RepositoryModel { Name = item.Name, Group = item.Group, Description = item.Description, AnonymousAccess = item.Anonymous, Users = item.Users.Select(i => i.Username).ToArray(), Teams = item.Teams.Select(i => i.Name).ToArray(), Administrators = item.Administrators.Select(i => i.Username).ToArray(), AuditPushUser = item.AuditPushUser, Logo = item.Logo }; }