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) { Trace.TraceWarning("Failed to create repo {0} - {1}", model.Name, ex); return false; } catch (UpdateException) { return false; } return true; } }
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(); } } }
private static RepositoryModel SanitizeModel(RepositoryModel model) { model.EnsureCollectionsAreValid(); return model; }