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();
                }
            }
        }
Пример #2
0
        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);
 }