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); } }
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); } }
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); } }
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); } }