public Version(Project project, string name)
 {
     Company = project.Company;
     Repository = project.Repository;
     Project = project.Name;
     Name = name;    
 }
 public void CreateProject(Project project)
 {
     throw new NotImplementedException();
 }
 public void SetProjectPermissions(User targetUser, Project project, Permission permission)
 {
     throw new NotImplementedException();
 }
 public Version[] GetVersions(ref Project project)
 {
     throw new NotImplementedException();
 }
        private void SynchronizePermissions(Caller caller, string company, PackageProject packageProject)
        {
            var permission = GetProjectPermission(caller, company, packageProject);

            if (permission.HasValue)
            {
                var configuration = configurationFactory.Create(company);

                if (string.IsNullOrEmpty(configuration.GatewayLogin) || string.IsNullOrEmpty(configuration.GatewayPassword))
                    throw new Exception("Missing gateway configuration");

                using (var session = backendFactory.Create(new Caller { Company = company, Name = configuration.GatewayLogin, KeyType = "API", KeyValue = configuration.GatewayPassword }))
                {
                    var project = new Project { Company = company, Repository = packageProject.Repository, Name = packageProject.Name };

                    if (permission.Value)
                    {
                        try
                        {
                            session.CreateProject(project);
                        }
                        catch (Exception)
                        {
                            //ignore if exists
                        }
                    }

                    try
                    {
                        session.SetProjectPermissions(new User { Company = caller.Company, Name = caller.Name }, project, new Permission { Grant = false, Read = false, Write = permission.Value });
                    }
                    catch (Exception)
                    {
                        //ignore if not exists
                    }

                    if (!permission.Value)
                        throw new Exception("External permission source denied publish access");
                }
            }
        }
 public ProjectPermission[] GetProjectPermissions(Project project)
 {
     return service.GetProjectPermissions(caller, project);
 }
 public void SetProjectPermissions(User targetUser, Project project, Permission permission)
 {
     service.SetProjectPermissions(caller, targetUser, project, permission);
 }
 public virtual Version[] GetVersions(ref Project project)
 {
     return service.GetVersions(caller, ref project);
 }
 public void DeleteProject(Project project)
 {
     service.DeleteProject(caller, project);
 }
 public void UpdateProject(Project project)
 {
     service.UpdateProject(caller, ref project);
 }
 public void CreateProject(Project project)
 {
     service.CreateProject(caller, ref project);
 }
 public virtual void CreateOrUpdateProject(Project project)
 {
     service.CreateOrUpdateProject(caller, ref project);
 }