public static Tenant ResolveTenant(string tenantKey) { lock (lockObject) { var currentTenant = new DbTenant().ReadAll().Find(item => (item as DbTenant).Alias.ToLowerInvariant() == tenantKey.ToLowerInvariant()); if (currentTenant != null) { DbTenant record = currentTenant as DbTenant; return(new Tenant() { Id = record.RecordId, Name = record.Name, Status = record.Status.ToString(), DbConnectionString = record.DbConnectionString }); } return(null); } }
public Tenant SaveTenant(CoreSettings coreSettings, Tenant t) { if (t == null) { throw new ArgumentNullException("tenant"); } using var tx = TenantDbContext.Database.BeginTransaction(); if (!string.IsNullOrEmpty(t.MappedDomain)) { var baseUrl = coreSettings.GetBaseDomain(t.HostedRegion); if (baseUrl != null && t.MappedDomain.EndsWith("." + baseUrl, StringComparison.InvariantCultureIgnoreCase)) { ValidateDomain(t.MappedDomain.Substring(0, t.MappedDomain.Length - baseUrl.Length - 1), t.TenantId, false); } else { ValidateDomain(t.MappedDomain, t.TenantId, false); } } if (t.TenantId == Tenant.DEFAULT_TENANT) { t.Version = TenantDbContext.TenantVersion .Where(r => r.DefaultVersion == 1 || r.Id == 0) .OrderByDescending(r => r.Id) .Select(r => r.Id) .FirstOrDefault(); var tenant = new DbTenant { Id = t.TenantId, Alias = t.TenantAlias.ToLowerInvariant(), MappedDomain = !string.IsNullOrEmpty(t.MappedDomain) ? t.MappedDomain.ToLowerInvariant() : null, Version = t.Version, VersionChanged = t.VersionChanged, Name = t.Name ?? t.TenantAlias, Language = t.Language, TimeZone = t.TimeZone, OwnerId = t.OwnerId, TrustedDomains = t.GetTrustedDomains(), TrustedDomainsEnabled = t.TrustedDomainsType, CreationDateTime = t.CreatedDateTime, Status = t.Status, StatusChanged = t.StatusChangeDate, PaymentId = t.PaymentId, LastModified = t.LastModified = DateTime.UtcNow, Industry = t.Industry, Spam = t.Spam, Calls = t.Calls }; tenant = TenantDbContext.Tenants.Add(tenant).Entity; TenantDbContext.SaveChanges(); t.TenantId = tenant.Id; } else { var tenant = TenantDbContext.Tenants .Where(r => r.Id == t.TenantId) .FirstOrDefault(); if (tenant != null) { tenant.Alias = t.TenantAlias.ToLowerInvariant(); tenant.MappedDomain = !string.IsNullOrEmpty(t.MappedDomain) ? t.MappedDomain.ToLowerInvariant() : null; tenant.Version = t.Version; tenant.VersionChanged = t.VersionChanged; tenant.Name = t.Name ?? t.TenantAlias; tenant.Language = t.Language; tenant.TimeZone = t.TimeZone; tenant.TrustedDomains = t.GetTrustedDomains(); tenant.TrustedDomainsEnabled = t.TrustedDomainsType; tenant.CreationDateTime = t.CreatedDateTime; tenant.Status = t.Status; tenant.StatusChanged = t.StatusChangeDate; tenant.PaymentId = t.PaymentId; tenant.LastModified = t.LastModified = DateTime.UtcNow; tenant.Industry = t.Industry; tenant.Spam = t.Spam; tenant.Calls = t.Calls; } TenantDbContext.SaveChanges(); } if (string.IsNullOrEmpty(t.PartnerId) && string.IsNullOrEmpty(t.AffiliateId) && string.IsNullOrEmpty(t.Campaign)) { var p = TenantDbContext.TenantPartner .Where(r => r.TenantId == t.TenantId) .FirstOrDefault(); if (p != null) { TenantDbContext.TenantPartner.Remove(p); } } else { var tenantPartner = new DbTenantPartner { TenantId = t.TenantId, PartnerId = t.PartnerId, AffiliateId = t.AffiliateId, Campaign = t.Campaign }; TenantDbContext.TenantPartner.Add(tenantPartner); } tx.Commit(); //CalculateTenantDomain(t); return(t); }