public RepositoryUser AddContributorToRepository(Guid repoId, string username, RepositoryUserTypes userTypes) { if (userTypes == RepositoryUserTypes.None) { userTypes = RepositoryUserTypes.User; } if (string.IsNullOrEmpty(username)) { SetError("Invalid username"); return(null); } var userId = Context.Users .Where(u => u.UserDisplayName == username) .Select(u => u.Id) .FirstOrDefault(); if (userId == Guid.Empty) { SetError("Invalid username"); return(null); } return(AddContributorToRepository(repoId, userId, userTypes)); }
public RepositoryUser AddContributorToRepository(Guid repoId, Guid userId, RepositoryUserTypes userTypes) { var repo = Context.Repositories.FirstOrDefault(u => u.Id == repoId); if (repo == null) { SetError("Respositor to add user to doesn't exist."); return(null); } var user = Context.Users.FirstOrDefault(u => u.Id == userId); if (user == null) { SetError("User to add to repository doesn't exist."); return(null); } var map = Context.UserRepositories .Include(ur => ur.User) .FirstOrDefault(c => c.RepositoryId == repoId && c.UserId == userId); if (map != null) { SetError("User is already a contributor or owner of this repository"); return(null); ; // already an owner or contributor } map = new RepositoryUser() { RepositoryId = repo.Id, UserId = user.Id, UserType = userTypes }; repo.Users.Add(map); //// already a contributor //if (Context.RepositoryUser.Any(c => c.RepositoryId == repoId && c.UserId == userId)) // return true; //// User is the owner //if (Context.UserRepositories.Any(c => c.RepositoryId == repoId && c.UserId == userId)) // return true; //var map = new RepositoryContributor() //{ // RepositoryId = repo.Id, // UserId = user.Id //}; //repo.Contributors.Add(map); if (!Save()) { return(null); } map.User = user; map.Repository = repo; return(Context.UserRepositories.Include(ur => ur.User).FirstOrDefault(ur => ur.Id == map.Id)); }