Exemple #1
0
        public IManagedPlatform CreateOrUpdate(RemotePlatformInfo pi)
        {
            using (Profiler.Measure("PlatformService.CreateOrUpdate"))
            {
                if (pi == null || string.IsNullOrEmpty(pi.Id))
                {
                    throw new ArgumentException("Platform information was invalid.");
                }

                var entities = new EntityCollection <IEntity>();

                IManagedPlatform mp;

                try
                {
                    mp = GetPlatformByDatabaseId(pi.Id);

                    // load or create the platform instance
                    mp = mp != null?mp.AsWritable <ManagedPlatform>() : Create(pi.Id);

                    if (mp == null)
                    {
                        throw new Exception(string.Format("Failed to create or update info for the platform instance '{0}'.", pi.Id));
                    }

                    mp.LastContact = DateTime.UtcNow;

                    entities.Add(mp);

                    var fe = UpdateFrontEnds(mp, pi.FrontEndHost, pi.FrontEndDomain, entities);
                    mp.FrontEndHistory.Add(fe);

                    var db = UpdateDatabases(mp, pi.Database, pi.DatabaseServer, entities);
                    mp.DatabaseHistory.Add(db);

                    var apps = GetApps().ToList();

                    var appVersions = UpdateAvailableApps(mp, pi.Apps, entities, apps);
                    mp.AvailableAppVersions.AddRange(appVersions);

                    var tenants = UpdateTenants(mp, pi.Tenants, entities, apps);
                    mp.ContainsTenants.AddRange(tenants);
                }
                finally
                {
                    CastEntityHelper.Save(entities);
                }

                return(mp);
            }
        }
Exemple #2
0
        public IManagedUser CreateOrUpdateUser(string databaseId, string tenant, RemoteUserInfo u)
        {
            using (Profiler.Measure("PlatformService.CreateOrUpdateUser"))
            {
                if (u == null)
                {
                    throw new ArgumentException("User information was invalid.");
                }

                var entities = new EntityCollection <IEntity>();

                var mu = default(IManagedUser);

                try
                {
                    var mp = GetPlatformByDatabaseId(databaseId);
                    if (mp != null)
                    {
                        mp = mp.AsWritable <ManagedPlatform>();

                        var mt = mp.ContainsTenants.FirstOrDefault(t => t.Name == tenant);
                        if (mt != null)
                        {
                            mt = mt.AsWritable <ManagedTenant>();

                            entities.Add(mt);

                            mu = UpdateUser(mt, u, entities);

                            entities.Add(mu);
                        }
                    }
                }
                finally
                {
                    CastEntityHelper.Save(entities);
                }

                return(mu);
            }
        }
Exemple #3
0
        public IManagedTenant UpdateInstalledApplications(string databaseId, string tenant, IList <InstalledApplication> apps)
        {
            using (Profiler.Measure("PlatformService.UpdateInstalledApplications"))
            {
                var entities = new EntityCollection <IEntity>();

                var mt = default(IManagedTenant);

                try
                {
                    var mp = GetPlatformByDatabaseId(databaseId);
                    if (mp != null)
                    {
                        mp = mp.AsWritable <ManagedPlatform>();

                        mt = mp.ContainsTenants.FirstOrDefault(t => t.Name == tenant);
                        if (mt != null)
                        {
                            mt = mt.AsWritable <ManagedTenant>();

                            entities.Add(mt);

                            var existingApps = GetApps().ToList();

                            var installed = UpdateInstalledApps(mt, apps, entities, existingApps);

                            mt.HasAppsInstalled.AddRange(installed);
                        }
                    }
                }
                finally
                {
                    CastEntityHelper.Save(entities);
                }

                return(mt);
            }
        }
Exemple #4
0
        public IManagedTenant CreateOrUpdateTenant(string databaseId, RemoteTenantInfo ti)
        {
            using (Profiler.Measure("PlatformService.CreateOrUpdateTenant"))
            {
                if (ti == null)
                {
                    throw new ArgumentException("Tenant information was invalid.");
                }

                var entities = new EntityCollection <IEntity>();

                IManagedTenant mt;

                try
                {
                    var mp = GetPlatformByDatabaseId(databaseId);
                    if (mp != null)
                    {
                        mp = mp.AsWritable <ManagedPlatform>();

                        entities.Add(mp);
                    }

                    var apps = GetApps().ToList();

                    mt = UpdateTenant(mp, ti, entities, apps);

                    entities.Add(mt);
                }
                finally
                {
                    CastEntityHelper.Save(entities);
                }

                return(mt);
            }
        }