public void Update(RepositoryModel model) { if (model == null) { throw new ArgumentException("model"); } if (model.Name == null) { throw new ArgumentException("name"); } using (var db = CreateContext()) { var repo = db.Repositories.FirstOrDefault(i => i.Id == model.Id); if (repo != null) { model.EnsureCollectionsAreValid(); repo.Name = model.Name; repo.Group = model.Group; repo.Description = model.Description; repo.Anonymous = model.AnonymousAccess; repo.AuditPushUser = model.AuditPushUser; repo.AllowAnonymousPush = model.AllowAnonymousPush; repo.LinksRegex = model.LinksRegex; repo.LinksUrl = model.LinksUrl; repo.LinksUseGlobal = model.LinksUseGlobal; if (model.Logo != null) { repo.Logo = model.Logo; } if (model.RemoveLogo) { repo.Logo = null; } repo.Users.Clear(); repo.Teams.Clear(); repo.Administrators.Clear(); AddMembers(model.Users.Select(x => x.Id), model.Administrators.Select(x => x.Id), model.Teams.Select(x => x.Id), repo, db); db.SaveChanges(); } } }
public bool Create(RepositoryModel model) { if (model == null) { throw new ArgumentException("model"); } if (model.Name == null) { throw new ArgumentException("name"); } using (var database = CreateContext()) { model.EnsureCollectionsAreValid(); model.Id = Guid.NewGuid(); var repository = new Repository { Id = model.Id, Name = model.Name, Logo = model.Logo, Group = model.Group, Description = model.Description, Anonymous = model.AnonymousAccess, AllowAnonymousPush = model.AllowAnonymousPush, AuditPushUser = model.AuditPushUser, LinksUseGlobal = model.LinksUseGlobal, LinksUrl = model.LinksUrl, LinksRegex = model.LinksRegex }; database.Repositories.Add(repository); AddMembers(model.Users.Select(x => x.Id), model.Administrators.Select(x => x.Id), model.Teams.Select(x => x.Id), repository, database); try { database.SaveChanges(); } catch (DbUpdateException ex) { Log.Error(ex, "Failed to create repo {RepoName}", model.Name); return(false); } catch (UpdateException) { return(false); } return(true); } }
private static RepositoryModel SanitizeModel(RepositoryModel model) { model.EnsureCollectionsAreValid(); return(model); }